<?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>106733</bug_id>
          
          <creation_ts>2013-01-12 18:50:23 -0800</creation_ts>
          <short_desc>CachedImage&apos;s container size may not survive cached reloads</short_desc>
          <delta_ts>2013-01-24 14:29:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>420+</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="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>ap</cc>
    
    <cc>japhet</cc>
    
    <cc>junov</cc>
    
    <cc>koivisto</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>thorton</cc>
    
    <cc>tomhudson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>805920</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-12 18:50:23 -0800</bug_when>
    <thetext>CachedImage relies on a call to setContainerSizeForRenderer(...) to set the image&apos;s container size. During a cached reload we have two CachedImages (one is used for cache revalidation) and we throw one of these away if the cache revalidation succeeds. Unfortunately, setContainerSizeForRenderer may have been called on the CachedImage that we threw away, and we will lose the container size information.

Here&apos;s an example of the sequence of events:

CachedImage ctor (imageA)
CachedImage(imageA) did add client: (rendererA)
CachedImage(imageA) setContainerSizeForRenderer (rendererA)
CachedImage(imageA) lookupOrCreateImageForRenderer (rendererA)
[ page reload occurs here ]
CachedImage(imageA) did remove client: (rendererA)
CachedImage ctor (imageB)
CachedImage(imageB) did add client: (rendererB)
CachedImage(imageB) setContainerSizeForRenderer (rendererB)
CachedImage(imageB) did remove client: (rendererB)
CachedImage(imageA) did add client: (rendererB)
CachedImage dtor (imageB)
CachedImage(imageA) lookupOrCreateImageForRenderer (rendererB) &lt;&lt; fails to use the correct container size


A sample repro case is available at http://philbit.com/reloadtest.html. Reload several times and notice that the image size can render incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805921</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-12 18:52:25 -0800</bug_when>
    <thetext>Aha! I&apos;m pretty sure I&apos;ve seen something that could be explained by this when reloading some of our layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808052</commentid>
    <comment_count>2</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-15 22:25:48 -0800</bug_when>
    <thetext>Today I experimented with not storing the container size in CachedImage, but instead relying on passing the container size into all of CachedImage&apos;s functions. This ends up being incredibly brittle: not all accessors of imageForRenderer or imageSizeForRenderer know the container size and getting this container size wrong (or rounded) in any of the ~30 callsites means a subtle cache miss.

Nikolas attempted to fix this by re-requesting images in https://bugs.webkit.org/attachment.cgi?id=105604 but that approach failed as well.

The two remaining ideas I have are:
1) Instead of blindly swapping the revalidated CachedImage with the cached CachedImage in CachedResource::switchClientsToRevalidatedResource, we could special-case ImageResources and properly transfer over the container size request information.

2) Calling setContainerSizeForRenderer before drawing easily fixes the issue, but that&apos;s hacky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812180</commentid>
    <comment_count>3</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2013-01-21 08:20:28 -0800</bug_when>
    <thetext>#2, can you explain why option 2 is hacky? Or why we don&apos;t just make sure that when we throw away a CachedImage during cached reload, we first setContainerSizeForRenderer on the other copy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812529</commentid>
    <comment_count>4</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-21 19:11:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; #2, can you explain why option 2 is hacky? Or why we don&apos;t just make sure that when we throw away a CachedImage during cached reload, we first setContainerSizeForRenderer on the other copy?

#2 is hacky because in calling setContainerSizeForRenderer before drawing, we are admitting that the original call to setContainerSizeForRenderer cannot be trusted. Throughout the code (and these calls are all over! e.g., RenderListMarker and StyleCachedImageSet) we use setContainerSizeForRenderer and all of those callsites can potentially have the same bug.

I&apos;ll have a patch up shortly based on #1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812530</commentid>
    <comment_count>5</comment_count>
      <attachid>183869</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-21 19:11:45 -0800</bug_when>
    <thetext>Created attachment 183869
Preserve container size requests across image loads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815645</commentid>
    <comment_count>6</comment_count>
      <attachid>183869</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-24 11:17:41 -0800</bug_when>
    <thetext>Comment on attachment 183869
Preserve container size requests across image loads

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

Seems pretty reasonable. A few comments:

&gt; Source/WebCore/loader/cache/CachedImage.cpp:121
&gt; +    if (!m_pendingContainerSizeRequests.isEmpty() &amp;&amp; resourceToRevalidate()-&gt;isImage()) {

Is it possible for resourceToRevalidate()-&gt;isImage() to be false?

&gt; Source/WebCore/loader/cache/CachedImage.cpp:123
&gt; +        ContainerSizeRequests m_switchContainerSizeRequests;

Why does this local have an m_?

&gt; Source/WebCore/loader/cache/CachedImage.h:112
&gt; +    virtual void switchClientsToRevalidatedResource();

OVERRIDE, please.

&gt; LayoutTests/http/tests/svg/resources/delayCachedLoad.php:4
&gt; +  // Delay load by 0.07s. This was found to be the lowest value
&gt; +  // required for webkit.org/b/106733
&gt; +  usleep(70000);

:\

Is this machine dependent or anything (or, how is it not)? I&apos;m always sad when I see things like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815692</commentid>
    <comment_count>7</comment_count>
      <attachid>184547</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-24 11:56:59 -0800</bug_when>
    <thetext>Created attachment 184547
Updated patch per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815697</commentid>
    <comment_count>8</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-24 12:00:14 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #6)
&gt; (From update of attachment 183869 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183869&amp;action=review
&gt; 
&gt; Seems pretty reasonable. A few comments:
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:121
&gt; &gt; +    if (!m_pendingContainerSizeRequests.isEmpty() &amp;&amp; resourceToRevalidate()-&gt;isImage()) {
&gt; 
&gt; Is it possible for resourceToRevalidate()-&gt;isImage() to be false?

I don&apos;t think so. I&apos;ve converted this to an ASSERT.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:123
&gt; &gt; +        ContainerSizeRequests m_switchContainerSizeRequests;
&gt; 
&gt; Why does this local have an m_?

Fixed.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.h:112
&gt; &gt; +    virtual void switchClientsToRevalidatedResource();
&gt; 
&gt; OVERRIDE, please.

Fixed.

&gt; 
&gt; &gt; LayoutTests/http/tests/svg/resources/delayCachedLoad.php:4
&gt; &gt; +  // Delay load by 0.07s. This was found to be the lowest value
&gt; &gt; +  // required for webkit.org/b/106733
&gt; &gt; +  usleep(70000);
&gt; 
&gt; :\
&gt; 
&gt; Is this machine dependent or anything (or, how is it not)? I&apos;m always sad when I see things like this.

I&apos;m not a fan either. I&apos;ll keep an eye on how the bots handle this, and I&apos;ll increase the time if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815831</commentid>
    <comment_count>9</comment_count>
      <attachid>184547</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 14:29:13 -0800</bug_when>
    <thetext>Comment on attachment 184547
Updated patch per reviewer comments

Clearing flags on attachment: 184547

Committed r140722: &lt;http://trac.webkit.org/changeset/140722&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815832</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 14:29:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183869</attachid>
            <date>2013-01-21 19:11:45 -0800</date>
            <delta_ts>2013-01-24 11:56:59 -0800</delta_ts>
            <desc>Preserve container size requests across image loads</desc>
            <filename>106733.1.patch</filename>
            <type>text/plain</type>
            <size>8367</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDM3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAxLTIxICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29udGFpbmVyIHNp
emUgcmVxdWVzdHMgYWNyb3NzIGltYWdlIGxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGltYWdlcywgc3VjaCBhcyBTVkcgd2l0aCByZWxh
dGl2ZSBkaW1lbnNpb25zLCBkZXBlbmQgb24gdGhlIHJlbmRlcmVyJ3MgY29udGFpbmVyIHNpemUu
CisgICAgICAgIHIxMzc5ODEgaW50cm9kdWNlZCB0aGUgYWJpbGl0eSB0byBzdG9yZSBwZW5kaW5n
IGNvbnRhaW5lciBzaXplIHJlcXVlc3RzIHRoYXQgYXJlIG1hZGUKKyAgICAgICAgYWZ0ZXIgdGhl
IGltYWdlIGVsZW1lbnQgbGF5cyBvdXQgYnV0IGJlZm9yZSB0aGUgaW1hZ2UgbG9hZHMuIEJlZm9y
ZSB0aGlzIHBhdGNoLCBjYWNoZWQKKyAgICAgICAgaW1hZ2VzIGNvdWxkIGRpc2NhcmQgdGhlc2Ug
cGVuZGluZyBjb250YWluZXIgc2l6ZSByZXF1ZXN0cyBkdXJpbmcgY2FjaGUgcmV2YWxpZGF0aW9u
LgorCisgICAgICAgIER1cmluZyBhIGNhY2hlZCBpbWFnZSBsb2FkLCB0d28gQ2FjaGVkSW1hZ2Vz
IGV4aXN0OiB0aGUgaW1hZ2UgaW4gY2FjaGUgYW5kIGEgbmV3IENhY2hlZEltYWdlCisgICAgICAg
IHRoYXQgd2lsbCBiZSB1c2VkIGlmIHRoZSBjYWNoZSBpcyBzdGFsZS4gUGVuZGluZyBjb250YWlu
ZXIgc2l6ZSByZXF1ZXN0cyBhcmUgc3RvcmVkCisgICAgICAgIG9uIHRoZSBzZWNvbmQgY2FjaGVk
IGltYWdlIHdoaWNoIGlzIGRpc2NhcmRlZCBpZiBhIDMwNCBub3QgbW9kaWZpZWQgcmVzcG9uc2Ug
aXMgcmVjZWl2ZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgc3dpdGNoQ2xp
ZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSBsb2dpYyB0byBtYWludGFpbiBwZW5kaW5nCisgICAg
ICAgIGNvbnRhaW5lciBzaXplIHJlcXVlc3RzLiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGNhY2hl
ZCBTVkcgaW1hZ2VzIHdvdWxkIGJlIHNpemVkCisgICAgICAgIGluY29ycmVjdGx5LgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvdGVzdHMvc3ZnL2NhY2hlZC1pbWFnZS1zaXppbmcuaHRtbAorCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKToKKworICAgICAg
ICAgICAgSW4gdGhpcyB2aXJ0dWFsIGNhbGwgd2Ugc3BlY2lhbC1jYXNlIGltYWdlcyB3aXRoIHBl
bmRpbmcgc2l6ZSByZXF1ZXN0cyBhbmQKKyAgICAgICAgICAgIHRyYW5zZmVyIHRoZXNlIHJlcXVl
c3RzIHRvIHRoZSByZXZhbGlkYXRpbmcgcmVzb3VyY2UuIE5vdGUgdGhhdCBhbGwgY29udGFpbmVy
IHNpemUKKyAgICAgICAgICAgIHJlcXVlc3RzIHJlY2VpdmVkIGJlZm9yZSByZXZhbGlkYXRpb24g
d2lsbCBiZSBwZW5kaW5nIGJlY2F1c2UgdGhlIGltYWdlIGhhcyBub3QgbG9hZGVkLgorICAgICAg
ICAgICAgVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIGRpc2NhcmRpbmcgbm9uLXBlbmRp
bmcgY29udGFpbmVyIHNpemUgcmVxdWVzdHMuCisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoQ2FjaGVkSW1hZ2UpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVk
UmVzb3VyY2UpOgorCiAyMDEzLTAxLTIxICBEaXJrIFNjaHVsemUgIDxkc2NodWx6ZUBhZG9iZS5j
b20+CiAKICAgICAgICAgQWRkIGJ1aWxkIGZsYWcgZm9yIENhbnZhcydzIFBhdGggb2JqZWN0IChk
aXNhYmxlZCBieSBkZWZhdWx0KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDAyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDI1
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudChDYWNoZWQKICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpzd2l0
Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CisgICAgLy8gUGVuZGluZyBjb250YWluZXIgc2l6ZSByZXF1ZXN0cyBu
ZWVkIHRvIGJlIHRyYW5zZmVycmVkIHRvIHRoZSByZXZhbGlkYXRlZCByZXNvdXJjZS4KKyAgICBp
ZiAoIW1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVzb3VyY2VU
b1JldmFsaWRhdGUoKS0+aXNJbWFnZSgpKSB7CisgICAgICAgIC8vIEEgY29weSBvZiBwZW5kaW5n
IHNpemUgcmVxdWVzdHMgaXMgbmVlZGVkIGFzIHRoZXkgYXJlIGRlbGV0ZWQgZHVyaW5nIENhY2hl
ZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlUmVzb3VjZSgpLgorICAgICAgICBD
b250YWluZXJTaXplUmVxdWVzdHMgbV9zd2l0Y2hDb250YWluZXJTaXplUmVxdWVzdHM7CisgICAg
ICAgIGZvciAoQ29udGFpbmVyU2l6ZVJlcXVlc3RzOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0Nv
bnRhaW5lclNpemVSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBtX3BlbmRpbmdDb250YWluZXJTaXpl
UmVxdWVzdHMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBtX3N3aXRjaENvbnRhaW5lclNpemVS
ZXF1ZXN0cy5zZXQoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6
OnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKKyAgICAgICAgQ2FjaGVkSW1h
Z2UqIHJldmFsaWRhdGVkQ2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJl
c291cmNlVG9SZXZhbGlkYXRlKCkpOworICAgICAgICBmb3IgKENvbnRhaW5lclNpemVSZXF1ZXN0
czo6aXRlcmF0b3IgaXQgPSBtX3N3aXRjaENvbnRhaW5lclNpemVSZXF1ZXN0cy5iZWdpbigpOyBp
dCAhPSBtX3N3aXRjaENvbnRhaW5lclNpemVSZXF1ZXN0cy5lbmQoKTsgKytpdCkKKyAgICAgICAg
ICAgIHJldmFsaWRhdGVkQ2FjaGVkSW1hZ2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihp
dC0+a2V5LCBpdC0+dmFsdWUuZmlyc3QsIGl0LT52YWx1ZS5zZWNvbmQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQ2FjaGVkUmVzb3VyY2U6OnN3aXRjaENsaWVudHNUb1JldmFsaWRh
dGVkUmVzb3VyY2UoKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQo
KQogewogICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5jbGVhcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDE0MDIw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDksNiArMTA5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFB1cmdlUHJp
b3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIFB1cmdlRmlyc3Q7IH0KICAgICB2
b2lkIGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwogCisgICAgdmlydHVhbCB2b2lkIHN3
aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKKwogICAgIHR5cGVkZWYgcGFpcjxJ
bnRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENh
Y2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFuZFpvb20+IENvbnRhaW5lclNpemVSZXF1ZXN0czsKICAg
ICBDb250YWluZXJTaXplUmVxdWVzdHMgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVlc3RzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJl
dmlzaW9uIDE0MDIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGljOgogICAgIAog
ICAgIC8vIEhUVFAgcmV2YWxpZGF0aW9uIHN1cHBvcnQgbWV0aG9kcyBmb3IgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuCiAgICAgdm9pZCBzZXRSZXNvdXJjZVRvUmV2YWxpZGF0ZShDYWNoZWRSZXNvdXJj
ZSopOwotICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpOworICAg
IHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCk7CiAgICAg
dm9pZCBjbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNwb25z
ZUFmdGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDAzNzkpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0yMSAgUGhp
bGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFByZXNlcnZlIGNvbnRhaW5l
ciBzaXplIHJlcXVlc3RzIGFjcm9zcyBpbWFnZSBsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Ut
c2l6aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3ZnL2Nh
Y2hlZC1pbWFnZS1zaXppbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdmcv
cmVzb3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc3ZnL3Jlc291cmNlcy9ncmVlblNxdWFyZS5zdmc6IEFkZGVkLgorCiAyMDEzLTAxLTIxICBO
b2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1d
IFVwZGF0ZSB3ZWJhdWRpby9yZWFsdGltZWFuYWx5c2VyLWZmdC1zaXppbmcuaHRtbCBleHBlY3Rh
dGlvbiBvbiBXaW4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3ZnL2NhY2hlZC1pbWFn
ZS1zaXppbmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6aW5nLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6aW5nLWV4cGVjdGVk
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxib2R5PgorVGVzdCBmb3Igd2Via2l0Lm9yZy9iLzEwNjczMzogVGhpcyB0ZXN0IHBhc3Nl
cyBpZiB0aGVyZSBpcyBhIGdyZWVuIHNxdWFyZSAobm90IHJlY3RhbmdsZSkgYmVsb3c6PGJyLz4K
KzxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JlZW5TcXVhcmUuc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9
IjIwMCI+Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3ZnL2NhY2hlZC1pbWFnZS1zaXppbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6aW5nLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6aW5nLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8Ym9keT4KK1Rlc3QgZm9yIHdlYmtpdC5vcmcvYi8xMDY3MzM6IFRoaXMgdGVzdCBwYXNzZXMg
aWYgdGhlcmUgaXMgYSBncmVlbiBzcXVhcmUgKG5vdCByZWN0YW5nbGUpIGJlbG93Ojxici8+Cis8
aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3N2Zy9yZXNvdXJjZXMvZGVsYXlDYWNoZWRM
b2FkLnBocCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorPHNjcmlwdD4KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKXsKKyAgICBpZiAobG9jYXRpb24uaGFzaCA9PSAiIikgeworICAg
ICAgICBsb2NhdGlvbi5oYXNoID0gIiNyZWxvYWRpbmciOworICAgICAgICBsb2NhdGlvbi5yZWxv
YWQodHJ1ZSk7CisgICAgfSBlbHNlIGlmIChsb2NhdGlvbi5oYXNoID09ICIjcmVsb2FkaW5nIikg
eworICAgICAgICBsb2NhdGlvbi5oYXNoID0gIiNmaW5pc2hlZCI7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdmcvcmVzb3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcvcmVzb3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHAJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9yZXNvdXJjZXMvZGVs
YXlDYWNoZWRMb2FkLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACis8P3BocAorICAv
LyBEZWxheSBsb2FkIGJ5IDAuMDdzLiBUaGlzIHdhcyBmb3VuZCB0byBiZSB0aGUgbG93ZXN0IHZh
bHVlCisgIC8vIHJlcXVpcmVkIGZvciB3ZWJraXQub3JnL2IvMTA2NzMzCisgIHVzbGVlcCg3MDAw
MCk7CisgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZScp
OworICBoZWFkZXIoJ0xvY2F0aW9uOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc3ZnL3Jlc291cmNl
cy9ncmVlblNxdWFyZS5zdmcnKTsKKz8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2
Zy9yZXNvdXJjZXMvZ3JlZW5TcXVhcmUuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3ZnL3Jlc291cmNlcy9ncmVlblNxdWFyZS5zdmcJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9yZXNvdXJjZXMvZ3JlZW5TcXVhcmUuc3ZnCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVU
Ri04Ij8+Cis8IS0tIFRoZSByZWN0YW5ndWxhciB2aWV3Qm94IGNhdXNlcyB0aGUgZ3JlZW4gcmVj
dCB0byByZW5kZXIgYXMgYSAxMDB4MTAwIHNxdWFyZS4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAyMDAiPgorICA8cmVjdCB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+Cis8L3N2Zz4K
</data>
<flag name="review"
          id="202409"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184547</attachid>
            <date>2013-01-24 11:56:59 -0800</date>
            <delta_ts>2013-01-24 14:29:13 -0800</delta_ts>
            <desc>Updated patch per reviewer comments</desc>
            <filename>106733.3.patch</filename>
            <type>text/plain</type>
            <size>8338</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDcwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAxLTI0ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUHJlc2VydmUgY29udGFpbmVyIHNp
emUgcmVxdWVzdHMgYWNyb3NzIGltYWdlIGxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIFNvbWUgaW1hZ2VzLCBzdWNoIGFzIFNWRyB3aXRoIHJlbGF0aXZl
IGRpbWVuc2lvbnMsIGRlcGVuZCBvbiB0aGUgcmVuZGVyZXIncyBjb250YWluZXIgc2l6ZS4KKyAg
ICAgICAgcjEzNzk4MSBpbnRyb2R1Y2VkIHRoZSBhYmlsaXR5IHRvIHN0b3JlIHBlbmRpbmcgY29u
dGFpbmVyIHNpemUgcmVxdWVzdHMgdGhhdCBhcmUgbWFkZQorICAgICAgICBhZnRlciB0aGUgaW1h
Z2UgZWxlbWVudCBsYXlzIG91dCBidXQgYmVmb3JlIHRoZSBpbWFnZSBsb2Fkcy4gQmVmb3JlIHRo
aXMgcGF0Y2gsIGNhY2hlZAorICAgICAgICBpbWFnZXMgY291bGQgZGlzY2FyZCB0aGVzZSBwZW5k
aW5nIGNvbnRhaW5lciBzaXplIHJlcXVlc3RzIGR1cmluZyBjYWNoZSByZXZhbGlkYXRpb24uCisK
KyAgICAgICAgRHVyaW5nIGEgY2FjaGVkIGltYWdlIGxvYWQsIHR3byBDYWNoZWRJbWFnZXMgZXhp
c3Q6IHRoZSBpbWFnZSBpbiBjYWNoZSBhbmQgYSBuZXcgQ2FjaGVkSW1hZ2UKKyAgICAgICAgdGhh
dCB3aWxsIGJlIHVzZWQgaWYgdGhlIGNhY2hlIGlzIHN0YWxlLiBQZW5kaW5nIGNvbnRhaW5lciBz
aXplIHJlcXVlc3RzIGFyZSBzdG9yZWQKKyAgICAgICAgb24gdGhlIHNlY29uZCBjYWNoZWQgaW1h
Z2Ugd2hpY2ggaXMgZGlzY2FyZGVkIGlmIGEgMzA0IG5vdCBtb2RpZmllZCByZXNwb25zZSBpcyBy
ZWNlaXZlZC4KKworICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBzd2l0Y2hDbGllbnRz
VG9SZXZhbGlkYXRlZFJlc291cmNlIGxvZ2ljIHRvIG1haW50YWluIHBlbmRpbmcKKyAgICAgICAg
Y29udGFpbmVyIHNpemUgcmVxdWVzdHMuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgY2FjaGVkIFNW
RyBpbWFnZXMgd291bGQgYmUgc2l6ZWQKKyAgICAgICAgaW5jb3JyZWN0bHkuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9zdmcvY2FjaGVkLWltYWdlLXNpemluZy5odG1sCisKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpOgorCisgICAgICAgICAg
ICBJbiB0aGlzIHZpcnR1YWwgY2FsbCB3ZSBzcGVjaWFsLWNhc2UgaW1hZ2VzIHdpdGggcGVuZGlu
ZyBzaXplIHJlcXVlc3RzIGFuZAorICAgICAgICAgICAgdHJhbnNmZXIgdGhlc2UgcmVxdWVzdHMg
dG8gdGhlIHJldmFsaWRhdGluZyByZXNvdXJjZS4gTm90ZSB0aGF0IGFsbCBjb250YWluZXIgc2l6
ZQorICAgICAgICAgICAgcmVxdWVzdHMgcmVjZWl2ZWQgYmVmb3JlIHJldmFsaWRhdGlvbiB3aWxs
IGJlIHBlbmRpbmcgYmVjYXVzZSB0aGUgaW1hZ2UgaGFzIG5vdCBsb2FkZWQuCisgICAgICAgICAg
ICBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgZGlzY2FyZGluZyBub24tcGVuZGluZyBj
b250YWluZXIgc2l6ZSByZXF1ZXN0cy4KKworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChDYWNoZWRSZXNv
dXJjZSk6CisKIDIwMTMtMDEtMjQgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgog
CiAgICAgICAgIFtDU1MgRmlsdGVyc10gQ1NTIG9wYWNpdHkgcHJvcGVydHkgY2xpcHMgZmlsdGVy
IG91dHNldHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwyNiBAQCB2b2lkIENh
Y2hlZEltYWdlOjpkaWRSZW1vdmVDbGllbnQoQ2FjaGVkCiAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZFJlbW92ZUNsaWVudChjKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6c3dpdGNoQ2xpZW50c1Rv
UmV2YWxpZGF0ZWRSZXNvdXJjZSgpCit7CisgICAgQVNTRVJUKHJlc291cmNlVG9SZXZhbGlkYXRl
KCkpOworICAgIEFTU0VSVChyZXNvdXJjZVRvUmV2YWxpZGF0ZSgpLT5pc0ltYWdlKCkpOworICAg
IC8vIFBlbmRpbmcgY29udGFpbmVyIHNpemUgcmVxdWVzdHMgbmVlZCB0byBiZSB0cmFuc2ZlcnJl
ZCB0byB0aGUgcmV2YWxpZGF0ZWQgcmVzb3VyY2UuCisgICAgaWYgKCFtX3BlbmRpbmdDb250YWlu
ZXJTaXplUmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEEgY29weSBvZiBwZW5kaW5n
IHNpemUgcmVxdWVzdHMgaXMgbmVlZGVkIGFzIHRoZXkgYXJlIGRlbGV0ZWQgZHVyaW5nIENhY2hl
ZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlUmVzb3VjZSgpLgorICAgICAgICBD
b250YWluZXJTaXplUmVxdWVzdHMgc3dpdGNoQ29udGFpbmVyU2l6ZVJlcXVlc3RzOworICAgICAg
ICBmb3IgKENvbnRhaW5lclNpemVSZXF1ZXN0czo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdDb250
YWluZXJTaXplUmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJl
cXVlc3RzLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgc3dpdGNoQ29udGFpbmVyU2l6ZVJlcXVl
c3RzLnNldChpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6c3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpOworICAgICAgICBDYWNoZWRJbWFnZSog
cmV2YWxpZGF0ZWRDYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVzb3Vy
Y2VUb1JldmFsaWRhdGUoKSk7CisgICAgICAgIGZvciAoQ29udGFpbmVyU2l6ZVJlcXVlc3RzOjpp
dGVyYXRvciBpdCA9IHN3aXRjaENvbnRhaW5lclNpemVSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBz
d2l0Y2hDb250YWluZXJTaXplUmVxdWVzdHMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICByZXZh
bGlkYXRlZENhY2hlZEltYWdlLT5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoaXQtPmtleSwg
aXQtPnZhbHVlLmZpcnN0LCBpdC0+dmFsdWUuc2Vjb25kKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENhY2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291
cmNlKCk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAg
ICBtX3BlbmRpbmdDb250YWluZXJTaXplUmVxdWVzdHMuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAxNDA3MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDYgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1
cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBQdXJnZUZpcnN0OyB9CiAgICAgdm9pZCBjaGVj
a1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGll
bnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgT1ZFUlJJREU7CisKICAgICB0eXBlZGVmIHBhaXI8
SW50U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBD
YWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRab29tPiBDb250YWluZXJTaXplUmVxdWVzdHM7CiAg
ICAgQ29udGFpbmVyU2l6ZVJlcXVlc3RzIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0czsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShy
ZXZpc2lvbiAxNDA3MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICAvLyBIVFRQIHJldmFsaWRhdGlvbiBzdXBwb3J0IG1ldGhvZHMgZm9yIENhY2hlZFJlc291
cmNlTG9hZGVyLgogICAgIHZvaWQgc2V0UmVzb3VyY2VUb1JldmFsaWRhdGUoQ2FjaGVkUmVzb3Vy
Y2UqKTsKLSAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpOwogICAg
IHZvaWQgY2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzcG9u
c2VBZnRlclJldmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVz
cG9uc2UpOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwNzAyKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEtMjQgIFBo
aWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBQcmVzZXJ2ZSBjb250YWlu
ZXIgc2l6ZSByZXF1ZXN0cyBhY3Jvc3MgaW1hZ2UgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjczMworCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6
aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3ZnL2NhY2hl
ZC1pbWFnZS1zaXppbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdmcvcmVz
b3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3ZnL3Jlc291cmNlcy9ncmVlblNxdWFyZS5zdmc6IEFkZGVkLgorCiAyMDEzLTAxLTI0ICBNYXgg
VnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEZpbHRlcnNdIENT
UyBvcGFjaXR5IHByb3BlcnR5IGNsaXBzIGZpbHRlciBvdXRzZXRzCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6aW5nLWV4cGVjdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcvY2FjaGVkLWltYWdlLXNpemluZy1l
eHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcv
Y2FjaGVkLWltYWdlLXNpemluZy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KK1Rlc3QgZm9yIHdlYmtpdC5v
cmcvYi8xMDY3MzM6IFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgYSBncmVlbiBzcXVhcmUg
KG5vdCByZWN0YW5nbGUpIGJlbG93Ojxici8+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2dyZWVuU3F1
YXJlLnN2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcvY2FjaGVk
LWltYWdlLXNpemluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdmcvY2FjaGVkLWltYWdlLXNpemluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIz
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+CitUZXN0IGZvciB3ZWJraXQub3Jn
L2IvMTA2NzMzOiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIGEgZ3JlZW4gc3F1YXJlIChu
b3QgcmVjdGFuZ2xlKSBiZWxvdzo8YnIvPgorPGltZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zdmcvcmVzb3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHAiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIj4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7CisgICAgaWYg
KGxvY2F0aW9uLmhhc2ggPT0gIiIpIHsKKyAgICAgICAgbG9jYXRpb24uaGFzaCA9ICIjcmVsb2Fk
aW5nIjsKKyAgICAgICAgbG9jYXRpb24ucmVsb2FkKHRydWUpOworICAgIH0gZWxzZSBpZiAobG9j
YXRpb24uaGFzaCA9PSAiI3JlbG9hZGluZyIpIHsKKyAgICAgICAgbG9jYXRpb24uaGFzaCA9ICIj
ZmluaXNoZWQiOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3ZnL3Jlc291cmNlcy9kZWxheUNh
Y2hlZExvYWQucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3ZnL3Jl
c291cmNlcy9kZWxheUNhY2hlZExvYWQucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdmcvcmVzb3VyY2VzL2RlbGF5Q2FjaGVkTG9hZC5waHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNyBAQAorPD9waHAKKyAgLy8gRGVsYXkgbG9hZCBieSAwLjA3cy4gVGhpcyB3
YXMgZm91bmQgdG8gYmUgdGhlIGxvd2VzdCB2YWx1ZQorICAvLyByZXF1aXJlZCBmb3Igd2Via2l0
Lm9yZy9iLzEwNjczMworICB1c2xlZXAoNzAwMDApOworICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6
IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUnKTsKKyAgaGVhZGVyKCdMb2NhdGlvbjogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3N2Zy9yZXNvdXJjZXMvZ3JlZW5TcXVhcmUuc3ZnJyk7Cis/PgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcvcmVzb3VyY2VzL2dyZWVuU3F1YXJlLnN2Zwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N2Zy9yZXNvdXJjZXMvZ3JlZW5T
cXVhcmUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdmcvcmVz
b3VyY2VzL2dyZWVuU3F1YXJlLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSBUaGUgcmVjdGFuZ3VsYXIg
dmlld0JveCBjYXVzZXMgdGhlIGdyZWVuIHJlY3QgdG8gcmVuZGVyIGFzIGEgMTAweDEwMCBzcXVh
cmUuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9
IjAgMCAxMDAgMjAwIj4KKyAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iNTAlIiBmaWxsPSJn
cmVlbiIvPgorPC9zdmc+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>