<?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>114344</bug_id>
          
          <creation_ts>2013-04-10 02:18:33 -0700</creation_ts>
          <short_desc>Refactor Editor::markAndReplaceFor before fixing autocorrection bugs</short_desc>
          <delta_ts>2013-04-10 12:15:25 -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>HTML Editing</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>114337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>mifenton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>872664</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-10 02:18:33 -0700</bug_when>
    <thetext>Refactor Editor::markAndReplaceFor before fixing autocorrection bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872667</commentid>
    <comment_count>1</comment_count>
      <attachid>197227</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-10 02:23:46 -0700</bug_when>
    <thetext>Created attachment 197227
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872675</commentid>
    <comment_count>2</comment_count>
      <attachid>197230</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-10 02:32:56 -0700</bug_when>
    <thetext>Created attachment 197230
More cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872974</commentid>
    <comment_count>3</comment_count>
      <attachid>197230</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-04-10 11:20:04 -0700</bug_when>
    <thetext>Comment on attachment 197230
More cleanups

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

Looks ok to me. just few nits in the change log.

&gt; Source/WebCore/ChangeLog:8
&gt; +        This patch refactors Editor::markAndReplaceFor so that we can start fixing bugs in a sane staet.

Typo: state.

&gt; Source/WebCore/ChangeLog:12
&gt; +        In particular, shouldMarkSpelling used to be set false when shouldShowCorrectionPanel was true

to false

&gt; Source/WebCore/ChangeLog:14
&gt; +        since shouldMarkSpelling was only referred once after the assignment.

typo referenced.

&gt; Source/WebCore/editing/Editor.cpp:2265
&gt; +            bool existingMarkersPermitReplacement = m_alternativeTextController-&gt;processMarkersOnTextToBeReplacedByResult(&amp;results[i], rangeToReplace.get(), replacedString);

Can this be const as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873045</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-10 11:26:06 -0700</bug_when>
    <thetext>Thanks for the review! Will land after fixing these nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873081</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-10 12:15:25 -0700</bug_when>
    <thetext>Committed r148124: &lt;http://trac.webkit.org/changeset/148124&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197227</attachid>
            <date>2013-04-10 02:23:46 -0700</date>
            <delta_ts>2013-04-10 02:32:54 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-114344-20130410022327.patch</filename>
            <type>text/plain</type>
            <size>14612</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA0LTEwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIEVkaXRvcjo6bWFy
a0FuZFJlcGxhY2VGb3IgYmVmb3JlIGZpeGluZyBhdXRvY29ycmVjdGlvbiBidWdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQzNDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFj
dG9ycyBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IGZpeGlu
ZyBidWdzIGluIGEgc2FuZSBzdGFldC4KKyAgICAgICAgRXh0cmFjdGVkIGlzQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50VHlwZSBhbmQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENo
ZWNraW5nUGFyYWdyYXBoLAorICAgICAgICBhbmQgbWFkZSBjb252ZW5pZW5jZSBsb2NhbCB2YXJp
YWJsZXMgY29uc3QuCisKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2hvdWxkTWFya1NwZWxsaW5n
IHVzZWQgdG8gYmUgc2V0IGZhbHNlIHdoZW4gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB3YXMg
dHJ1ZQorICAgICAgICBpbiBhIG1pZGRsZSBvZiBhIGZ1bmN0aW9uIGJ1dCB0aGlzIHdhcyByZW1v
dmVkIGluIGZhdm9yIG9mIGV4cGxpY2l0bHkgY2hlY2tpbmcgdGhpcyBjb25kaXRpb24gbGF0ZXIK
KyAgICAgICAgc2luY2Ugc2hvdWxkTWFya1NwZWxsaW5nIHdhcyBvbmx5IHJlZmVycmVkIG9uY2Ug
YWZ0ZXIgdGhlIGFzc2lnbm1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5cGUpOiBFeHRyYWN0
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OmNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1Rl
eHRDaGVja2luZ1BhcmFncmFwaCk6IEV4dHJhY3RlZC4gIFVzZWQgaGlnaGVzdEFuY2VzdG9yCisg
ICAgICAgIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0byBtYXRjaCB0aGUgcmVzdCBv
ZiB0aGUgdXAtdG8tZGF0ZSBlZGl0aW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOiBTZWUgYWJvdmUuCisKIDIwMTMtMDQtMTAgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDc3
MTkpOiBGYWlsdXJlcyBpbiB0d28gYTExeSB0ZXN0cyBvbiBHVEsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE0ODA4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzMyw2ICsyMTMzLDQzIEBAIHZvaWQg
RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3IKICAgICBtYXJrQW5kUmVwbGFjZUZv
cihyZXF1ZXN0LCByZXN1bHRzKTsKIH0KIAorc3RhdGljIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVOb25lOgorICAgIGNhc2UgVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOgorICAgIGNhc2UgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVMaW5rOgorICAgIGNhc2Ug
VGV4dENoZWNraW5nVHlwZVF1b3RlOgorICAgIGNhc2UgVGV4dENoZWNraW5nVHlwZURhc2g6Cisg
ICAgY2FzZSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ6CisgICAgY2FzZSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbjoKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlv
blBhbmVsOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxj
aGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdy
YXBoJiBwYXJhZ3JhcGgsIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9SZXBsYWNlLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgp
Cit7CisgICAgQ29udGFpbmVyTm9kZSogc2NvcGUgPSB0b0NvbnRhaW5lck5vZGUoaGlnaGVzdEFu
Y2VzdG9yKHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpLT5zdGFydENvbnRhaW5lcigpKSk7CisK
KyAgICBzaXplX3QgcGFyYWdyYXBoTG9jYXRpb247CisgICAgc2l6ZV90IHBhcmFncmFwaExlbmd0
aDsKKyAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHNjb3Bl
LCBwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5nZXQoKSwgcGFyYWdyYXBoTG9jYXRpb24sIHBh
cmFncmFwaExlbmd0aCk7CisKKyAgICBhcHBseUNvbW1hbmQoU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCkpOworCisgICAgLy8gVGV4
dENoZWNraW5nUGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kIG11dGF0ZWQgRE9NLgorICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1PiwgaHR0
cDovL3dlYmtpdC5vcmcvYi84OTUyNi4KKworICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBo
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBw
YXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSByZXN1bHRMZW5ndGgpOworCisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBo
KFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCksIHJlc3VsdExv
Y2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlKTsKK30KKwog
dm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVl
c3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQog
ewogICAgIEFTU0VSVChyZXF1ZXN0KTsKQEAgLTIxNDAsMTIgKzIxNzcsMTIgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNr
IHRleHRDaGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LT5kYXRhKCkubWFzaygpOwogICAgIFRleHRD
aGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgocmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCByZXF1
ZXN0LT5wYXJhZ3JhcGhSYW5nZSgpKTsKIAotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBib29s
IHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyOwotICAgIGJvb2wgc2hvdWxkTWFya0xpbmsgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUxpbms7Ci0gICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1l
bnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owot
ICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMg
JiBUZXh0Q2hlY2tpbmdUeXBlU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENo
ZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVj
a2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbik7CisgICAgY29uc3QgYm9v
bCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOworICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgY29uc3QgYm9vbCBz
aG91bGRNYXJrTGluayA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlTGlu
azsKKyAgICBjb25zdCBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2lu
Z09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgY29uc3QgYm9vbCBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVj
a2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tG
b3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5n
T3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKTsKIAogICAgIC8vIEV4cGFuZCB0
aGUgcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNr
aW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0LgogICAgIGludCBzZWxlY3Rpb25PZmZzZXQgPSAw
OwpAQCAtMjE2NywzMSArMjIwNCwzMCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
UGFzc1JlZlB0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiB0aGlzIGNoZWNraW5nIGlz
IG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhlciB0
byBtYXJrIG1pc3NwZWxsaW5ncy4KLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkK
LSAgICAgICAgc2hvdWxkTWFya1NwZWxsaW5nID0gZmFsc2U7Ci0KICAgICBpbnQgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0
cy5zaXplKCk7IGkrKykgewotICAgICAgICBpbnQgc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBh
cmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAg
Y29uc3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdFbmQo
KSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jl
c3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgIGludCByZXN1bHRMb2NhdGlvbiA9
IHJlc3VsdC0+bG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBpbnQg
cmVzdWx0TGVuZ3RoID0gcmVzdWx0LT5sZW5ndGg7Ci0gICAgICAgIGJvb2wgcmVzdWx0RW5kc0F0
QW1iaWd1b3VzQm91bmRhcnkgPSBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA+PSAwICYmIHJlc3Vs
dExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID09IGFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0OworICAg
ICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7
CisgICAgICAgIGNvbnN0IGludCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdC0+bG9jYXRpb24gKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0g
cmVzdWx0LT5sZW5ndGg7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1
bHRzW2ldLnJlcGxhY2VtZW50OworICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmln
dW91c0JvdW5kYXJ5ID0gYW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPj0gMCAmJiByZXN1bHRMb2Nh
dGlvbiArIHJlc3VsdExlbmd0aCA9PSBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldDsKIAogICAgICAg
ICAvLyBPbmx5IG1hcmsgbWlzc3BlbGxpbmcgaWY6CiAgICAgICAgIC8vIDEuIEN1cnJlbnQgdGV4
dCBjaGVja2luZyBpc24ndCBkb25lIGZvciBhdXRvY29ycmVjdGlvbiwgaW4gd2hpY2ggY2FzZSBz
aG91bGRNYXJrU3BlbGxpbmcgaXMgZmFsc2UuCiAgICAgICAgIC8vIDIuIFJlc3VsdCBmYWxscyB3
aXRoaW4gc3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVlc3Rpb24g
ZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2UsIHdlIHdv
dWxkIG5vdCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVkIHJpZ2h0
IGFmdGVyIGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxp
bmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRM
b2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdExvY2F0aW9uICsg
cmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFt
YmlndW91c0JvdW5kYXJ5KSB7CisgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgIXNo
b3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcKKyAgICAgICAgICAgICYmIHJlc3VsdExvY2F0aW9uID49IHBhcmFncmFwaC5jaGVj
a2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdS
YW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwog
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOwogICAgICAgICAgICAgaWYgKCFt
X2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1pc3Nw
ZWxsaW5nUmFuZ2UpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbWlz
c3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5h
ZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5n
LCByZXN1bHQtPnJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3Jh
bW1hciAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgcGFyYWdy
YXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsK
KyAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50
KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHNob3Vs
ZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYg
cGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0
aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+
ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRh
aWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CkBAIC0yMjAyLDMwICsyMjM4LDIzIEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHQKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0TG9jYXRpb24gKyBy
ZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiAr
IHJlc3VsdExlbmd0aCA+PSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpCi0gICAgICAgICAgICAg
ICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKLSAgICAgICAg
ICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQotICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gK
LSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgICAgICAmJiBpc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2Fz
ZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwg
c28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0
aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRp
b24gPj0gMCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYm
IChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
fHwgcmVzdWx0LT50eXBlICE9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSkKKyAgICAgICAg
ICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJl
c3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0VHlwZSAhPSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9IHJlc3VsdC0+cmVwbGFjZW1lbnQubGVu
Z3RoKCk7Ci0KICAgICAgICAgICAgIC8vIEFwcGx5IHJlcGxhY2VtZW50IGlmOgogICAgICAgICAg
ICAgLy8gMS4gVGhlIHJlcGxhY2VtZW50IGxlbmd0aCBpcyBub24temVyby4KICAgICAgICAgICAg
IC8vIDIuIFRoZSByZXN1bHQgZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5Lgog
ICAgICAgICAgICAgLy8gICAgKEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcg
aXMgZml4ZWQgYW5kIHRleHQgY2hlY2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCi0gICAgICAgICAg
ICBib29sIGRvUmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudExlbmd0aCA+IDAgJiYgIXJlc3VsdEVu
ZHNBdEFtYmlndW91c0JvdW5kYXJ5OworICAgICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0g
cmVwbGFjZW1lbnQubGVuZ3RoKCkgPiAwICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFy
eTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGgu
c3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZShyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9X
TlNUUkVBTSk7CiAKICAgICAgICAgICAgIC8vIGFkZGluZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBv
bmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5cGVkCiAgICAgICAgICAgICBpbnQgcmVz
dWx0RW5kID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgICAgICBpZiAo
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCisgICAgICAgICAgICBpZiAocmVz
dWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluawogICAgICAgICAgICAgICAgICYmIChzZWxl
Y3Rpb25PZmZzZXQgPiByZXN1bHRFbmQgKyAxIHx8IHNlbGVjdGlvbk9mZnNldCA8PSByZXN1bHRM
b2NhdGlvbikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTIyNDQsMTMgKzIyNzMs
MTQgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdAogICAgICAgICAg
ICAgICAgIC8vIHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgY2FuIGJlIHRydWUgb25seSB3aGVu
IHRoZSBwYW5lbCBpcyBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0
aW9uICsgcmVzdWx0TGVuZ3RoID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugb25seSBzaG93IHRoZSBjb3JyZWN0aW9uIHBhbmVsIG9uIHRoZSBs
YXN0IHdvcmQuCi0gICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci0+c2hvdyhyYW5nZVRvUmVwbGFjZSwgcmVzdWx0LT5yZXBsYWNlbWVudCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+c2hvdyhyYW5nZVRvUmVwbGFj
ZSwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9y
IHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3Ig
cmVwbGFjZW1lbnQuCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAK
KyAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9S
ZXBsYWNlLmdldCgpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub1Jl
cGxhY2UgIT0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNl
bGVjdGlvblRvUmVwbGFjZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjI2
MSwzNSArMjI5MSwyNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoUGFzc1JlZlB0
CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
aWYgKGNhbkVkaXRSaWNobHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKENy
ZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0LT5yZXBs
YWNlbWVudCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5z
ZXJ0VGV4dChyZXN1bHQtPnJlcGxhY2VtZW50LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uVHlwZWQpKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogcm9vdCA9IHBhcmFn
cmFwaC5wYXJhZ3JhcGhSYW5nZSgpLT5zdGFydENvbnRhaW5lcigpOwotICAgICAgICAgICAgICAg
IHdoaWxlIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSByb290LT5wYXJlbnROb2RlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJvb3QgPSBwYXJlbnQ7Ci0KLSAgICAgICAgICAgICAgICBpbnQgcGFy
YWdyYXBoU3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoUmFuZ2U6OmNyZWF0
ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByb290LCAwLCBwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2Uo
KS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoLnBhcmFncmFwaFJhbmdlKCktPnN0YXJ0T2Zm
c2V0KCkpLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoTGVuZ3RoID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6
OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOwotICAgICAgICAg
ICAgICAgIC8vIFJlY2FsY3VsYXRlIG5ld1BhcmFncmFwaFJhbmdlLCBzaW5jZSBTcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kIG1vZGlmaWVzIHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwg
cGFyYWdyYXBoIHJhbmdlIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3pp
bGxhOiA4OTUyNgotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBoUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRvQ29udGFpbmVy
Tm9kZShyb290KSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFj
ZW1lbnRMZW5ndGggLSByZXN1bHRMZW5ndGgpOwotICAgICAgICAgICAgICAgIHBhcmFncmFwaCA9
IFRleHRDaGVja2luZ1BhcmFncmFwaChUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG5ld1BhcmFncmFw
aFJhbmdlLmdldCgpLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpLCBuZXdQYXJh
Z3JhcGhSYW5nZSk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGFwcGx5
Q29tbWFuZChDcmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJl
cGxhY2VtZW50KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAmJiBzaG91bGRJ
bnNlcnRUZXh0KHJlcGxhY2VtZW50LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRpdG9ySW5zZXJ0
QWN0aW9uVHlwZWQpKSB7CisgICAgICAgICAgICAgICAgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVz
ZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKHBhcmFncmFwaCwgcmFuZ2VUb1JlcGxhY2UsIHJl
cGxhY2VtZW50LCByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKwogICAgICAgICAgICAg
ICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmV4aXN0
aW5nQVhPYmplY3RDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBy
b290ID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHJv
b3QsIEFYT2JqZWN0Q2FjaGU6OkFYQXV0b2NvcnJlY3Rpb25PY2N1cmVkLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBvZmZzZXREdWVUb1JlcGxhY2VtZW50ICs9IHJlcGxhY2VtZW50TGVu
Z3RoIC0gcmVzdWx0TGVuZ3RoOworICAgICAgICAgICAgICAgIG9mZnNldER1ZVRvUmVwbGFjZW1l
bnQgKz0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdExvY2F0aW9uIDwgc2VsZWN0aW9uT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudExlbmd0aCAtIHJlc3VsdExlbmd0
aDsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ICs9IHJlcGxhY2VtZW50Lmxl
bmd0aCgpIC0gcmVzdWx0TGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICBpZiAoYW1iaWd1b3Vz
Qm91bmRhcnlPZmZzZXQgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFtYmlndW91c0Jv
dW5kYXJ5T2Zmc2V0ID0gc2VsZWN0aW9uT2Zmc2V0IC0gMTsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4g
ZWFzaWx5IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgogICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCi0gICAg
ICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya0NvcnJlY3Rp
b24ocGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCks
IHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5tYXJrQ29ycmVjdGlvbihwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRp
b24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKSwgcmVwbGFjZWRTdHJpbmcpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197230</attachid>
            <date>2013-04-10 02:32:56 -0700</date>
            <delta_ts>2013-04-10 11:20:03 -0700</delta_ts>
            <desc>More cleanups</desc>
            <filename>bug-114344-20130410023237.patch</filename>
            <type>text/plain</type>
            <size>16450</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA0LTEwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIEVkaXRvcjo6bWFy
a0FuZFJlcGxhY2VGb3IgYmVmb3JlIGZpeGluZyBhdXRvY29ycmVjdGlvbiBidWdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQzNDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFj
dG9ycyBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IGZpeGlu
ZyBidWdzIGluIGEgc2FuZSBzdGFldC4KKyAgICAgICAgRXh0cmFjdGVkIGlzQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50VHlwZSBhbmQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENo
ZWNraW5nUGFyYWdyYXBoLAorICAgICAgICBhbmQgbWFkZSBjb252ZW5pZW5jZSBsb2NhbCB2YXJp
YWJsZXMgY29uc3QuCisKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2hvdWxkTWFya1NwZWxsaW5n
IHVzZWQgdG8gYmUgc2V0IGZhbHNlIHdoZW4gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB3YXMg
dHJ1ZQorICAgICAgICBpbiBhIG1pZGRsZSBvZiBhIGZ1bmN0aW9uIGJ1dCB0aGlzIHdhcyByZW1v
dmVkIGluIGZhdm9yIG9mIGV4cGxpY2l0bHkgY2hlY2tpbmcgdGhpcyBjb25kaXRpb24gbGF0ZXIK
KyAgICAgICAgc2luY2Ugc2hvdWxkTWFya1NwZWxsaW5nIHdhcyBvbmx5IHJlZmVycmVkIG9uY2Ug
YWZ0ZXIgdGhlIGFzc2lnbm1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5cGUpOiBFeHRyYWN0
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OmNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1Rl
eHRDaGVja2luZ1BhcmFncmFwaCk6IEV4dHJhY3RlZC4gIFVzZWQgaGlnaGVzdEFuY2VzdG9yCisg
ICAgICAgIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0byBtYXRjaCB0aGUgcmVzdCBv
ZiB0aGUgdXAtdG8tZGF0ZSBlZGl0aW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOiBTZWUgYWJvdmUuCisKIDIwMTMtMDQtMTAgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDc3
MTkpOiBGYWlsdXJlcyBpbiB0d28gYTExeSB0ZXN0cyBvbiBHVEsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE0ODA4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzMyw2ICsyMTMzLDQzIEBAIHZvaWQg
RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3IKICAgICBtYXJrQW5kUmVwbGFjZUZv
cihyZXF1ZXN0LCByZXN1bHRzKTsKIH0KIAorc3RhdGljIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVOb25lOgorICAgIGNhc2UgVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOgorICAgIGNhc2UgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVMaW5rOgorICAgIGNhc2Ug
VGV4dENoZWNraW5nVHlwZVF1b3RlOgorICAgIGNhc2UgVGV4dENoZWNraW5nVHlwZURhc2g6Cisg
ICAgY2FzZSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ6CisgICAgY2FzZSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbjoKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlv
blBhbmVsOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxj
aGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdy
YXBoJiBwYXJhZ3JhcGgsIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9SZXBsYWNlLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgp
Cit7CisgICAgQ29udGFpbmVyTm9kZSogc2NvcGUgPSB0b0NvbnRhaW5lck5vZGUoaGlnaGVzdEFu
Y2VzdG9yKHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpLT5zdGFydENvbnRhaW5lcigpKSk7CisK
KyAgICBzaXplX3QgcGFyYWdyYXBoTG9jYXRpb247CisgICAgc2l6ZV90IHBhcmFncmFwaExlbmd0
aDsKKyAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHNjb3Bl
LCBwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5nZXQoKSwgcGFyYWdyYXBoTG9jYXRpb24sIHBh
cmFncmFwaExlbmd0aCk7CisKKyAgICBhcHBseUNvbW1hbmQoU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCkpOworCisgICAgLy8gVGV4
dENoZWNraW5nUGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kIG11dGF0ZWQgRE9NLgorICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1PiwgaHR0
cDovL3dlYmtpdC5vcmcvYi84OTUyNi4KKworICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdyYXBo
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBw
YXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSByZXN1bHRMZW5ndGgpOworCisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBo
KFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCksIHJlc3VsdExv
Y2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSksIG5ld1BhcmFncmFwaFJhbmdlKTsKK30KKwog
dm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVl
c3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQog
ewogICAgIEFTU0VSVChyZXF1ZXN0KTsKQEAgLTIxNDAsMTIgKzIxNzcsMTIgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNr
IHRleHRDaGVja2luZ09wdGlvbnMgPSByZXF1ZXN0LT5kYXRhKCkubWFzaygpOwogICAgIFRleHRD
aGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgocmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCByZXF1
ZXN0LT5wYXJhZ3JhcGhSYW5nZSgpKTsKIAotICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBib29s
IHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyOwotICAgIGJvb2wgc2hvdWxkTWFya0xpbmsgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgVGV4dENoZWNraW5nVHlwZUxpbms7Ci0gICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1l
bnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owot
ICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMg
JiBUZXh0Q2hlY2tpbmdUeXBlU2hvd0NvcnJlY3Rpb25QYW5lbDsKLSAgICBib29sIHNob3VsZENo
ZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVj
a2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbik7CisgICAgY29uc3QgYm9v
bCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOworICAgIGNvbnN0IGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgY29uc3QgYm9vbCBz
aG91bGRNYXJrTGluayA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlTGlu
azsKKyAgICBjb25zdCBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2lu
Z09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CisgICAgY29uc3QgYm9vbCBz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVj
a2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tG
b3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCB8fCAodGV4dENoZWNraW5n
T3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKTsKIAogICAgIC8vIEV4cGFuZCB0
aGUgcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNr
aW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0LgogICAgIGludCBzZWxlY3Rpb25PZmZzZXQgPSAw
OwpAQCAtMjE2Nyw2NSArMjIwNCw1NyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
UGFzc1JlZlB0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiB0aGlzIGNoZWNraW5nIGlz
IG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhlciB0
byBtYXJrIG1pc3NwZWxsaW5ncy4KLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkK
LSAgICAgICAgc2hvdWxkTWFya1NwZWxsaW5nID0gZmFsc2U7Ci0KICAgICBpbnQgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0
cy5zaXplKCk7IGkrKykgewotICAgICAgICBpbnQgc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBh
cmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKLSAgICAgICAg
Y29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAg
aW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFj
ZW1lbnQ7Ci0gICAgICAgIGludCByZXN1bHRMZW5ndGggPSByZXN1bHQtPmxlbmd0aDsKLSAgICAg
ICAgYm9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IGFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ID49IDAgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPT0gYW1iaWd1b3Vz
Qm91bmRhcnlPZmZzZXQ7CisgICAgICAgIGNvbnN0IGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0
ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAg
ICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7
CisgICAgICAgIGNvbnN0IGludCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ubG9jYXRpb24g
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3Ro
ID0gcmVzdWx0c1tpXS5sZW5ndGg7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQg
PSByZXN1bHRzW2ldLnJlcGxhY2VtZW50OworICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNB
dEFtYmlndW91c0JvdW5kYXJ5ID0gYW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPj0gMCAmJiByZXN1
bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA9PSBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldDsKIAog
ICAgICAgICAvLyBPbmx5IG1hcmsgbWlzc3BlbGxpbmcgaWY6CiAgICAgICAgIC8vIDEuIEN1cnJl
bnQgdGV4dCBjaGVja2luZyBpc24ndCBkb25lIGZvciBhdXRvY29ycmVjdGlvbiwgaW4gd2hpY2gg
Y2FzZSBzaG91bGRNYXJrU3BlbGxpbmcgaXMgZmFsc2UuCiAgICAgICAgIC8vIDIuIFJlc3VsdCBm
YWxscyB3aXRoaW4gc3BlbGxpbmdSYW5nZS4KICAgICAgICAgLy8gMy4gVGhlIHdvcmQgaW4gcXVl
c3Rpb24gZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LiBGb3IgaW5zdGFuY2Us
IHdlIHdvdWxkIG5vdCBtYXJrCiAgICAgICAgIC8vICAgICJ3b3VsZG4nIiBhcyBtaXNzcGVsbGVk
IHJpZ2h0IGFmdGVyIGFwb3N0cm9waGUgaXMgdHlwZWQuCi0gICAgICAgIGlmIChzaG91bGRNYXJr
U3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBy
ZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdExvY2F0
aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJlc3VsdEVu
ZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CisgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcg
JiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcKKyAgICAgICAgICAgICYmIHJlc3VsdExvY2F0aW9uID49IHBhcmFncmFw
aC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3Bl
bGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49
IDApOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdy
YXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOwogICAgICAgICAgICAg
aWYgKCFtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2Vk
KG1pc3NwZWxsaW5nUmFuZ2UpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNw
ZWxsaW5nLCByZXN1bHQtPnJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRN
YXJrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYg
cGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCkpIHsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRv
Y3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOworICAgICAgICB9IGVsc2UgaWYg
KHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3Vs
dExlbmd0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3Vs
dExvY2F0aW9uID49IDApOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewotICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1t
YXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwotICAg
ICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKSkgewotICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZShyZXN1bHRMb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKTsKLSAg
ICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCksIERvY3Vt
ZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGRldGFpbHMgPSByZXN1bHRzW2ldLmRldGFp
bHM7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgZGV0YWlscy5zaXplKCk7
IGorKykgeworICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCA9IGRl
dGFpbHNbal07CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sZW5ndGggPiAwICYmIGRl
dGFpbC5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNr
aW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5s
ZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gYmFkR3JhbW1hclJh
bmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLmxvY2F0aW9u
LCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5z
dGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihiYWRHcmFt
bWFyUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwudXNlckRlc2Ny
aXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9m
ZnNldCAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpCi0gICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZUxpbmsKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50eXBlID09IFRl
eHRDaGVja2luZ1R5cGVRdW90ZQotICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZURhc2gKLSAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgICB8
fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAg
ICAgICAmJiBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5cGUocmVzdWx0VHlwZSkpIHsKICAg
ICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3QgaGFzIHRvIHRv
dWNoIHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNpbmcgbm9uLXdv
cmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExl
bmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAKLSAgICAgICAgICAgIGlmIChzaG91
bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8
IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgfHwgcmVzdWx0LT50eXBlICE9IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVs
ICYmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8IHNwZWxsaW5nUmFuZ2VFbmRPZmZz
ZXQgfHwgcmVzdWx0VHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9
IHJlc3VsdC0+cmVwbGFjZW1lbnQubGVuZ3RoKCk7Ci0KICAgICAgICAgICAgIC8vIEFwcGx5IHJl
cGxhY2VtZW50IGlmOgogICAgICAgICAgICAgLy8gMS4gVGhlIHJlcGxhY2VtZW50IGxlbmd0aCBp
cyBub24temVyby4KICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgZG9lc24ndCBlbmQgYXQg
YW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8gICAgKEZJWE1FOiB0aGlzIGlz
IHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRleHQgY2hlY2tpbmcgY2FuIGRv
IHRoaXMgZm9yIHVzCi0gICAgICAgICAgICBib29sIGRvUmVwbGFjZW1lbnQgPSByZXBsYWNlbWVu
dExlbmd0aCA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5OworICAgICAgICAg
ICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgPiAwICYmICFyZXN1
bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExl
bmd0aCk7Ci0gICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZShy
YW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CiAKICAgICAgICAgICAgIC8vIGFkZGlu
ZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5
cGVkCiAgICAgICAgICAgICBpbnQgcmVzdWx0RW5kID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRM
ZW5ndGg7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVM
aW5rCisgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluawog
ICAgICAgICAgICAgICAgICYmIChzZWxlY3Rpb25PZmZzZXQgPiByZXN1bHRFbmQgKyAxIHx8IHNl
bGVjdGlvbk9mZnNldCA8PSByZXN1bHRMb2NhdGlvbikpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTIyMzMsNyArMjI2Miw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZv
cihQYXNzUmVmUHQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgU3Ry
aW5nIHJlcGxhY2VkU3RyaW5nID0gcGxhaW5UZXh0KHJhbmdlVG9SZXBsYWNlLmdldCgpKTsKLSAg
ICAgICAgICAgIGJvb2wgZXhpc3RpbmdNYXJrZXJzUGVybWl0UmVwbGFjZW1lbnQgPSBtX2FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXItPnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxhY2VkQnlS
ZXN1bHQocmVzdWx0LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgcmVwbGFjZWRTdHJpbmcpOworICAg
ICAgICAgICAgYm9vbCBleGlzdGluZ01hcmtlcnNQZXJtaXRSZXBsYWNlbWVudCA9IG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRCeVJl
c3VsdCgmcmVzdWx0c1tpXSwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIHJlcGxhY2VkU3RyaW5nKTsK
ICAgICAgICAgICAgIGlmICghZXhpc3RpbmdNYXJrZXJzUGVybWl0UmVwbGFjZW1lbnQpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTIyNDQsNTIgKzIyNzMsNDQgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdAogICAgICAgICAgICAgICAgIC8vIHNob3Vs
ZFNob3dDb3JyZWN0aW9uUGFuZWwgY2FuIGJlIHRydWUgb25seSB3aGVuIHRoZSBwYW5lbCBpcyBh
dmFpbGFibGUuCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoID09IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
V2Ugb25seSBzaG93IHRoZSBjb3JyZWN0aW9uIHBhbmVsIG9uIHRoZSBsYXN0IHdvcmQuCi0gICAg
ICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+c2hvdyhyYW5nZVRv
UmVwbGFjZSwgcmVzdWx0LT5yZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIG1fYWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+c2hvdyhyYW5nZVRvUmVwbGFjZSwgcmVwbGFjZW1lbnQp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHNob3dpbmcgY29ycmVj
dGlvbiBwYW5lbCwgd2UgaWdub3JlIG90aGVyIGNvcnJlY3Rpb24gb3IgcmVwbGFjZW1lbnQuCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub1JlcGxhY2UgIT0gbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvblRvUmVwbGFj
ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rKSB7CisgICAg
ICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluaykgewogICAgICAg
ICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uVG9S
ZXBsYWNlKTsKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBpZiAoY2FuRWRpdFJpY2hseSgpKQotICAgICAgICAgICAgICAgICAgICBhcHBseUNv
bW1hbmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByZXN1
bHQtPnJlcGxhY2VtZW50KSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAmJiBz
aG91bGRJbnNlcnRUZXh0KHJlc3VsdC0+cmVwbGFjZW1lbnQsIHJhbmdlVG9SZXBsYWNlLmdldCgp
LCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiByb290
ID0gcGFyYWdyYXBoLnBhcmFncmFwaFJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHJvb3QtPnBhcmVudE5vZGUo
KSkKLSAgICAgICAgICAgICAgICAgICAgcm9vdCA9IHBhcmVudDsKLQotICAgICAgICAgICAgICAg
IGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChSYW5n
ZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJvb3QsIDAsIHBhcmFncmFwaC5wYXJhZ3Jh
cGhSYW5nZSgpLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS0+
c3RhcnRPZmZzZXQoKSkuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGludCBwYXJhZ3JhcGhMZW5n
dGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgp
LmdldCgpKTsKLSAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXN1bHQtPnJlcGxhY2VtZW50KSk7Ci0g
ICAgICAgICAgICAgICAgLy8gUmVjYWxjdWxhdGUgbmV3UGFyYWdyYXBoUmFuZ2UsIHNpbmNlIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZpZXMgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBv
cmlnaW5hbCBwYXJhZ3JhcGggcmFuZ2UgaXMgbm8gbG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUz
MTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBuZXdQYXJh
Z3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgodG9D
b250YWluZXJOb2RlKHJvb3QpLCBwYXJhZ3JhcGhTdGFydEluZGV4LCBwYXJhZ3JhcGhMZW5ndGgg
KyByZXBsYWNlbWVudExlbmd0aCAtIHJlc3VsdExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcGFy
YWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobmV3
UGFyYWdyYXBoUmFuZ2UuZ2V0KCksIHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCks
IG5ld1BhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1l
bnQoKSwgcmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYm
IHNob3VsZEluc2VydFRleHQocmVwbGFjZW1lbnQsIHJhbmdlVG9SZXBsYWNlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpIHsKKyAgICAgICAgICAgICAgICBjb3JyZWN0U3BlbGxjaGVj
a2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgocGFyYWdyYXBoLCByYW5nZVRvUmVw
bGFjZSwgcmVwbGFjZW1lbnQsIHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworCiAgICAg
ICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEVs
ZW1lbnQqIHJvb3QgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkucm9vdEVkaXRh
YmxlRWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmlj
YXRpb24ocm9vdCwgQVhPYmplY3RDYWNoZTo6QVhBdXRvY29ycmVjdGlvbk9jY3VyZWQsIHRydWUp
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgKz0gcmVwbGFj
ZW1lbnRMZW5ndGggLSByZXN1bHRMZW5ndGg7CisgICAgICAgICAgICAgICAgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKICAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0TG9jYXRpb24gPCBzZWxlY3Rpb25PZmZzZXQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ICs9IHJlcGxhY2VtZW50TGVuZ3RoIC0gcmVz
dWx0TGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIGlmIChh
bWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA+PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgYW1i
aWd1b3VzQm91bmRhcnlPZmZzZXQgPSBzZWxlY3Rpb25PZmZzZXQgLSAxOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rp
b25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCi0gICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5tYXJr
Q29ycmVjdGlvbihwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50
TGVuZ3RoKSwgcmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHRUeXBl
ID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtDb3JyZWN0aW9uKHBhcmFncmFwaC5zdWJyYW5n
ZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpLCByZXBsYWNlZFN0cmluZyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>
<flag name="review"
          id="219303"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>