<?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>70557</bug_id>
          
          <creation_ts>2011-10-20 15:44:01 -0700</creation_ts>
          <short_desc>avoid unnecessary layouts of flex items during the flex pass</short_desc>
          <delta_ts>2011-10-25 12:25:27 -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>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>
          
          <blocked>62048</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>hyatt</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487944</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-20 15:44:01 -0700</bug_when>
    <thetext>avoid unnecessary layouts of flex items during the flex pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487953</commentid>
    <comment_count>1</comment_count>
      <attachid>111862</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-20 15:49:14 -0700</bug_when>
    <thetext>Created attachment 111862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488062</commentid>
    <comment_count>2</comment_count>
      <attachid>111862</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-20 18:12:08 -0700</bug_when>
    <thetext>Comment on attachment 111862
Patch

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

Patch looks good to me.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:496
&gt; +    Length fixedWidth = isHorizontalFlow() ? child-&gt;style()-&gt;width() : child-&gt;style()-&gt;height();

Nit: I think the code would be simpler if you added flowAwareWidthStyleForChild instead of isFlowAwareLogicalWidthAutoForChild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490170</commentid>
    <comment_count>3</comment_count>
      <attachid>111862</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-10-25 11:17:09 -0700</bug_when>
    <thetext>Comment on attachment 111862
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:224
&gt; +    Length width = isHorizontalFlow() ? child-&gt;style()-&gt;width() : child-&gt;style()-&gt;height();
&gt; +    return width.isAuto();

Please name the local variable logicalWidth and not just width.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:497
&gt; +    return fixedWidth.calcMinValue(flowAwareContentLogicalWidth());

Adding flowAwareLogicalWidthLengthForChild as Ojan suggests seems cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490190</commentid>
    <comment_count>4</comment_count>
      <attachid>112368</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-25 11:45:00 -0700</bug_when>
    <thetext>Created attachment 112368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490212</commentid>
    <comment_count>5</comment_count>
      <attachid>112368</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-25 12:11:03 -0700</bug_when>
    <thetext>Comment on attachment 112368
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:506
&gt; +    if (flowAwareLogicalWidthLengthForChild(child).isAuto()) {
&gt;          LayoutUnit logicalWidth = hasOrthogonalFlow(child) ? child-&gt;logicalHeight() : child-&gt;maxPreferredLogicalWidth();
&gt;          return logicalWidth - logicalBorderAndPaddingWidthForChild(child) - logicalScrollbarHeightForChild(child);
&gt;      }
&gt; -    return isHorizontalFlow() ? child-&gt;contentWidth() : child-&gt;contentHeight();
&gt; +    Length fixedWidth = isHorizontalFlow() ? child-&gt;style()-&gt;width() : child-&gt;style()-&gt;height();
&gt; +    return fixedWidth.calcMinValue(flowAwareContentLogicalWidth());

nit: i would do this like so:
Length logicalWidthLength = flowAwareLogicalWidthLengthForChild(child);
if (logicalWidthLength.isAuto()) {
...
}
return logicalWidthLength.calcMinValue(...);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490216</commentid>
    <comment_count>6</comment_count>
      <attachid>112372</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-25 12:14:33 -0700</bug_when>
    <thetext>Created attachment 112372
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490231</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-25 12:25:04 -0700</bug_when>
    <thetext>Committed r98373: &lt;http://trac.webkit.org/changeset/98373&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111862</attachid>
            <date>2011-10-20 15:49:14 -0700</date>
            <delta_ts>2011-10-25 11:44:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70557-20111020154915.patch</filename>
            <type>text/plain</type>
            <size>6757</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgwMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNjZkZWY5ZTk3MzUwZWQ1
ZDVlMzU1MWNjN2RjMDgzN2M1MWI1YmZjLi4wNDRiY2I3MWU3M2IxNDM3ZGVkNGU1MzYzZjA5ODIy
NDg3NmVhODg2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMjAgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBhdm9pZCB1bm5lY2Vzc2FyeSBs
YXlvdXRzIG9mIGZsZXggaXRlbXMgZHVyaW5nIHRoZSBmbGV4IHBhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNTU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHByZWZlcnJlZCBzaXplIG9m
IGEgZmxleCBpdGVtIGlzIHByb3ZpZGVkLCB3ZSBkb24ndCBuZWVkIHRvCisgICAgICAgIGxheW91
dCB0aGUgZmxleCBpdGVtIHdoZW4gY29tcHV0aW5nIHRoZSBwcmVmZXJyZWQgc2l6ZS4gIFRoaXMg
YWxsb3dzCisgICAgICAgIHVzIHRvIG9ubHkgY2FsbCBsYXlvdXQgb24gZWFjaCBmbGV4IGl0ZW0g
b25jZSBpbiB0aGUgY29tbW9uIGNhc2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojppc0Zsb3dBd2Fy
ZUxvZ2ljYWxXaWR0aEF1dG9Gb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4
aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaDoKKwogMjAxMS0xMC0yMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIEZsaXBwZWQtYmxvY2tzIHdyaXRpbmcgbW9kZSBibG9ja3MgZG8gbm90IGhp
dCB0ZXN0IHRoZWlyIG92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCAzNjc4YjAxNTYxMjk0NTdjNWFiMDI3NGQyNGNiZGUzOGU0
ODY5NzYzLi5mYWEzMzY4ZTcxNTM2ZDEzNDI2OWFjZTU4ODQ5YmE2OGIzNjRmMGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIxOCw2
ICsyMTgsMTIgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aXNMZWZ0VG9SaWdodEZsb3coKSBj
b25zdAogICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiB9CiAK
K2Jvb2wgUmVuZGVyRmxleGlibGVCb3g6OmlzRmxvd0F3YXJlTG9naWNhbFdpZHRoQXV0b0ZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0Cit7CisgICAgTGVuZ3RoIHdpZHRoID0gaXNIb3Jp
em9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPndpZHRoKCkgOiBjaGlsZC0+c3R5bGUoKS0+
aGVpZ2h0KCk7CisgICAgcmV0dXJuIHdpZHRoLmlzQXV0bygpOworfQorCiBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojppc0Zsb3dBd2FyZUxvZ2ljYWxIZWlnaHRBdXRvKCkgY29uc3QKIHsKICAgICBM
ZW5ndGggaGVpZ2h0ID0gaXNIb3Jpem9udGFsRmxvdygpID8gc3R5bGUoKS0+aGVpZ2h0KCkgOiBz
dHlsZSgpLT53aWR0aCgpOwpAQCAtNDgzLDEyICs0ODksMTIgQEAgTGVuZ3RoIFJlbmRlckZsZXhp
YmxlQm94OjptYXJnaW5FbmRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0CiAK
IExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lk
dGhGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewotICAgIExlbmd0aCB3aWR0
aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpIDogY2hpbGQt
PnN0eWxlKCktPmhlaWdodCgpOwotICAgIGlmICh3aWR0aC5pc0F1dG8oKSkgeworICAgIGlmIChp
c0Zsb3dBd2FyZUxvZ2ljYWxXaWR0aEF1dG9Gb3JDaGlsZChjaGlsZCkpIHsKICAgICAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkgPyBjaGlsZC0+
bG9naWNhbEhlaWdodCgpIDogY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogICAg
ICAgICByZXR1cm4gbG9naWNhbFdpZHRoIC0gbG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZv
ckNoaWxkKGNoaWxkKSAtIGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChjaGlsZCk7CiAg
ICAgfQotICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+Y29udGVudFdpZHRo
KCkgOiBjaGlsZC0+Y29udGVudEhlaWdodCgpOworICAgIExlbmd0aCBmaXhlZFdpZHRoID0gaXNI
b3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPndpZHRoKCkgOiBjaGlsZC0+c3R5bGUo
KS0+aGVpZ2h0KCk7CisgICAgcmV0dXJuIGZpeGVkV2lkdGguY2FsY01pblZhbHVlKGZsb3dBd2Fy
ZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6Omxh
eW91dElubGluZURpcmVjdGlvbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCkBAIC01NDQsMjAgKzU1
MCwyNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJlZQogCiAgICAgTGF5b3V0VW5pdCBmbGV4Ym94
QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlQ29udGVudExvZ2ljYWxXaWR0aCgpOwog
ICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGls
ZCA9IGl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBsYXkg
b3V0IGZsZXhpYmxlIG9iamVjdHMgYWdhaW4sIHNpbmNlIHRoZSBmbGV4IGRpc3RyaWJ1dGlvbgot
ICAgICAgICAvLyBtYXkgaGF2ZSBjaGFuZ2VkLCBhbmQgd2UgbmVlZCB0byByZWFsbG9jYXRlIHNw
YWNlLgotICAgICAgICBjaGlsZC0+Y2xlYXJPdmVycmlkZVNpemUoKTsKLSAgICAgICAgaWYgKCFy
ZWxheW91dENoaWxkcmVuKQotICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQo
dHJ1ZSk7Ci0gICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICBpZiAoaXNG
bG93QXdhcmVMb2dpY2FsV2lkdGhBdXRvRm9yQ2hpbGQoY2hpbGQpKSB7CisgICAgICAgICAgICBj
aGlsZC0+Y2xlYXJPdmVycmlkZVNpemUoKTsKKyAgICAgICAgICAgIGlmICghcmVsYXlvdXRDaGls
ZHJlbikKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsK
KyAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICB9CiAKLSAgICAg
ICAgLy8gV2UgY2FuJ3QganVzdCB1c2UgbWFyZ2luU3RhcnRGb3JDaGlsZCwgZXQuIGFsLiBiZWNh
dXNlICJhdXRvIiBuZWVkcyB0byBiZSB0cmVhdGVkIGFzIDAuCisgICAgICAgIC8vIFdlIHNldCB0
aGUgbWFyZ2lucyBiZWNhdXNlIHdlIHdhbnQgdG8gbWFrZSBzdXJlICdhdXRvJyBoYXMgYSBtYXJn
aW4KKyAgICAgICAgLy8gb2YgMCBhbmQgYmVjYXVzZSBpZiB3ZSdyZSBub3QgYXV0byBzaXppbmcs
IHdlIGRvbid0IGRvIGEgbGF5b3V0IHRoYXQKKyAgICAgICAgLy8gY29tcHV0ZXMgdGhlIHN0YXJ0
L2VuZCBtYXJnaW5zLgogICAgICAgICBpZiAoaXNIb3Jpem9udGFsRmxvdygpKSB7Ci0gICAgICAg
ICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQo
KS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAg
ICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCku
Y2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAg
Y2hpbGQtPnNldE1hcmdpbkxlZnQoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxjTWlu
VmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgY2hpbGQt
PnNldE1hcmdpblJpZ2h0KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1
ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBwcmVmZXJyZWRM
b2dpY2FsV2lkdGggKz0gY2hpbGQtPm1hcmdpbkxlZnQoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9
IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hp
bGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3AoY2hpbGQtPnN0
eWxlKCktPm1hcmdpblRvcCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdp
ZHRoKSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luQm90dG9tKGNoaWxkLT5zdHlsZSgp
LT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCkpOworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNoaWxkLT5tYXJnaW5U
b3AoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsKICAgICAgICAgfQogCiAgICAgICAgIHByZWZl
cnJlZExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQo
Y2hpbGQpOwpAQCAtNjYxLDExICs2NzEsNiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlv
dXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKEZsZXhPcmRlckl0ZXJhdG9yJgogICAg
ICAgICB9IGVsc2UgaWYgKGlzRmxvd0F3YXJlTG9naWNhbEhlaWdodEF1dG8oKSkKICAgICAgICAg
ICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoc3RkOjptYXgoZmxvd0F3YXJlTG9naWNhbEhl
aWdodCgpLCBmbG93QXdhcmVCb3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsgZmxvd0F3
YXJlTWFyZ2luTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSArIGZsb3dBd2FyZUxvZ2ljYWxI
ZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsKIAotICAg
ICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkKLSAgICAg
ICAgICAgIHNldEZsb3dBd2FyZU1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQsIDApOwotICAgICAg
ICBpZiAobWFyZ2luRW5kU3R5bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCi0gICAgICAgICAg
ICBzZXRGbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChjaGlsZCwgMCk7Ci0KICAgICAgICAgc3Rh
cnRFZGdlICs9IGZsb3dBd2FyZU1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpOwogCiAgICAgICAg
IExheW91dFVuaXQgY2hpbGRMb2dpY2FsV2lkdGggPSBmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JD
aGlsZChjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oCmluZGV4IDY0ZjlkYzU5ZmY0YjM5ZjYxNzM1NzA3M2FhNjU4MmRlYWU2Zjk4NGQuLmVhNjUw
N2Y3OTM5MzBjMjRiZmRlMjA5OGQ1MjE5OTgxOGY2NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0xlZnRUb1Jp
Z2h0RmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNGbG93QXdhcmVMb2dpY2FsSGVpZ2h0QXV0bygp
IGNvbnN0OworICAgIGJvb2wgaXNGbG93QXdhcmVMb2dpY2FsV2lkdGhBdXRvRm9yQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0
KExheW91dFVuaXQpOwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpOwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbFdp
ZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112368</attachid>
            <date>2011-10-25 11:45:00 -0700</date>
            <delta_ts>2011-10-25 12:14:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70557-20111025114504.patch</filename>
            <type>text/plain</type>
            <size>6770</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDdlMTZkNWYwOTVhYjZl
MDZlYjA4OWE5ODRmNzA3NjEwNmVjZjA0Li4wZmI5MmM2NjBiYjExMzc4MzFlNzFmYTc3MjdiN2Jk
MmFjYjBjMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMjUgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBhdm9pZCB1bm5lY2Vzc2FyeSBs
YXlvdXRzIG9mIGZsZXggaXRlbXMgZHVyaW5nIHRoZSBmbGV4IHBhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNTU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHByZWZlcnJlZCBzaXplIG9m
IGEgZmxleCBpdGVtIGlzIHByb3ZpZGVkLCB3ZSBkb24ndCBuZWVkIHRvCisgICAgICAgIGxheW91
dCB0aGUgZmxleCBpdGVtIHdoZW4gY29tcHV0aW5nIHRoZSBwcmVmZXJyZWQgc2l6ZS4gIFRoaXMg
YWxsb3dzCisgICAgICAgIHVzIHRvIG9ubHkgY2FsbCBsYXlvdXQgb24gZWFjaCBmbGV4IGl0ZW0g
b25jZSBpbiB0aGUgY29tbW9uIGNhc2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojppc0Zsb3dBd2Fy
ZUxvZ2ljYWxXaWR0aEF1dG9Gb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4
aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaDoKKwogMjAxMS0xMC0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyODg1ODApOiBDdXJzb3IgZmFpbHMgdG8g
Y2hhbmdlIHRvIHBvaW50ZXIgb24gZW1iZWRkZWQgR29vZ2xlIG1hcHMgcG9wdXBzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBiYzMxMzUy
ZTkzNzI0ZmQ5ZTRhYTE3ZDJkZWJjM2M0MGNlOTFiYTAxLi42ZTBlMGIwZjQ4YWJkMDY3MmQ5N2Jh
YzcyZDkwN2IyYWFkZjkzNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIyOCw2ICsyMjgsMTEgQEAgYm9vbCBSZW5kZXJGbGV4aWJs
ZUJveDo6aXNMZWZ0VG9SaWdodEZsb3coKSBjb25zdAogICAgIHJldHVybiBzdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiB9CiAKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxv
d0F3YXJlTG9naWNhbFdpZHRoTGVuZ3RoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPndpZHRo
KCkgOiBjaGlsZC0+c3R5bGUoKS0+aGVpZ2h0KCk7Cit9CisKIGJvb2wgUmVuZGVyRmxleGlibGVC
b3g6OmlzRmxvd0F3YXJlTG9naWNhbEhlaWdodEF1dG8oKSBjb25zdAogewogICAgIExlbmd0aCBo
ZWlnaHQgPSBpc0hvcml6b250YWxGbG93KCkgPyBzdHlsZSgpLT5oZWlnaHQoKSA6IHN0eWxlKCkt
PndpZHRoKCk7CkBAIC00OTMsMTIgKzQ5OCwxMiBAQCBMZW5ndGggUmVuZGVyRmxleGlibGVCb3g6
Om1hcmdpbkVuZFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIAogTGF5b3V0
VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZs
ZXhJdGVtKFJlbmRlckJveCogY2hpbGQpIGNvbnN0CiB7Ci0gICAgTGVuZ3RoIHdpZHRoID0gaXNI
b3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPndpZHRoKCkgOiBjaGlsZC0+c3R5bGUo
KS0+aGVpZ2h0KCk7Ci0gICAgaWYgKHdpZHRoLmlzQXV0bygpKSB7CisgICAgaWYgKGZsb3dBd2Fy
ZUxvZ2ljYWxXaWR0aExlbmd0aEZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkgewogICAgICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/IGNoaWxk
LT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CiAg
ICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGggLSBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRo
Rm9yQ2hpbGQoY2hpbGQpIC0gbG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNoaWxkKGNoaWxkKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5jb250ZW50V2lk
dGgoKSA6IGNoaWxkLT5jb250ZW50SGVpZ2h0KCk7CisgICAgTGVuZ3RoIGZpeGVkV2lkdGggPSBp
c0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6IGNoaWxkLT5zdHls
ZSgpLT5oZWlnaHQoKTsKKyAgICByZXR1cm4gZml4ZWRXaWR0aC5jYWxjTWluVmFsdWUoZmxvd0F3
YXJlQ29udGVudExvZ2ljYWxXaWR0aCgpKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
bGF5b3V0SW5saW5lRGlyZWN0aW9uKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKQEAgLTU1NCwyMCAr
NTU5LDI0IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBUcmVlCiAKICAgICBMYXlvdXRVbml0IGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCk7
CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNo
aWxkID0gaXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRvIGxh
eSBvdXQgZmxleGlibGUgb2JqZWN0cyBhZ2Fpbiwgc2luY2UgdGhlIGZsZXggZGlzdHJpYnV0aW9u
Ci0gICAgICAgIC8vIG1heSBoYXZlIGNoYW5nZWQsIGFuZCB3ZSBuZWVkIHRvIHJlYWxsb2NhdGUg
c3BhY2UuCi0gICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOwotICAgICAgICBpZiAo
IXJlbGF5b3V0Q2hpbGRyZW4pCi0gICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91
dCh0cnVlKTsKLSAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CisgICAgICAgIGlmIChm
bG93QXdhcmVMb2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpIHsKKyAg
ICAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOworICAgICAgICAgICAgaWYgKCFy
ZWxheW91dENoaWxkcmVuKQorICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUpOworICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CisgICAgICAg
IH0KIAotICAgICAgICAvLyBXZSBjYW4ndCBqdXN0IHVzZSBtYXJnaW5TdGFydEZvckNoaWxkLCBl
dC4gYWwuIGJlY2F1c2UgImF1dG8iIG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXMgMC4KKyAgICAgICAg
Ly8gV2Ugc2V0IHRoZSBtYXJnaW5zIGJlY2F1c2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgJ2F1dG8n
IGhhcyBhIG1hcmdpbgorICAgICAgICAvLyBvZiAwIGFuZCBiZWNhdXNlIGlmIHdlJ3JlIG5vdCBh
dXRvIHNpemluZywgd2UgZG9uJ3QgZG8gYSBsYXlvdXQgdGhhdAorICAgICAgICAvLyBjb21wdXRl
cyB0aGUgc3RhcnQvZW5kIG1hcmdpbnMuCiAgICAgICAgIGlmIChpc0hvcml6b250YWxGbG93KCkp
IHsKLSAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+
bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsK
LSAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luUmlnaHQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Cisg
ICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVm
dCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAg
ICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQoY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCku
Y2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAg
IHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+bWFyZ2luTGVmdCgpICsgY2hpbGQtPm1h
cmdpblJpZ2h0KCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwcmVmZXJyZWRMb2dp
Y2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpLmNhbGNNaW5WYWx1ZShmbGV4
Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxX
aWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkuY2FsY01pblZhbHVlKGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRv
cChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFi
bGVMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20oY2hp
bGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hp
bGQtPm1hcmdpblRvcCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpOwogICAgICAgICB9CiAKICAg
ICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGxvZ2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lk
dGhGb3JDaGlsZChjaGlsZCk7CkBAIC02NzEsMTEgKzY4MCw2IEBAIHZvaWQgUmVuZGVyRmxleGli
bGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVySXRl
cmF0b3ImCiAgICAgICAgIH0gZWxzZSBpZiAoaXNGbG93QXdhcmVMb2dpY2FsSGVpZ2h0QXV0bygp
KQogICAgICAgICAgICAgc2V0Rmxvd0F3YXJlTG9naWNhbEhlaWdodChzdGQ6Om1heChmbG93QXdh
cmVMb2dpY2FsSGVpZ2h0KCksIGZsb3dBd2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0
KCkgKyBmbG93QXdhcmVNYXJnaW5Mb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpICsgZmxvd0F3
YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQo
KSkpOwogCi0gICAgICAgIGlmIChtYXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQoY2hpbGQpLmlzQXV0
bygpKQotICAgICAgICAgICAgc2V0Rmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZCwg
MCk7Ci0gICAgICAgIGlmIChtYXJnaW5FbmRTdHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkK
LSAgICAgICAgICAgIHNldEZsb3dBd2FyZU1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCAwKTsKLQog
ICAgICAgICBzdGFydEVkZ2UgKz0gZmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZCk7
CiAKICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxXaWR0aCA9IGZsb3dBd2FyZUxvZ2lj
YWxXaWR0aEZvckNoaWxkKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmgKaW5kZXggNjRmOWRjNTlmZjRiMzlmNjE3MzU3MDczYWE2NTgyZGVhZTZm
OTg0ZC4uNGRjMTk0MTc5MjEyM2FjYTQ1MDExYWM1OTcyOTg3MTMyMTBmMzM4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTU4LDYgKzU4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKICAgICBib29s
IGlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Zsb3dBd2FyZUxvZ2ljYWxI
ZWlnaHRBdXRvKCkgY29uc3Q7CisgICAgTGVuZ3RoIGZsb3dBd2FyZUxvZ2ljYWxXaWR0aExlbmd0
aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogICAgIHZvaWQgc2V0Rmxvd0F3YXJl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0KTsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUxvZ2lj
YWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKTsKICAgICBMYXlvdXRVbml0IGZsb3dB
d2FyZUxvZ2ljYWxXaWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112372</attachid>
            <date>2011-10-25 12:14:33 -0700</date>
            <delta_ts>2011-10-25 12:25:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70557-20111025121437.patch</filename>
            <type>text/plain</type>
            <size>6729</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDdlMTZkNWYwOTVhYjZl
MDZlYjA4OWE5ODRmNzA3NjEwNmVjZjA0Li5lNTA4MDYwMjRlNTZjYThmNmNjYjJkY2I3NjdjMTVj
MzVhYmFlZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMjUgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBhdm9pZCB1bm5lY2Vzc2FyeSBs
YXlvdXRzIG9mIGZsZXggaXRlbXMgZHVyaW5nIHRoZSBmbGV4IHBhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNTU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBJZiB0aGUgcHJlZmVycmVkIHNpemUgb2YgYSBm
bGV4IGl0ZW0gaXMgcHJvdmlkZWQsIHdlIGRvbid0IG5lZWQgdG8KKyAgICAgICAgbGF5b3V0IHRo
ZSBmbGV4IGl0ZW0gd2hlbiBjb21wdXRpbmcgdGhlIHByZWZlcnJlZCBzaXplLiAgVGhpcyBhbGxv
d3MKKyAgICAgICAgdXMgdG8gb25seSBjYWxsIGxheW91dCBvbiBlYWNoIGZsZXggaXRlbSBvbmNl
IGluIHRoZSBjb21tb24gY2FzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2lj
YWxXaWR0aExlbmd0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hp
bGRyZW5JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oOgorCiAyMDExLTEwLTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI4ODU4MCk6IEN1cnNvciBmYWlscyB0byBjaGFu
Z2UgdG8gcG9pbnRlciBvbiBlbWJlZGRlZCBHb29nbGUgbWFwcyBwb3B1cHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IGJjMzEzNTJlOTM3
MjRmZDllNGFhMTdkMmRlYmMzYzQwY2U5MWJhMDEuLjBiZjI5MjcwMGQ0NjliOTBmMjMwNWFjYWJj
ZWQwYzdlOTQ0NTk1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcApAQCAtMjI4LDYgKzIyOCwxMSBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94
Ojppc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKTsKIH0KIAorTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdh
cmVMb2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAorewor
ICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6
IGNoaWxkLT5zdHlsZSgpLT5oZWlnaHQoKTsKK30KKwogYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6
aXNGbG93QXdhcmVMb2dpY2FsSGVpZ2h0QXV0bygpIGNvbnN0CiB7CiAgICAgTGVuZ3RoIGhlaWdo
dCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IHN0eWxlKCktPmhlaWdodCgpIDogc3R5bGUoKS0+d2lk
dGgoKTsKQEAgLTQ5MywxMiArNDk4LDEyIEBAIExlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6bWFy
Z2luRW5kU3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogCiBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0
ZW0oUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICBMZW5ndGggd2lkdGggPSBpc0hvcml6
b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5o
ZWlnaHQoKTsKLSAgICBpZiAod2lkdGguaXNBdXRvKCkpIHsKKyAgICBMZW5ndGggbG9naWNhbFdp
ZHRoTGVuZ3RoID0gZmxvd0F3YXJlTG9naWNhbFdpZHRoTGVuZ3RoRm9yQ2hpbGQoY2hpbGQpOwor
ICAgIGlmIChsb2dpY2FsV2lkdGhMZW5ndGguaXNBdXRvKCkpIHsKICAgICAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGggPSBoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkgPyBjaGlsZC0+bG9naWNh
bEhlaWdodCgpIDogY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogICAgICAgICBy
ZXR1cm4gbG9naWNhbFdpZHRoIC0gbG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZvckNoaWxk
KGNoaWxkKSAtIGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChjaGlsZCk7CiAgICAgfQot
ICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+Y29udGVudFdpZHRoKCkgOiBj
aGlsZC0+Y29udGVudEhlaWdodCgpOworICAgIHJldHVybiBsb2dpY2FsV2lkdGhMZW5ndGguY2Fs
Y01pblZhbHVlKGZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURpcmVjdGlvbihib29sIHJlbGF5b3V0Q2hpbGRy
ZW4pCkBAIC01NTQsMjAgKzU1OSwyNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJlZQogCiAgICAg
TGF5b3V0VW5pdCBmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlQ29udGVu
dExvZ2ljYWxXaWR0aCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZp
cnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICAvLyBXZSBh
bHdheXMgaGF2ZSB0byBsYXkgb3V0IGZsZXhpYmxlIG9iamVjdHMgYWdhaW4sIHNpbmNlIHRoZSBm
bGV4IGRpc3RyaWJ1dGlvbgotICAgICAgICAvLyBtYXkgaGF2ZSBjaGFuZ2VkLCBhbmQgd2UgbmVl
ZCB0byByZWFsbG9jYXRlIHNwYWNlLgotICAgICAgICBjaGlsZC0+Y2xlYXJPdmVycmlkZVNpemUo
KTsKLSAgICAgICAgaWYgKCFyZWxheW91dENoaWxkcmVuKQotICAgICAgICAgICAgY2hpbGQtPnNl
dENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgp
OworICAgICAgICBpZiAoZmxvd0F3YXJlTG9naWNhbFdpZHRoTGVuZ3RoRm9yQ2hpbGQoY2hpbGQp
LmlzQXV0bygpKSB7CisgICAgICAgICAgICBjaGlsZC0+Y2xlYXJPdmVycmlkZVNpemUoKTsKKyAg
ICAgICAgICAgIGlmICghcmVsYXlvdXRDaGlsZHJlbikKKyAgICAgICAgICAgICAgICBjaGlsZC0+
c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5l
ZWRlZCgpOworICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgY2FuJ3QganVzdCB1c2UgbWFyZ2lu
U3RhcnRGb3JDaGlsZCwgZXQuIGFsLiBiZWNhdXNlICJhdXRvIiBuZWVkcyB0byBiZSB0cmVhdGVk
IGFzIDAuCisgICAgICAgIC8vIFdlIHNldCB0aGUgbWFyZ2lucyBiZWNhdXNlIHdlIHdhbnQgdG8g
bWFrZSBzdXJlICdhdXRvJyBoYXMgYSBtYXJnaW4KKyAgICAgICAgLy8gb2YgMCBhbmQgYmVjYXVz
ZSBpZiB3ZSdyZSBub3QgYXV0byBzaXppbmcsIHdlIGRvbid0IGRvIGEgbGF5b3V0IHRoYXQKKyAg
ICAgICAgLy8gY29tcHV0ZXMgdGhlIHN0YXJ0L2VuZCBtYXJnaW5zLgogICAgICAgICBpZiAoaXNI
b3Jpem9udGFsRmxvdygpKSB7Ci0gICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0g
Y2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hp
bGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVM
b2dpY2FsV2lkdGgpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxlZnQoY2hpbGQtPnN0
eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGNoaWxkLT5zdHlsZSgp
LT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRo
KSk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPm1hcmdpbkxl
ZnQoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS5j
YWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBw
cmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNh
bGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGNo
aWxkLT5zZXRNYXJnaW5Ub3AoY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpLmNhbGNNaW5WYWx1
ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0
TWFyZ2luQm90dG9tKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUo
ZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgcHJlZmVycmVkTG9n
aWNhbFdpZHRoICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsQm9y
ZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpOwpAQCAtNjcxLDExICs2ODAsNiBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0
aW9uKEZsZXhPcmRlckl0ZXJhdG9yJgogICAgICAgICB9IGVsc2UgaWYgKGlzRmxvd0F3YXJlTG9n
aWNhbEhlaWdodEF1dG8oKSkKICAgICAgICAgICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQo
c3RkOjptYXgoZmxvd0F3YXJlTG9naWNhbEhlaWdodCgpLCBmbG93QXdhcmVCb3JkZXJBbmRQYWRk
aW5nTG9naWNhbEhlaWdodCgpICsgZmxvd0F3YXJlTWFyZ2luTG9naWNhbEhlaWdodEZvckNoaWxk
KGNoaWxkKSArIGZsb3dBd2FyZUxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCkpKTsKIAotICAgICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZUZvckNo
aWxkKGNoaWxkKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIHNldEZsb3dBd2FyZU1hcmdpblN0YXJ0
Rm9yQ2hpbGQoY2hpbGQsIDApOwotICAgICAgICBpZiAobWFyZ2luRW5kU3R5bGVGb3JDaGlsZChj
aGlsZCkuaXNBdXRvKCkpCi0gICAgICAgICAgICBzZXRGbG93QXdhcmVNYXJnaW5FbmRGb3JDaGls
ZChjaGlsZCwgMCk7Ci0KICAgICAgICAgc3RhcnRFZGdlICs9IGZsb3dBd2FyZU1hcmdpblN0YXJ0
Rm9yQ2hpbGQoY2hpbGQpOwogCiAgICAgICAgIExheW91dFVuaXQgY2hpbGRMb2dpY2FsV2lkdGgg
PSBmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDY0ZjlkYzU5ZmY0YjM5ZjYxNzM1
NzA3M2FhNjU4MmRlYWU2Zjk4NGQuLjRkYzE5NDE3OTIxMjNhY2E0NTAxMWFjNTk3Mjk4NzEzMjEw
ZjMzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNG
bG93QXdhcmVMb2dpY2FsSGVpZ2h0QXV0bygpIGNvbnN0OworICAgIExlbmd0aCBmbG93QXdhcmVM
b2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKICAgICB2
b2lkIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCk7CiAgICAgTGF5b3V0VW5p
dCBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CiAgICAg
TGF5b3V0VW5pdCBmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>