<?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>60046</bug_id>
          
          <creation_ts>2011-05-03 11:36:37 -0700</creation_ts>
          <short_desc>Bundle trailingSpaceObject and trailingPositionedBoxes in findNextLineBreak as a class</short_desc>
          <delta_ts>2011-05-03 13:33:30 -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>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>397222</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 11:36:37 -0700</bug_when>
    <thetext>trailingSpaceObject and trailingPositionedBoxes in findNextLineBreak are always used together.  We should make a class that extracts these two variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397233</commentid>
    <comment_count>1</comment_count>
      <attachid>92097</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 11:46:07 -0700</bug_when>
    <thetext>Created attachment 92097
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397236</commentid>
    <comment_count>2</comment_count>
      <attachid>92097</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 11:51:39 -0700</bug_when>
    <thetext>Comment on attachment 92097
cleanup

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1670
&gt; +    void addMidpoints(LineMidpointState&amp;, const InlineIterator&amp; lBreak);

I would add a newline befor eprivate:

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1824
&gt; +                // FIXME: should we call trainingSpace.clear() ?

trailingObjects. you mean.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2172
&gt; +                    trailingObjects.setTrailingWhitespace(static_cast&lt;RenderText*&gt;(o));

do we have a safer toRenderText function to use instead of a direct cast?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2297
&gt; +    trailingObjects.addMidpoints(lineMidpointState, lBreak);

Maybe addMidpoints needs a better name.  Are we adding midpoints to the TrailingObjects?  Or are we adding midpoints based on the trailing objects?  Should this be on MidPointSTate or on the TrailingObjects class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397239</commentid>
    <comment_count>3</comment_count>
      <attachid>92097</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 11:56:39 -0700</bug_when>
    <thetext>Comment on attachment 92097
cleanup

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

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1670
&gt;&gt; +    void addMidpoints(LineMidpointState&amp;, const InlineIterator&amp; lBreak);
&gt; 
&gt; I would add a newline befor eprivate:

Will do.

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2172
&gt;&gt; +                    trailingObjects.setTrailingWhitespace(static_cast&lt;RenderText*&gt;(o));
&gt; 
&gt; do we have a safer toRenderText function to use instead of a direct cast?

Yes but we know that o-&gt;isText() is true because we&apos;re inside if (o-&gt;isText()).  Look around the line 1860; that&apos;s where this giant if clause starts.

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2297
&gt;&gt; +    trailingObjects.addMidpoints(lineMidpointState, lBreak);
&gt; 
&gt; Maybe addMidpoints needs a better name.  Are we adding midpoints to the TrailingObjects?  Or are we adding midpoints based on the trailing objects?  Should this be on MidPointSTate or on the TrailingObjects class?

Does updateMidpoints sound better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397242</commentid>
    <comment_count>4</comment_count>
      <attachid>92097</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 12:00:32 -0700</bug_when>
    <thetext>Comment on attachment 92097
cleanup

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2297
&gt;&gt;&gt; +    trailingObjects.addMidpoints(lineMidpointState, lBreak);
&gt;&gt; 
&gt;&gt; Maybe addMidpoints needs a better name.  Are we adding midpoints to the TrailingObjects?  Or are we adding midpoints based on the trailing objects?  Should this be on MidPointSTate or on the TrailingObjects class?
&gt; 
&gt; Does updateMidpoints sound better?

Try updateMidpointsForTrailingBoxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397252</commentid>
    <comment_count>5</comment_count>
      <attachid>92101</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 12:16:37 -0700</bug_when>
    <thetext>Created attachment 92101
patch for lading</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397253</commentid>
    <comment_count>6</comment_count>
      <attachid>92101</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 12:17:38 -0700</bug_when>
    <thetext>Comment on attachment 92101
patch for lading

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::TrailingObjects::addMidpoints):

Oops. This should be updateMidpointsForTrailingBoxes instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397254</commentid>
    <comment_count>7</comment_count>
      <attachid>92101</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 12:18:20 -0700</bug_when>
    <thetext>Comment on attachment 92101
patch for lading

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

OK.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2297
&gt; +    trailingObjects.updateMidpointsForTrailingBoxes(lineMidpointState, lBreak);

lbreak needs a better name at some point. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397275</commentid>
    <comment_count>8</comment_count>
      <attachid>92101</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 12:49:00 -0700</bug_when>
    <thetext>Comment on attachment 92101
patch for lading

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:-1747
&gt; -                previousLineBrokeCleanly = true;

Oops, I shouldn&apos;t be removing this line :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397319</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-03 13:33:30 -0700</bug_when>
    <thetext>Committed r85649: &lt;http://trac.webkit.org/changeset/85649&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92097</attachid>
            <date>2011-05-03 11:46:07 -0700</date>
            <delta_ts>2011-05-03 12:00:32 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-60046-20110503114606.patch</filename>
            <type>text/plain</type>
            <size>11593</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDUtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIHRyYWlsaW5nU3BhY2VPYmplY3QgYW5kIHRyYWlsaW5n
UG9zaXRpb25lZEJveGVzIGluIGZpbmROZXh0TGluZUJyZWFrIGFzIGEgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDQ2CisKKyAgICAgICAg
RXh0cmFjdGVkIFRyYWlsaW5nT2JqZWN0cyB0aGF0IGVuY2Fwc3VsYXRlcyB0cmFpbGluZ1NwYWNl
T2JqZWN0IGFuZCB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdP
YmplY3RzOjpUcmFpbGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdPYmpl
Y3RzOjpzZXRUcmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdP
YmplY3RzOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFpbGluZ09iamVjdHM6OmFwcGVu
ZEJveElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6YWRkTWlk
cG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVCcmVh
ayk6CisKIDIwMTEtMDUtMDMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gODU2MDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY2MSw2ICsxNjYxLDg0IEBAIHZvaWQgTGluZVdpZHRoOjpmaXRC
ZWxvd0Zsb2F0cygpCiAgICAgfQogfQogCitjbGFzcyBUcmFpbGluZ09iamVjdHMgeworcHVibGlj
OgorICAgIFRyYWlsaW5nT2JqZWN0cygpOworICAgIHZvaWQgc2V0VHJhaWxpbmdXaGl0ZXNwYWNl
KFJlbmRlclRleHQqKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBhcHBlbmRCb3hJZk5l
ZWRlZChSZW5kZXJCb3gqKTsKKyAgICB2b2lkIGFkZE1pZHBvaW50cyhMaW5lTWlkcG9pbnRTdGF0
ZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBsQnJlYWspOworcHJpdmF0ZToKKyAgICBSZW5kZXJU
ZXh0KiBtX3doaXRlc3BhY2U7CisgICAgVmVjdG9yPFJlbmRlckJveCosIDQ+IG1fYm94ZXM7Cit9
OworCitUcmFpbGluZ09iamVjdHM6OlRyYWlsaW5nT2JqZWN0cygpCisgICAgOiBtX3doaXRlc3Bh
Y2UoMCkKK3sKK30KKworaW5saW5lIHZvaWQgVHJhaWxpbmdPYmplY3RzOjpzZXRUcmFpbGluZ1do
aXRlc3BhY2UoUmVuZGVyVGV4dCogd2hpdGVzcGFjZSkKK3sKKyAgICBtX3doaXRlc3BhY2UgPSB3
aGl0ZXNwYWNlOworfQorCitpbmxpbmUgdm9pZCBUcmFpbGluZ09iamVjdHM6OmNsZWFyKCkKK3sK
KyAgICBtX3doaXRlc3BhY2UgPSAwOworICAgIG1fYm94ZXMuY2xlYXIoKTsKK30KKworaW5saW5l
IHZvaWQgVHJhaWxpbmdPYmplY3RzOjphcHBlbmRCb3hJZk5lZWRlZChSZW5kZXJCb3gqIGJveCkK
K3sKKyAgICBpZiAobV93aGl0ZXNwYWNlKQorICAgICAgICBtX2JveGVzLmFwcGVuZChib3gpOwor
fQorCit2b2lkIFRyYWlsaW5nT2JqZWN0czo6YWRkTWlkcG9pbnRzKExpbmVNaWRwb2ludFN0YXRl
JiBsaW5lTWlkcG9pbnRTdGF0ZSwgY29uc3QgSW5saW5lSXRlcmF0b3ImIGxCcmVhaykKK3sKKyAg
ICBpZiAoIW1fd2hpdGVzcGFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBvYmpl
Y3QgaXMgZWl0aGVyIGdvaW5nIHRvIGJlIHBhcnQgb2YgdGhlIGxhc3QgbWlkcG9pbnQsIG9yIGl0
IGlzIGdvaW5nIHRvIGJlIHRoZSBhY3R1YWwgZW5kcG9pbnQuCisgICAgLy8gSW4gYm90aCBjYXNl
cyB3ZSBqdXN0IGRlY3JlYXNlIG91ciBwb3MgYnkgMSBsZXZlbCB0byBleGNsdWRlIHRoZSBzcGFj
ZSwgYWxsb3dpbmcgaXQgdG8gLSBpbiBlZmZlY3QgLSBjb2xsYXBzZSBpbnRvIHRoZSBuZXdsaW5l
LgorICAgIGlmIChsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMgJSAyKSB7CisgICAgICAg
IC8vIEZpbmQgdGhlIHRyYWlsaW5nIHNwYWNlIG9iamVjdCdzIG1pZHBvaW50LgorICAgICAgICBp
bnQgdHJhaWxpbmdTcGFjZU1pZHBvaW50ID0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRz
IC0gMTsKKyAgICAgICAgZm9yICggOyB0cmFpbGluZ1NwYWNlTWlkcG9pbnQgPj0gMCAmJiBsaW5l
TWlkcG9pbnRTdGF0ZS5taWRwb2ludHNbdHJhaWxpbmdTcGFjZU1pZHBvaW50XS5tX29iaiAhPSBt
X3doaXRlc3BhY2U7IC0tdHJhaWxpbmdTcGFjZU1pZHBvaW50KSB7IH0KKyAgICAgICAgQVNTRVJU
KHRyYWlsaW5nU3BhY2VNaWRwb2ludCA+PSAwKTsKKyAgICAgICAgbGluZU1pZHBvaW50U3RhdGUu
bWlkcG9pbnRzW3RyYWlsaW5nU3BhY2VNaWRwb2ludF0ubV9wb3MtLTsKKworICAgICAgICAvLyBO
b3cgbWFrZSBzdXJlIGV2ZXJ5IHNpbmdsZSB0cmFpbGluZ1Bvc2l0aW9uZWRCb3ggZm9sbG93aW5n
IHRoZSB0cmFpbGluZ1NwYWNlTWlkcG9pbnQgcHJvcGVybHkgc3RvcHMgYW5kIHN0YXJ0cyAKKyAg
ICAgICAgLy8gaWdub3Jpbmcgc3BhY2VzLgorICAgICAgICBzaXplX3QgY3VycmVudE1pZHBvaW50
ID0gdHJhaWxpbmdTcGFjZU1pZHBvaW50ICsgMTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2JveGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudE1pZHBv
aW50ID49IGxpbmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cykgeworICAgICAgICAgICAgICAg
IC8vIFdlIGRvbid0IGhhdmUgYSBtaWRwb2ludCBmb3IgdGhpcyBib3ggeWV0LgorICAgICAgICAg
ICAgICAgIElubGluZUl0ZXJhdG9yIGlnbm9yZVN0YXJ0KDAsIG1fYm94ZXNbaV0sIDApOworICAg
ICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7
IC8vIFN0b3AgaWdub3JpbmcuCisgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBv
aW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RhcnQgaWdub3JpbmcgYWdhaW4uCisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lTWlkcG9pbnRTdGF0ZS5t
aWRwb2ludHNbY3VycmVudE1pZHBvaW50XS5tX29iaiA9PSBtX2JveGVzW2ldKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQobGluZU1pZHBvaW50U3RhdGUubWlkcG9pbnRzW2N1cnJlbnRNaWRwb2lu
dCArIDFdLm1fb2JqID09IG1fYm94ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y3VycmVudE1pZHBvaW50ICs9IDI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFsQnJlYWsu
bV9vYmopIHsKKyAgICAgICAgQVNTRVJUKG1fd2hpdGVzcGFjZS0+aXNUZXh0KCkpOworICAgICAg
ICAvLyBBZGQgYSBuZXcgZW5kIG1pZHBvaW50IHRoYXQgc3RvcHMgcmlnaHQgYXQgdGhlIHZlcnkg
ZW5kLgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRlc3BhY2UtPnRleHRMZW5ndGgo
KTsKKyAgICAgICAgdW5zaWduZWQgcG9zID0gbGVuZ3RoID49IDIgPyBsZW5ndGggLSAyIDogVUlO
VF9NQVg7CisgICAgICAgIElubGluZUl0ZXJhdG9yIGVuZE1pZCgwLCBtX3doaXRlc3BhY2UsIHBv
cyk7CisgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBlbmRNaWQpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIElubGluZUl0ZXJhdG9yIGlnbm9yZVN0YXJ0KDAsIG1fYm94ZXNbaV0sIDApOworICAg
ICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8g
U3RvcCBpZ25vcmluZyBzcGFjZXMuCisgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9p
bnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAgICAgICAg
fQorICAgIH0KK30KKwogSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJy
ZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIGJvb2wgZmlyc3RMaW5lLCBib29sJiBp
c0xpbmVFbXB0eSwgTGluZUJyZWFrSXRlcmF0b3JJbmZvJiBsaW5lQnJlYWtJdGVyYXRvckluZm8s
IGJvb2wmIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgaHlwaGVuYXRlZCwgRUNsZWFyKiBjbGVhciwg
RmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIFZlY3RvcjxSZW5kZXJC
b3gqPiYgcG9zaXRpb25lZEJveGVzKQogewpAQCAtMTY4Niw4ICsxNzY0LDcgQEAgSW5saW5lSXRl
cmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgIC8vIGEgcnVuLgogICAgIGJvb2wg
Y3VycmVudENoYXJhY3RlcklzU3BhY2UgPSBmYWxzZTsKICAgICBib29sIGN1cnJlbnRDaGFyYWN0
ZXJJc1dTID0gZmFsc2U7Ci0gICAgUmVuZGVyT2JqZWN0KiB0cmFpbGluZ1NwYWNlT2JqZWN0ID0g
MDsKLSAgICBWZWN0b3I8UmVuZGVyQm94KiwgND4gdHJhaWxpbmdQb3NpdGlvbmVkQm94ZXM7Cisg
ICAgVHJhaWxpbmdPYmplY3RzIHRyYWlsaW5nT2JqZWN0czsKIAogICAgIElubGluZUl0ZXJhdG9y
IGxCcmVhayA9IHJlc29sdmVyLnBvc2l0aW9uKCk7CiAKQEAgLTE3NDMsNyArMTgyMCw4IEBAIElu
bGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgICAgICAv
LyBlbXB0eSBvciBub3QuCiAgICAgICAgICAgICAgICAgaWYgKHByZXZMaW5lQnJva2VDbGVhbmx5
KQogICAgICAgICAgICAgICAgICAgICBpc0xpbmVFbXB0eSA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIHRyYWlsaW5nU3BhY2VPYmplY3QgPSAwOworICAgICAgICAgICAgICAgIHRyYWlsaW5nT2Jq
ZWN0cy5zZXRUcmFpbGluZ1doaXRlc3BhY2UoMCk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IHNob3VsZCB3ZSBjYWxsIHRyYWluaW5nU3BhY2UuY2xlYXIoKSA/CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNMaW5lQnJva2VDbGVhbmx5ID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIGlmICgh
aXNMaW5lRW1wdHkgJiYgY2xlYXIpCkBAIC0xNzkwLDggKzE4NjgsNyBAQCBJbmxpbmVJdGVyYXRv
ciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRN
aWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdG9wIGlnbm9yaW5n
IHNwYWNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2lu
dFN0YXRlLCBpZ25vcmVTdGFydCk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgogICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmFpbGluZ1NwYWNlT2JqZWN0
KQotICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdQb3NpdGlvbmVkQm94ZXMuYXBwZW5k
KGJveCk7CisgICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nT2JqZWN0cy5hcHBlbmRCb3hJZk5l
ZWRlZChib3gpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBw
b3NpdGlvbmVkQm94ZXMuYXBwZW5kKGJveCk7CiAgICAgICAgICAgICB9CkBAIC0xODA4LDggKzE4
ODUsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAg
ICAgICBpZiAoaW5saW5lRmxvd1JlcXVpcmVzTGluZUJveChmbG93Qm94KSkgewogICAgICAgICAg
ICAgICAgIGlzTGluZUVtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5n
U3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VPYmplY3QgPSAwOwot
ICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5jbGVhcigpOworICAg
ICAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKICAgICAgICAgICAgICAg
ICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8s
IDApKTsgLy8gU3RvcCBpZ25vcmluZyBzcGFjZXMuCiAgICAgICAgICAgICAgICAgICAgIGFkZE1p
ZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBJbmxpbmVJdGVyYXRvcigwLCBvLCAwKSk7IC8vIFN0
YXJ0IGlnbm9yaW5nIGFnYWluLgogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGUoKS0+
Y29sbGFwc2VXaGl0ZVNwYWNlKCkgJiYgcmVzb2x2ZXIucG9zaXRpb24oKS5tX29iaiA9PSBvCkBA
IC0xODM5LDggKzE5MTUsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRM
aW5lCiAgICAgICAgICAgICBpZ25vcmluZ1NwYWNlcyA9IGZhbHNlOwogICAgICAgICAgICAgY3Vy
cmVudENoYXJhY3RlcklzU3BhY2UgPSBmYWxzZTsKICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0
ZXJJc1dTID0gZmFsc2U7Ci0gICAgICAgICAgICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gMDsKLSAg
ICAgICAgICAgIHRyYWlsaW5nUG9zaXRpb25lZEJveGVzLmNsZWFyKCk7CisgICAgICAgICAgICB0
cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKIAogICAgICAgICAgICAgLy8gT3B0aW1pemUgZm9yIGEg
Y29tbW9uIGNhc2UuIElmIHdlIGNhbid0IGZpbmQgd2hpdGVzcGFjZSBhZnRlciB0aGUgbGlzdAog
ICAgICAgICAgICAgLy8gaXRlbSwgdGhlbiB0aGlzIGlzIGFsbCBtb290LgpAQCAtMjA5NCwxMiAr
MjE2OSwxMCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChjb2xs
YXBzZVdoaXRlU3BhY2UgJiYgY3VycmVudENoYXJhY3RlcklzU3BhY2UgJiYgIWlnbm9yaW5nU3Bh
Y2VzKQotICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gbzsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmICghby0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgfHwg
IWN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5n
U3BhY2VPYmplY3QgPSAwOwotICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1Bvc2l0aW9uZWRC
b3hlcy5jbGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nT2JqZWN0cy5zZXRUcmFpbGluZ1doaXRlc3BhY2Uo
c3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KG8pKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgh
by0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgfHwgIWN1cnJlbnRDaGFyYWN0ZXJJc1Nw
YWNlKQorICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKKwogICAg
ICAgICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgIGxlbi0tOwogICAgICAgICAgICAg
ICAgIGF0U3RhcnQgPSBmYWxzZTsKQEAgLTIxNTYsMTAgKzIyMjksOCBAQCBJbmxpbmVJdGVyYXRv
ciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAKICAgICAgICAgaWYgKGNoZWNrRm9yQnJlYWsg
JiYgIXdpZHRoLmZpdHNPbkxpbmUoKSkgewogICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBmbG9h
dHMsIHRyeSB0byBnZXQgYmVsb3cgdGhlbS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFj
dGVySXNTcGFjZSAmJiAhaWdub3JpbmdTcGFjZXMgJiYgby0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0
ZVNwYWNlKCkpIHsKLSAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gMDsKLSAg
ICAgICAgICAgICAgICB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5jbGVhcigpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlICYmICFpZ25vcmlu
Z1NwYWNlcyAmJiBvLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgICAg
ICAgICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKIAogICAgICAgICAgICAgaWYgKHdpZHRoLmNv
bW1pdHRlZFdpZHRoKCkpCiAgICAgICAgICAgICAgICAgZ290byBlbmQ7CkBAIC0yMjIyLDQ4ICsy
MjkzLDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogCiAgICAg
Ly8gU2FuaXR5IGNoZWNrIG91ciBtaWRwb2ludHMuCiAgICAgY2hlY2tNaWRwb2ludHMobGluZU1p
ZHBvaW50U3RhdGUsIGxCcmVhayk7Ci0gICAgICAgIAotICAgIGlmICh0cmFpbGluZ1NwYWNlT2Jq
ZWN0KSB7Ci0gICAgICAgIC8vIFRoaXMgb2JqZWN0IGlzIGVpdGhlciBnb2luZyB0byBiZSBwYXJ0
IG9mIHRoZSBsYXN0IG1pZHBvaW50LCBvciBpdCBpcyBnb2luZwotICAgICAgICAvLyB0byBiZSB0
aGUgYWN0dWFsIGVuZHBvaW50LiAgSW4gYm90aCBjYXNlcyB3ZSBqdXN0IGRlY3JlYXNlIG91ciBw
b3MgYnkgMSBsZXZlbCB0bwotICAgICAgICAvLyBleGNsdWRlIHRoZSBzcGFjZSwgYWxsb3dpbmcg
aXQgdG8gLSBpbiBlZmZlY3QgLSBjb2xsYXBzZSBpbnRvIHRoZSBuZXdsaW5lLgotICAgICAgICBp
ZiAobGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzICUgMikgewotICAgICAgICAgICAgLy8g
RmluZCB0aGUgdHJhaWxpbmcgc3BhY2Ugb2JqZWN0J3MgbWlkcG9pbnQuCi0gICAgICAgICAgICBp
bnQgdHJhaWxpbmdTcGFjZU1pZHBvaW50ID0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRz
IC0gMTsKLSAgICAgICAgICAgIGZvciAoIDsgdHJhaWxpbmdTcGFjZU1pZHBvaW50ID49IDAgJiYg
bGluZU1pZHBvaW50U3RhdGUubWlkcG9pbnRzW3RyYWlsaW5nU3BhY2VNaWRwb2ludF0ubV9vYmog
IT0gdHJhaWxpbmdTcGFjZU9iamVjdDsgLS10cmFpbGluZ1NwYWNlTWlkcG9pbnQpIHsgfQotICAg
ICAgICAgICAgQVNTRVJUKHRyYWlsaW5nU3BhY2VNaWRwb2ludCA+PSAwKTsKLSAgICAgICAgICAg
IGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1t0cmFpbGluZ1NwYWNlTWlkcG9pbnRdLm1fcG9z
LS07Ci0KLSAgICAgICAgICAgIC8vIE5vdyBtYWtlIHN1cmUgZXZlcnkgc2luZ2xlIHRyYWlsaW5n
UG9zaXRpb25lZEJveCBmb2xsb3dpbmcgdGhlIHRyYWlsaW5nU3BhY2VNaWRwb2ludCBwcm9wZXJs
eSBzdG9wcyBhbmQgc3RhcnRzIAotICAgICAgICAgICAgLy8gaWdub3Jpbmcgc3BhY2VzLgotICAg
ICAgICAgICAgc2l6ZV90IGN1cnJlbnRNaWRwb2ludCA9IHRyYWlsaW5nU3BhY2VNaWRwb2ludCAr
IDE7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWlsaW5nUG9zaXRpb25l
ZEJveGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNaWRwb2lu
dCA+PSBsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1pZHBvaW50IGZvciB0aGlzIGJveCB5ZXQuCi0gICAgICAg
ICAgICAgICAgICAgIElubGluZUl0ZXJhdG9yIGlnbm9yZVN0YXJ0KHRoaXMsIHRyYWlsaW5nUG9z
aXRpb25lZEJveGVzW2ldLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGlu
ZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KLSAgICAgICAg
ICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsg
Ly8gU3RhcnQgaWdub3JpbmcgYWdhaW4uCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50
TWlkcG9pbnRdLm1fb2JqID09IHRyYWlsaW5nUG9zaXRpb25lZEJveGVzW2ldKTsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlk
cG9pbnQgKyAxXS5tX29iaiA9PSB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlc1tpXSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGN1cnJlbnRNaWRwb2ludCArPSAyOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCFsQnJlYWsubV9vYmogJiYgdHJhaWxpbmdTcGFj
ZU9iamVjdC0+aXNUZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIEFkZCBhIG5ldyBlbmQgbWlkcG9p
bnQgdGhhdCBzdG9wcyByaWdodCBhdCB0aGUgdmVyeSBlbmQuCi0gICAgICAgICAgICBSZW5kZXJU
ZXh0KiB0ZXh0ID0gdG9SZW5kZXJUZXh0KHRyYWlsaW5nU3BhY2VPYmplY3QpOwotICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC0+dGV4dExlbmd0aCgpOwotICAgICAgICAgICAgdW5z
aWduZWQgcG9zID0gbGVuZ3RoID49IDIgPyBsZW5ndGggLSAyIDogVUlOVF9NQVg7Ci0gICAgICAg
ICAgICBJbmxpbmVJdGVyYXRvciBlbmRNaWQoMCwgdHJhaWxpbmdTcGFjZU9iamVjdCwgcG9zKTsK
LSAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBlbmRNaWQpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGlnbm9yZVN0YXJ0Lm1fb2JqID0gdHJhaWxp
bmdQb3NpdGlvbmVkQm94ZXNbaV07Ci0gICAgICAgICAgICAgICAgaWdub3JlU3RhcnQubV9wb3Mg
PSAwOwotICAgICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25v
cmVTdGFydCk7IC8vIFN0b3AgaWdub3Jpbmcgc3BhY2VzLgotICAgICAgICAgICAgICAgIGFkZE1p
ZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7IC8vIFN0YXJ0IGlnbm9yaW5n
IGFnYWluLgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorCisgICAgdHJhaWxpbmdP
YmplY3RzLmFkZE1pZHBvaW50cyhsaW5lTWlkcG9pbnRTdGF0ZSwgbEJyZWFrKTsKIAogICAgIC8v
IFdlIG1pZ2h0IGhhdmUgbWFkZSBsQnJlYWsgYW4gaXRlcmF0b3IgdGhhdCBwb2ludHMgcGFzdCB0
aGUgZW5kCiAgICAgLy8gb2YgdGhlIG9iamVjdC4gRG8gdGhpcyBhZGp1c3RtZW50IHRvIG1ha2Ug
aXQgcG9pbnQgdG8gdGhlIHN0YXJ0Cg==
</data>
<flag name="review"
          id="85031"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92101</attachid>
            <date>2011-05-03 12:16:37 -0700</date>
            <delta_ts>2011-05-03 12:49:00 -0700</delta_ts>
            <desc>patch for lading</desc>
            <filename>bug-60046-20110503121636.patch</filename>
            <type>text/plain</type>
            <size>11645</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjMwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDUtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVuZGxlIHRyYWlsaW5nU3BhY2VPYmplY3QgYW5kIHRyYWlsaW5n
UG9zaXRpb25lZEJveGVzIGluIGZpbmROZXh0TGluZUJyZWFrIGFzIGEgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDQ2CisKKyAgICAgICAg
RXh0cmFjdGVkIFRyYWlsaW5nT2JqZWN0cyB0aGF0IGVuY2Fwc3VsYXRlcyB0cmFpbGluZ1NwYWNl
T2JqZWN0IGFuZCB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdP
YmplY3RzOjpUcmFpbGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdPYmpl
Y3RzOjpzZXRUcmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdP
YmplY3RzOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFpbGluZ09iamVjdHM6OmFwcGVu
ZEJveElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6YWRkTWlk
cG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVCcmVh
ayk6CisKIDIwMTEtMDUtMDMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gODU2MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY2MSw2ICsxNjYxLDg2IEBAIHZvaWQgTGluZVdpZHRoOjpmaXRC
ZWxvd0Zsb2F0cygpCiAgICAgfQogfQogCitjbGFzcyBUcmFpbGluZ09iamVjdHMgeworcHVibGlj
OgorICAgIFRyYWlsaW5nT2JqZWN0cygpOworICAgIHZvaWQgc2V0VHJhaWxpbmdXaGl0ZXNwYWNl
KFJlbmRlclRleHQqKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBhcHBlbmRCb3hJZk5l
ZWRlZChSZW5kZXJCb3gqKTsKKyAgICB2b2lkIHVwZGF0ZU1pZHBvaW50c0ZvclRyYWlsaW5nQm94
ZXMoTGluZU1pZHBvaW50U3RhdGUmLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgbEJyZWFrKTsKKwor
cHJpdmF0ZToKKyAgICBSZW5kZXJUZXh0KiBtX3doaXRlc3BhY2U7CisgICAgVmVjdG9yPFJlbmRl
ckJveCosIDQ+IG1fYm94ZXM7Cit9OworCitUcmFpbGluZ09iamVjdHM6OlRyYWlsaW5nT2JqZWN0
cygpCisgICAgOiBtX3doaXRlc3BhY2UoMCkKK3sKK30KKworaW5saW5lIHZvaWQgVHJhaWxpbmdP
YmplY3RzOjpzZXRUcmFpbGluZ1doaXRlc3BhY2UoUmVuZGVyVGV4dCogd2hpdGVzcGFjZSkKK3sK
KyAgICBBU1NFUlQod2hpdGVzcGFjZSk7CisgICAgbV93aGl0ZXNwYWNlID0gd2hpdGVzcGFjZTsK
K30KKworaW5saW5lIHZvaWQgVHJhaWxpbmdPYmplY3RzOjpjbGVhcigpCit7CisgICAgbV93aGl0
ZXNwYWNlID0gMDsKKyAgICBtX2JveGVzLmNsZWFyKCk7Cit9CisKK2lubGluZSB2b2lkIFRyYWls
aW5nT2JqZWN0czo6YXBwZW5kQm94SWZOZWVkZWQoUmVuZGVyQm94KiBib3gpCit7CisgICAgaWYg
KG1fd2hpdGVzcGFjZSkKKyAgICAgICAgbV9ib3hlcy5hcHBlbmQoYm94KTsKK30KKwordm9pZCBU
cmFpbGluZ09iamVjdHM6OnVwZGF0ZU1pZHBvaW50c0ZvclRyYWlsaW5nQm94ZXMoTGluZU1pZHBv
aW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgbEJyZWFr
KQoreworICAgIGlmICghbV93aGl0ZXNwYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBU
aGlzIG9iamVjdCBpcyBlaXRoZXIgZ29pbmcgdG8gYmUgcGFydCBvZiB0aGUgbGFzdCBtaWRwb2lu
dCwgb3IgaXQgaXMgZ29pbmcgdG8gYmUgdGhlIGFjdHVhbCBlbmRwb2ludC4KKyAgICAvLyBJbiBi
b3RoIGNhc2VzIHdlIGp1c3QgZGVjcmVhc2Ugb3VyIHBvcyBieSAxIGxldmVsIHRvIGV4Y2x1ZGUg
dGhlIHNwYWNlLCBhbGxvd2luZyBpdCB0byAtIGluIGVmZmVjdCAtIGNvbGxhcHNlIGludG8gdGhl
IG5ld2xpbmUuCisgICAgaWYgKGxpbmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cyAlIDIpIHsK
KyAgICAgICAgLy8gRmluZCB0aGUgdHJhaWxpbmcgc3BhY2Ugb2JqZWN0J3MgbWlkcG9pbnQuCisg
ICAgICAgIGludCB0cmFpbGluZ1NwYWNlTWlkcG9pbnQgPSBsaW5lTWlkcG9pbnRTdGF0ZS5udW1N
aWRwb2ludHMgLSAxOworICAgICAgICBmb3IgKCA7IHRyYWlsaW5nU3BhY2VNaWRwb2ludCA+PSAw
ICYmIGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1t0cmFpbGluZ1NwYWNlTWlkcG9pbnRdLm1f
b2JqICE9IG1fd2hpdGVzcGFjZTsgLS10cmFpbGluZ1NwYWNlTWlkcG9pbnQpIHsgfQorICAgICAg
ICBBU1NFUlQodHJhaWxpbmdTcGFjZU1pZHBvaW50ID49IDApOworICAgICAgICBsaW5lTWlkcG9p
bnRTdGF0ZS5taWRwb2ludHNbdHJhaWxpbmdTcGFjZU1pZHBvaW50XS5tX3Bvcy0tOworCisgICAg
ICAgIC8vIE5vdyBtYWtlIHN1cmUgZXZlcnkgc2luZ2xlIHRyYWlsaW5nUG9zaXRpb25lZEJveCBm
b2xsb3dpbmcgdGhlIHRyYWlsaW5nU3BhY2VNaWRwb2ludCBwcm9wZXJseSBzdG9wcyBhbmQgc3Rh
cnRzIAorICAgICAgICAvLyBpZ25vcmluZyBzcGFjZXMuCisgICAgICAgIHNpemVfdCBjdXJyZW50
TWlkcG9pbnQgPSB0cmFpbGluZ1NwYWNlTWlkcG9pbnQgKyAxOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50TWlkcG9pbnQgPj0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1pZHBvaW50IGZvciB0aGlzIGJveCB5ZXQuCisg
ICAgICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdub3JlU3RhcnQoMCwgbV9ib3hlc1tpXSwg
MCk7CisgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9y
ZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KKyAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChs
aW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGxpbmVNaWRwb2lu
dFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlkcG9pbnRdLm1fb2JqID09IG1fYm94ZXNbaV0pOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lTWlkcG9pbnRTdGF0ZS5taWRwb2ludHNbY3VycmVu
dE1pZHBvaW50ICsgMV0ubV9vYmogPT0gbV9ib3hlc1tpXSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjdXJyZW50TWlkcG9pbnQgKz0gMjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
IWxCcmVhay5tX29iaikgeworICAgICAgICBBU1NFUlQobV93aGl0ZXNwYWNlLT5pc1RleHQoKSk7
CisgICAgICAgIC8vIEFkZCBhIG5ldyBlbmQgbWlkcG9pbnQgdGhhdCBzdG9wcyByaWdodCBhdCB0
aGUgdmVyeSBlbmQuCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fd2hpdGVzcGFjZS0+dGV4
dExlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBwb3MgPSBsZW5ndGggPj0gMiA/IGxlbmd0aCAt
IDIgOiBVSU5UX01BWDsKKyAgICAgICAgSW5saW5lSXRlcmF0b3IgZW5kTWlkKDAsIG1fd2hpdGVz
cGFjZSwgcG9zKTsKKyAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGVuZE1p
ZCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ib3hlcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdub3JlU3RhcnQoMCwgbV9ib3hlc1tpXSwg
MCk7CisgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3Rh
cnQpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KKyAgICAgICAgICAgIGFkZE1pZHBvaW50KGxp
bmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgor
ICAgICAgICB9CisgICAgfQorfQorCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5l
eHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9vbCBmaXJzdExpbmUs
IGJvb2wmIGlzTGluZUVtcHR5LCBMaW5lQnJlYWtJdGVyYXRvckluZm8mIGxpbmVCcmVha0l0ZXJh
dG9ySW5mbywgYm9vbCYgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBoeXBoZW5hdGVkLCBFQ2xlYXIq
IGNsZWFyLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgVmVjdG9y
PFJlbmRlckJveCo+JiBwb3NpdGlvbmVkQm94ZXMpCiB7CkBAIC0xNjg2LDggKzE3NjYsNyBAQCBJ
bmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgLy8gYSBydW4uCiAg
ICAgYm9vbCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSA9IGZhbHNlOwogICAgIGJvb2wgY3VycmVu
dENoYXJhY3RlcklzV1MgPSBmYWxzZTsKLSAgICBSZW5kZXJPYmplY3QqIHRyYWlsaW5nU3BhY2VP
YmplY3QgPSAwOwotICAgIFZlY3RvcjxSZW5kZXJCb3gqLCA0PiB0cmFpbGluZ1Bvc2l0aW9uZWRC
b3hlczsKKyAgICBUcmFpbGluZ09iamVjdHMgdHJhaWxpbmdPYmplY3RzOwogCiAgICAgSW5saW5l
SXRlcmF0b3IgbEJyZWFrID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKIApAQCAtMTc0Myw4ICsxODIy
LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAg
ICAgICAgIC8vIGVtcHR5IG9yIG5vdC4KICAgICAgICAgICAgICAgICBpZiAocHJldkxpbmVCcm9r
ZUNsZWFubHkpCiAgICAgICAgICAgICAgICAgICAgIGlzTGluZUVtcHR5ID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgdHJhaWxpbmdTcGFjZU9iamVjdCA9IDA7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXNMaW5lQnJva2VDbGVhbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0cmFpbGluZ09i
amVjdHMuY2xlYXIoKTsKIAogICAgICAgICAgICAgICAgIGlmICghaXNMaW5lRW1wdHkgJiYgY2xl
YXIpCiAgICAgICAgICAgICAgICAgICAgICpjbGVhciA9IG8tPnN0eWxlKCktPmNsZWFyKCk7CkBA
IC0xNzkwLDggKzE4NjgsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRM
aW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0
ZSwgaWdub3JlU3RhcnQpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7IC8v
IFN0YXJ0IGlnbm9yaW5nIGFnYWluLgogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFpbGluZ1NwYWNlT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhaWxpbmdQb3NpdGlvbmVkQm94ZXMuYXBwZW5kKGJveCk7CisgICAgICAgICAgICAgICAg
ICAgIHRyYWlsaW5nT2JqZWN0cy5hcHBlbmRCb3hJZk5lZWRlZChib3gpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkQm94ZXMuYXBwZW5kKGJv
eCk7CiAgICAgICAgICAgICB9CkBAIC0xODA4LDggKzE4ODUsNyBAQCBJbmxpbmVJdGVyYXRvciBS
ZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICBpZiAoaW5saW5lRmxvd1JlcXVp
cmVzTGluZUJveChmbG93Qm94KSkgewogICAgICAgICAgICAgICAgIGlzTGluZUVtcHR5ID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHRyYWlsaW5nU3BhY2VPYmplY3QgPSAwOwotICAgICAgICAgICAgICAgICAgICB0cmFp
bGluZ1Bvc2l0aW9uZWRCb3hlcy5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICB0cmFpbGlu
Z09iamVjdHMuY2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1p
ZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8sIDApKTsgLy8gU3RvcCBpZ25vcmluZyBz
cGFjZXMuCiAgICAgICAgICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRl
LCBJbmxpbmVJdGVyYXRvcigwLCBvLCAwKSk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgJiYg
cmVzb2x2ZXIucG9zaXRpb24oKS5tX29iaiA9PSBvCkBAIC0xODM5LDggKzE5MTUsNyBAQCBJbmxp
bmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICBpZ25vcmlu
Z1NwYWNlcyA9IGZhbHNlOwogICAgICAgICAgICAgY3VycmVudENoYXJhY3RlcklzU3BhY2UgPSBm
YWxzZTsKICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJc1dTID0gZmFsc2U7Ci0gICAgICAg
ICAgICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gMDsKLSAgICAgICAgICAgIHRyYWlsaW5nUG9zaXRp
b25lZEJveGVzLmNsZWFyKCk7CisgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsK
IAogICAgICAgICAgICAgLy8gT3B0aW1pemUgZm9yIGEgY29tbW9uIGNhc2UuIElmIHdlIGNhbid0
IGZpbmQgd2hpdGVzcGFjZSBhZnRlciB0aGUgbGlzdAogICAgICAgICAgICAgLy8gaXRlbSwgdGhl
biB0aGlzIGlzIGFsbCBtb290LgpAQCAtMjA5NCwxMiArMjE2OSwxMCBAQCBJbmxpbmVJdGVyYXRv
ciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChjb2xsYXBzZVdoaXRlU3BhY2UgJiYgY3VycmVu
dENoYXJhY3RlcklzU3BhY2UgJiYgIWlnbm9yaW5nU3BhY2VzKQotICAgICAgICAgICAgICAgICAg
ICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gbzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghby0+
c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkgfHwgIWN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VPYmplY3QgPSAwOwotICAgICAg
ICAgICAgICAgICAgICB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5jbGVhcigpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRyYWls
aW5nT2JqZWN0cy5zZXRUcmFpbGluZ1doaXRlc3BhY2Uoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KG8pKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghby0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0
ZVNwYWNlKCkgfHwgIWN1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICAgICAgICAgICAg
ICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKKwogICAgICAgICAgICAgICAgIHBvcysrOwogICAg
ICAgICAgICAgICAgIGxlbi0tOwogICAgICAgICAgICAgICAgIGF0U3RhcnQgPSBmYWxzZTsKQEAg
LTIxNTYsMTAgKzIyMjksOCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRM
aW5lCiAKICAgICAgICAgaWYgKGNoZWNrRm9yQnJlYWsgJiYgIXdpZHRoLmZpdHNPbkxpbmUoKSkg
ewogICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBmbG9hdHMsIHRyeSB0byBnZXQgYmVsb3cgdGhl
bS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSAmJiAhaWdub3JpbmdT
cGFjZXMgJiYgby0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKLSAgICAgICAgICAg
ICAgICB0cmFpbGluZ1NwYWNlT2JqZWN0ID0gMDsKLSAgICAgICAgICAgICAgICB0cmFpbGluZ1Bv
c2l0aW9uZWRCb3hlcy5jbGVhcigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlICYmICFpZ25vcmluZ1NwYWNlcyAmJiBvLT5zdHlsZSgpLT5j
b2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMuY2xl
YXIoKTsKIAogICAgICAgICAgICAgaWYgKHdpZHRoLmNvbW1pdHRlZFdpZHRoKCkpCiAgICAgICAg
ICAgICAgICAgZ290byBlbmQ7CkBAIC0yMjIyLDQ4ICsyMjkzLDggQEAgSW5saW5lSXRlcmF0b3Ig
UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogCiAgICAgLy8gU2FuaXR5IGNoZWNrIG91ciBtaWRw
b2ludHMuCiAgICAgY2hlY2tNaWRwb2ludHMobGluZU1pZHBvaW50U3RhdGUsIGxCcmVhayk7Ci0g
ICAgICAgIAotICAgIGlmICh0cmFpbGluZ1NwYWNlT2JqZWN0KSB7Ci0gICAgICAgIC8vIFRoaXMg
b2JqZWN0IGlzIGVpdGhlciBnb2luZyB0byBiZSBwYXJ0IG9mIHRoZSBsYXN0IG1pZHBvaW50LCBv
ciBpdCBpcyBnb2luZwotICAgICAgICAvLyB0byBiZSB0aGUgYWN0dWFsIGVuZHBvaW50LiAgSW4g
Ym90aCBjYXNlcyB3ZSBqdXN0IGRlY3JlYXNlIG91ciBwb3MgYnkgMSBsZXZlbCB0bwotICAgICAg
ICAvLyBleGNsdWRlIHRoZSBzcGFjZSwgYWxsb3dpbmcgaXQgdG8gLSBpbiBlZmZlY3QgLSBjb2xs
YXBzZSBpbnRvIHRoZSBuZXdsaW5lLgotICAgICAgICBpZiAobGluZU1pZHBvaW50U3RhdGUubnVt
TWlkcG9pbnRzICUgMikgewotICAgICAgICAgICAgLy8gRmluZCB0aGUgdHJhaWxpbmcgc3BhY2Ug
b2JqZWN0J3MgbWlkcG9pbnQuCi0gICAgICAgICAgICBpbnQgdHJhaWxpbmdTcGFjZU1pZHBvaW50
ID0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzIC0gMTsKLSAgICAgICAgICAgIGZvciAo
IDsgdHJhaWxpbmdTcGFjZU1pZHBvaW50ID49IDAgJiYgbGluZU1pZHBvaW50U3RhdGUubWlkcG9p
bnRzW3RyYWlsaW5nU3BhY2VNaWRwb2ludF0ubV9vYmogIT0gdHJhaWxpbmdTcGFjZU9iamVjdDsg
LS10cmFpbGluZ1NwYWNlTWlkcG9pbnQpIHsgfQotICAgICAgICAgICAgQVNTRVJUKHRyYWlsaW5n
U3BhY2VNaWRwb2ludCA+PSAwKTsKLSAgICAgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLm1pZHBv
aW50c1t0cmFpbGluZ1NwYWNlTWlkcG9pbnRdLm1fcG9zLS07Ci0KLSAgICAgICAgICAgIC8vIE5v
dyBtYWtlIHN1cmUgZXZlcnkgc2luZ2xlIHRyYWlsaW5nUG9zaXRpb25lZEJveCBmb2xsb3dpbmcg
dGhlIHRyYWlsaW5nU3BhY2VNaWRwb2ludCBwcm9wZXJseSBzdG9wcyBhbmQgc3RhcnRzIAotICAg
ICAgICAgICAgLy8gaWdub3Jpbmcgc3BhY2VzLgotICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRN
aWRwb2ludCA9IHRyYWlsaW5nU3BhY2VNaWRwb2ludCArIDE7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRyYWlsaW5nUG9zaXRpb25lZEJveGVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNaWRwb2ludCA+PSBsaW5lTWlkcG9pbnRTdGF0ZS5u
dW1NaWRwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1p
ZHBvaW50IGZvciB0aGlzIGJveCB5ZXQuCi0gICAgICAgICAgICAgICAgICAgIElubGluZUl0ZXJh
dG9yIGlnbm9yZVN0YXJ0KHRoaXMsIHRyYWlsaW5nUG9zaXRpb25lZEJveGVzW2ldLCAwKTsKLSAg
ICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0
YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KLSAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQo
bGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RhcnQgaWdub3JpbmcgYWdhaW4u
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxp
bmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlkcG9pbnRdLm1fb2JqID09IHRyYWls
aW5nUG9zaXRpb25lZEJveGVzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxpbmVN
aWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlkcG9pbnQgKyAxXS5tX29iaiA9PSB0cmFp
bGluZ1Bvc2l0aW9uZWRCb3hlc1tpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGN1cnJlbnRNaWRwb2ludCArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKCFsQnJlYWsubV9vYmogJiYgdHJhaWxpbmdTcGFjZU9iamVjdC0+aXNUZXh0KCkpIHsKLSAg
ICAgICAgICAgIC8vIEFkZCBhIG5ldyBlbmQgbWlkcG9pbnQgdGhhdCBzdG9wcyByaWdodCBhdCB0
aGUgdmVyeSBlbmQuCi0gICAgICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gdG9SZW5kZXJUZXh0
KHRyYWlsaW5nU3BhY2VPYmplY3QpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4
dC0+dGV4dExlbmd0aCgpOwotICAgICAgICAgICAgdW5zaWduZWQgcG9zID0gbGVuZ3RoID49IDIg
PyBsZW5ndGggLSAyIDogVUlOVF9NQVg7Ci0gICAgICAgICAgICBJbmxpbmVJdGVyYXRvciBlbmRN
aWQoMCwgdHJhaWxpbmdTcGFjZU9iamVjdCwgcG9zKTsKLSAgICAgICAgICAgIGFkZE1pZHBvaW50
KGxpbmVNaWRwb2ludFN0YXRlLCBlbmRNaWQpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0cmFpbGluZ1Bvc2l0aW9uZWRCb3hlcy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgICAgIGlnbm9yZVN0YXJ0Lm1fb2JqID0gdHJhaWxpbmdQb3NpdGlvbmVkQm94ZXNbaV07Ci0g
ICAgICAgICAgICAgICAgaWdub3JlU3RhcnQubV9wb3MgPSAwOwotICAgICAgICAgICAgICAgIGFk
ZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7IC8vIFN0b3AgaWdub3Jp
bmcgc3BhY2VzLgotICAgICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRl
LCBpZ25vcmVTdGFydCk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQorCisgICAgdHJhaWxpbmdPYmplY3RzLnVwZGF0ZU1pZHBvaW50c0Zv
clRyYWlsaW5nQm94ZXMobGluZU1pZHBvaW50U3RhdGUsIGxCcmVhayk7CiAKICAgICAvLyBXZSBt
aWdodCBoYXZlIG1hZGUgbEJyZWFrIGFuIGl0ZXJhdG9yIHRoYXQgcG9pbnRzIHBhc3QgdGhlIGVu
ZAogICAgIC8vIG9mIHRoZSBvYmplY3QuIERvIHRoaXMgYWRqdXN0bWVudCB0byBtYWtlIGl0IHBv
aW50IHRvIHRoZSBzdGFydAo=
</data>
<flag name="review"
          id="85036"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="85037"
          type_id="3"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>