<?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>99768</bug_id>
          
          <creation_ts>2012-10-18 15:47:26 -0700</creation_ts>
          <short_desc>We should limit the tile cache coverage when a page can&apos;t take advantage of fast tile scrolling anyway</short_desc>
          <delta_ts>2012-10-19 13:33:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>OS X 10.8</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="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>745659</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-18 15:47:26 -0700</bug_when>
    <thetext>Right now, we only limit the size of the tile cache if a page cannot scroll at all. We should limit it whenever a page can&apos;t take advantage of fast tile scrolling. Making this change seems to be a performance improvement on pages that are very painting-intensive such as Facebook.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745687</commentid>
    <comment_count>1</comment_count>
      <attachid>169497</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-18 16:02:17 -0700</bug_when>
    <thetext>Created attachment 169497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745698</commentid>
    <comment_count>2</comment_count>
      <attachid>169497</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-18 16:08:32 -0700</bug_when>
    <thetext>Comment on attachment 169497
Patch

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

I think you could go a little further and limit horizontal/vertical coverage when there is no scrollbar in that direction.

&gt; Source/WebCore/page/FrameView.cpp:797
&gt; +    if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator()) {
&gt; +        if (hasViewportConstrainedObjects() &amp;&amp; !scrollingCoordinator-&gt;supportsFixedPositionLayers())
&gt; +            return true;
&gt; +    }

Isn&apos;t this replicating logic about whether we can use threaded scrolling? Can&apos;t we just ask the ScrollingCoordinator whether it&apos;s going to use threaded scrolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745700</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-18 16:10:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 169497 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169497&amp;action=review
&gt; 
&gt; I think you could go a little further and limit horizontal/vertical coverage when there is no scrollbar in that direction.
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:797
&gt; &gt; +    if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator()) {
&gt; &gt; +        if (hasViewportConstrainedObjects() &amp;&amp; !scrollingCoordinator-&gt;supportsFixedPositionLayers())
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; 
&gt; Isn&apos;t this replicating logic about whether we can use threaded scrolling? Can&apos;t we just ask the ScrollingCoordinator whether it&apos;s going to use threaded scrolling?

It is. That was my plan originally, actually, but I talked with Anders in person, and I got the impression that he liked the idea of keeping this all in FrameView. Maybe I misinterpreted him though. I will give him a chance to defend the idea or claim I am crazy since I only did it this way because I thought he liked it better :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745764</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-18 17:17:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 169497 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169497&amp;action=review
&gt; &gt; 
&gt; &gt; I think you could go a little further and limit horizontal/vertical coverage when there is no scrollbar in that direction.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/FrameView.cpp:797
&gt; &gt; &gt; +    if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator()) {
&gt; &gt; &gt; +        if (hasViewportConstrainedObjects() &amp;&amp; !scrollingCoordinator-&gt;supportsFixedPositionLayers())
&gt; &gt; &gt; +            return true;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Isn&apos;t this replicating logic about whether we can use threaded scrolling? Can&apos;t we just ask the ScrollingCoordinator whether it&apos;s going to use threaded scrolling?
&gt; 
&gt; It is. That was my plan originally, actually, but I talked with Anders in person, and I got the impression that he liked the idea of keeping this all in FrameView. Maybe I misinterpreted him though. I will give him a chance to defend the idea or claim I am crazy since I only did it this way because I thought he liked it better :-)

I&apos;ll do you one better and claim that _I_ am crazy. It&apos;s clearly better to keep the logic in ScrollingCoordinator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745767</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-18 17:19:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 169497 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169497&amp;action=review
&gt; 
&gt; I think you could go a little further and limit horizontal/vertical coverage when there is no scrollbar in that direction.
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:797
&gt; &gt; +    if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator()) {
&gt; &gt; +        if (hasViewportConstrainedObjects() &amp;&amp; !scrollingCoordinator-&gt;supportsFixedPositionLayers())
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; 
&gt; Isn&apos;t this replicating logic about whether we can use threaded scrolling? Can&apos;t we just ask the ScrollingCoordinator whether it&apos;s going to use threaded scrolling?

Does seem odd, especially since there are more reasons that  shouldUpdateScrollLayerPositionOnMainThread could be true which aren&apos;t covered here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745813</commentid>
    <comment_count>6</comment_count>
      <attachid>169521</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-18 17:58:25 -0700</bug_when>
    <thetext>Created attachment 169521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746574</commentid>
    <comment_count>7</comment_count>
      <attachid>169521</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-19 13:06:48 -0700</bug_when>
    <thetext>Comment on attachment 169521
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:282
&gt; +MainThreadScrollingReasons ScrollingCoordinator::shouldUpdateScrollLayerPositionOnMainThread() const

Returning the MainThreadScrollingReasons from a &apos;should&apos; method is a bit confusing; I think this would be clearer as two methods (possibly inline):

MainThreadScrollingReasons mainThreadScrollingReasons() const;
bool shouldUpdateScrollLayerPositionOnMainThread() const { return mainThreadScrollingReasons() != 0; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746599</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-19 13:33:50 -0700</bug_when>
    <thetext>Thanks, Simon! http://trac.webkit.org/changeset/131939</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169497</attachid>
            <date>2012-10-18 16:02:17 -0700</date>
            <delta_ts>2012-10-18 17:58:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>5529</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTgxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTE4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk3NjgKKyAgICAgICAgV2Ugc2hvdWxkIGxpbWl0IHRoZSB0aWxl
IGNhY2hlIGNvdmVyYWdlIHdoZW4gYSBwYWdlIGNhbid0IHRha2UgCisgICAgICAgIGFkdmFudGFn
ZSBvZiBmYXN0IHRpbGUgc2Nyb2xsaW5nIGFueXdheQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gc2l0ZXMgY2FuJ3QgdXNlIGZhc3Qtc2Nyb2xs
aW5nLCB0aGVyZSBpcyBubyBuZWVkIHRvIGluZmxhdGUgdGhlIAorICAgICAgICB0aWxlIGNhY2hl
LiBJbiBmYWN0LCB3ZSBnZXQgYSBwZXJmb3JtYW5jZSBib29zdCBieSBrZWVwaW5nIGl0IHNtYWxs
IAorICAgICAgICBvbiBwYWludGluZy1pbnRlbnNpdmUgc2l0ZXMuIAorCisgICAgICAgIE5ldyBm
dW5jdGlvbiBzaG91bGRMaW1pdFRpbGVDb3ZlcmFnZSgpIHdpbGwgcmV0dXJuIHRydWUgZm9yIAor
ICAgICAgICBGcmFtZVZpZXdzIHRoYXQgd2lsbCBub3QgYmVuZWZpdCBmcm9tIGFuIGluZmxhdGVk
IHRpbGUgY2FjaGUuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzaG91bGRMaW1pdFRpbGVDb3ZlcmFnZSk6CisgICAgICAgIAorICAg
ICAgICBJbnN0ZWFkIG9mIGp1c3QgbG9va2luZyBhIHdoZXRoZXIgb3Igbm90IHRoZSBGcmFtZVZp
ZXcgCisgICAgICAgIGNhbkhhdmVTY3JvbGxiYXIoKSwgY29uc3VsdCBzaG91bGRMaW1pdFRpbGVD
b3ZlcmFnZSgpLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91
dFRhc2tzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKworICAg
ICAgICBUaGlzIHNob3VsZCBiZSBhIGJpdHdpc2UgYW5kLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6
OnRpbGVDb3ZlcmFnZVJlY3QpOgorCiAyMDEyLTEwLTE4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTMxODEwLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTMxNzc5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03ODIsNiArNzgyLDI2IEBAIFRpbGVkQmFja2luZyogRnJhbWVWaWV3Ojp0aWxlZEJhY2tpbmco
KQogICAgIHJldHVybiBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnRpbGVkQmFja2luZygpOwog
fQogCitib29sIEZyYW1lVmlldzo6c2hvdWxkTGltaXRUaWxlQ292ZXJhZ2UoKSBjb25zdAorewor
ICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSB8fCBoYXNTbG93UmVwYWludE9iamVjdHMoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSkgeworICAgICAgICBpZiAoaGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMo
KSAmJiAhc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKEZyYW1lKiBtYWlu
RnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZS0+ZG9j
dW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHVp
bnQ2NF90IEZyYW1lVmlldzo6c2Nyb2xsTGF5ZXJJRCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmll
dyogcm9vdCA9IHJvb3RSZW5kZXJlcih0aGlzKTsKQEAgLTI1MDEsNyArMjUyMSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSB0aGlz
LT50aWxlZEJhY2tpbmcoKSkKLSAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxlQ292ZXJhZ2Uo
Y2FuSGF2ZVNjcm9sbGJhcnMoKSA/IFRpbGVkQmFja2luZzo6Q292ZXJhZ2VGb3JTY3JvbGxpbmcg
OiBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmlzaWJsZUFyZWEpOworICAgICAgICB0aWxlZEJh
Y2tpbmctPnNldFRpbGVDb3ZlcmFnZShzaG91bGRMaW1pdFRpbGVDb3ZlcmFnZSgpID8gVGlsZWRC
YWNraW5nOjpDb3ZlcmFnZUZvclZpc2libGVBcmVhIDogVGlsZWRCYWNraW5nOjpDb3ZlcmFnZUZv
clNjcm9sbGluZyk7CiAjZW5kaWYKIAogICAgIHNjcm9sbFRvQW5jaG9yKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDEzMTc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7CiAKICAg
ICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgT1ZFUlJJREU7CisgICAgYm9v
bCBzaG91bGRMaW1pdFRpbGVDb3ZlcmFnZSgpIGNvbnN0OwogCiAgICAgLy8gSW4gdGhlIGZ1dHVy
ZSB3aGVuIGFueSBTY3JvbGxhYmxlQXJlYSBjYW4gaGF2ZSBhIG5vZGUgaW4gdGggU2Nyb2xsaW5n
VHJlZSwgdGhpcyBzaG91bGQKICAgICAvLyBiZWNvbWUgYSB2aXJ0dWFsIGZ1bmN0aW9uIG9uIFNj
cm9sbGFibGVBcmVhLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCShyZXZpc2lvbiAxMzE3NzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCBJbnRSZWN0IFRpbGVDYWNoZTo6dGlsZUNvdmVyYWdl
UmVjdCgpIGNvCiAgICAgICAgIC8vIEluZmxhdGUgdGhlIGNvdmVyYWdlIHJlY3Qgc28gdGhhdCBp
dCBjb3ZlcnMgMnggb2YgdGhlIHZpc2libGUgd2lkdGggYW5kIDN4IG9mIHRoZSB2aXNpYmxlIGhl
aWdodC4KICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgY2hvc2VuIGJlY2F1c2UgaXQncyBt
b3JlIGNvbW1vbiB0byBoYXZlIHRhbGwgcGFnZXMgYW5kIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5LAog
ICAgICAgICAvLyBzbyB3ZSBrZWVwIG1vcmUgdGlsZXMgYWJvdmUgYW5kIGJlbG93IHRoZSBjdXJy
ZW50IGFyZWEuCi0gICAgICAgIGlmIChtX3RpbGVDb3ZlcmFnZSAmJiBDb3ZlcmFnZUZvckhvcml6
b250YWxTY3JvbGxpbmcpCisgICAgICAgIGlmIChtX3RpbGVDb3ZlcmFnZSAmIENvdmVyYWdlRm9y
SG9yaXpvbnRhbFNjcm9sbGluZykKICAgICAgICAgICAgIHRpbGVDb3ZlcmFnZVJlY3QuaW5mbGF0
ZVgodGlsZUNvdmVyYWdlUmVjdC53aWR0aCgpIC8gMik7CiAKLSAgICAgICAgaWYgKG1fdGlsZUNv
dmVyYWdlICYmIENvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxpbmcpCisgICAgICAgIGlmIChtX3Rp
bGVDb3ZlcmFnZSAmIENvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxpbmcpCiAgICAgICAgICAgICB0
aWxlQ292ZXJhZ2VSZWN0LmluZmxhdGVZKHRpbGVDb3ZlcmFnZVJlY3QuaGVpZ2h0KCkpOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAJKHJldmlzaW9uIDEzMTgwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAg
UmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcoUgogICAgICAgICAgICAgaWYg
KFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbV9ncmFwaGljc0xheWVyLT50aWxlZEJhY2tp
bmcoKSkgewogICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1l
KCk7CiAgICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRJc0luV2luZG93KHBhZ2UtPmlz
T25zY3JlZW4oKSk7Ci0gICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxlQ292ZXJh
Z2UoZnJhbWUtPnZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSA/IFRpbGVkQmFja2luZzo6Q292
ZXJhZ2VGb3JTY3JvbGxpbmcgOiBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmlzaWJsZUFyZWEp
OworICAgICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0VGlsZUNvdmVyYWdlKGZyYW1lLT52
aWV3KCktPnNob3VsZExpbWl0VGlsZUNvdmVyYWdlKCkgPyBUaWxlZEJhY2tpbmc6OkNvdmVyYWdl
Rm9yVmlzaWJsZUFyZWEgOiBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yU2Nyb2xsaW5nKTsKICAg
ICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNldHRpbmdzKCktPnNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169521</attachid>
            <date>2012-10-18 17:58:25 -0700</date>
            <delta_ts>2012-10-19 13:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>7864</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTE4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk3NjgKKyAgICAgICAgV2Ugc2hvdWxkIGxpbWl0IHRoZSB0aWxl
IGNhY2hlIGNvdmVyYWdlIHdoZW4gYSBwYWdlIGNhbid0IHRha2UgCisgICAgICAgIGFkdmFudGFn
ZSBvZiBmYXN0IHRpbGUgc2Nyb2xsaW5nIGFueXdheQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gc2l0ZXMgY2FuJ3QgdXNlIGZhc3Qtc2Nyb2xs
aW5nLCB0aGVyZSBpcyBubyBuZWVkIHRvIGluZmxhdGUgdGhlIAorICAgICAgICB0aWxlIGNhY2hl
LiBJbiBmYWN0LCB3ZSBnZXQgYSBwZXJmb3JtYW5jZSBib29zdCBieSBrZWVwaW5nIGl0IHNtYWxs
IAorICAgICAgICBvbiBwYWludGluZy1pbnRlbnNpdmUgc2l0ZXMuIAorCisgICAgICAgIEluc3Rl
YWQgb2YganVzdCBsb29raW5nIGEgd2hldGhlciBvciBub3QgdGhlIEZyYW1lVmlldyAKKyAgICAg
ICAgY2FuSGF2ZVNjcm9sbGJhcigpLCBjb25zdWx0IAorICAgICAgICBzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAg
ICAgCisgICAgICAgIEV4cG9zZSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKCkuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc05vbkxheWVy
Rml4ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdD
b29yZGluYXRvcik6CisKKyAgICAgICAgQnVnIGZpeC4gU2hvdWxkIGJlIGJpdHdpc2UgYW5kLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ2FjaGU6OnRpbGVDb3ZlcmFnZVJlY3QpOgorCiAyMDEyLTEwLTE4ICBQ
YW4gRGVuZyAgPHBhbi5kZW5nQGludGVsLmNvbT4KIAogICAgICAgICBbUmVzb3VyY2UgVGltaW5n
XUltcGxlbWVudGF0aW9uIG9mIHJlc291cmNlIHRpbWluZyBidWZmZXIgc2l6ZSByZXN0cmljdGlv
biBmdW5jdGlvbmFsaXR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lv
biAxMzE3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1MDAsOCArMjUwMCwxNCBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RM
YXlvdXRUYXNrcygpCiAgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygp
KQotICAgICAgICB0aWxlZEJhY2tpbmctPnNldFRpbGVDb3ZlcmFnZShjYW5IYXZlU2Nyb2xsYmFy
cygpID8gVGlsZWRCYWNraW5nOjpDb3ZlcmFnZUZvclNjcm9sbGluZyA6IFRpbGVkQmFja2luZzo6
Q292ZXJhZ2VGb3JWaXNpYmxlQXJlYSk7CisgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNr
aW5nID0gdGhpcy0+dGlsZWRCYWNraW5nKCkpIHsKKyAgICAgICAgaWYgKHBhZ2UpIHsKKyAgICAg
ICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBw
YWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBzaG91
bGRMaW1pdFRpbGVDb3ZlcmFnZSA9ICFjYW5IYXZlU2Nyb2xsYmFycygpIHx8IHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7
CisgICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxlQ292ZXJhZ2Uoc2hvdWxkTGlt
aXRUaWxlQ292ZXJhZ2UgPyBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmlzaWJsZUFyZWEgOiBU
aWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yU2Nyb2xsaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KICNlbmRpZgogCiAgICAgc2Nyb2xsVG9BbmNob3IoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAJKHJldmlzaW9uIDEzMTc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDcgKzI1OCw3
IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXYKIH0KICNlbmRpZgog
Ci1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNOb25MYXllckZpeGVkT2JqZWN0cyhGcmFt
ZVZpZXcqIGZyYW1lVmlldykKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc05vbkxheWVy
Rml4ZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWV3KSBjb25zdAogewogICAgIGNvbnN0IEZy
YW1lVmlldzo6Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMgPSBmcmFtZVZpZXctPnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCk7CiAgICAg
aWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKQEAgLTI3OSw3ICsyNzksNyBAQCBib29s
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNOb25MYXllckZpCiAjZW5kaWYKIH0KIAotdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCgpCitNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpIGNv
bnN0CiB7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCk7CiAKQEAgLTI5Niw3ICsyOTYsMTIgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlU2hvdWxkVQogICAgIGlmIChtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5p
c0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0g
SXNJbWFnZURvY3VtZW50OwogCi0gICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZChtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CisgICAgcmV0dXJuIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkKK3sK
KyAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKHNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSk7CiB9CiAKIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKGJvb2wgZm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgJKHJldmlzaW9uIDEzMTgwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsx
MjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIElzSW1hZ2VEb2N1bWVudCA9IDEgPDwgNAogICAgIH07
CiAKKyAgICBNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyBzaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3Q7CisKICAgICAvLyBUaGVzZSB2aXJ0dWFsIGZ1
bmN0aW9ucyBhcmUgY3VycmVudGx5IHVuaXF1ZSB0byBDaHJvbWl1bSdzIFdlYkxheWVyIGFwcHJv
YWNoLiBUaGVpciBtZWFuaW5nZnVsCiAgICAgLy8gaW1wbGVtZW50YXRpb25zIGFyZSBpbiBTY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtLgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiwgR3JhcGhpY3NMYXllciop
IHsgfQpAQCAtMTQ4LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlY29t
cHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoTWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMpIHsgfQogCi0gICAgYm9vbCBoYXNOb25M
YXllckZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqKTsKKyAgICBib29sIGhhc05vbkxheWVyRml4ZWRP
YmplY3RzKEZyYW1lVmlldyopIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwogCiAgICAgYm9vbCBtX2ZvcmNlTWFpblRo
cmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCShyZXZpc2lvbiAx
MzE3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCBJbnRSZWN0IFRpbGVD
YWNoZTo6dGlsZUNvdmVyYWdlUmVjdCgpIGNvCiAgICAgICAgIC8vIEluZmxhdGUgdGhlIGNvdmVy
YWdlIHJlY3Qgc28gdGhhdCBpdCBjb3ZlcnMgMnggb2YgdGhlIHZpc2libGUgd2lkdGggYW5kIDN4
IG9mIHRoZSB2aXNpYmxlIGhlaWdodC4KICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgY2hv
c2VuIGJlY2F1c2UgaXQncyBtb3JlIGNvbW1vbiB0byBoYXZlIHRhbGwgcGFnZXMgYW5kIHRvIHNj
cm9sbCB2ZXJ0aWNhbGx5LAogICAgICAgICAvLyBzbyB3ZSBrZWVwIG1vcmUgdGlsZXMgYWJvdmUg
YW5kIGJlbG93IHRoZSBjdXJyZW50IGFyZWEuCi0gICAgICAgIGlmIChtX3RpbGVDb3ZlcmFnZSAm
JiBDb3ZlcmFnZUZvckhvcml6b250YWxTY3JvbGxpbmcpCisgICAgICAgIGlmIChtX3RpbGVDb3Zl
cmFnZSAmIENvdmVyYWdlRm9ySG9yaXpvbnRhbFNjcm9sbGluZykKICAgICAgICAgICAgIHRpbGVD
b3ZlcmFnZVJlY3QuaW5mbGF0ZVgodGlsZUNvdmVyYWdlUmVjdC53aWR0aCgpIC8gMik7CiAKLSAg
ICAgICAgaWYgKG1fdGlsZUNvdmVyYWdlICYmIENvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxpbmcp
CisgICAgICAgIGlmIChtX3RpbGVDb3ZlcmFnZSAmIENvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxp
bmcpCiAgICAgICAgICAgICB0aWxlQ292ZXJhZ2VSZWN0LmluZmxhdGVZKHRpbGVDb3ZlcmFnZVJl
Y3QuaGVpZ2h0KCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDEzMTgwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNyArMTI1LDEwIEBAIFJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5n
KFIKICAgICAgICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1fZ3JhcGhp
Y3NMYXllci0+dGlsZWRCYWNraW5nKCkpIHsKICAgICAgICAgICAgICAgICBGcmFtZSogZnJhbWUg
PSByZW5kZXJlcigpLT5mcmFtZSgpOwogICAgICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0
SXNJbldpbmRvdyhwYWdlLT5pc09uc2NyZWVuKCkpOwotICAgICAgICAgICAgICAgIHRpbGVkQmFj
a2luZy0+c2V0VGlsZUNvdmVyYWdlKGZyYW1lLT52aWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkg
PyBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yU2Nyb2xsaW5nIDogVGlsZWRCYWNraW5nOjpDb3Zl
cmFnZUZvclZpc2libGVBcmVhKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkgeworICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZExpbWl0VGlsZUNvdmVyYWdlID0g
IWZyYW1lLT52aWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkgfHwgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxlQ292ZXJhZ2Uoc2hvdWxkTGltaXRU
aWxlQ292ZXJhZ2UgPyBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmlzaWJsZUFyZWEgOiBUaWxl
ZEJhY2tpbmc6OkNvdmVyYWdlRm9yU2Nyb2xsaW5nKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGZyYW1lLT5zZXR0aW5ncygpICYmIGZyYW1lLT5zZXR0aW5ncygpLT5zY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="182852"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>