<?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>160155</bug_id>
          
          <creation_ts>2016-07-24 22:57:05 -0700</creation_ts>
          <short_desc>AX: AccessibilityRenderObject is adding duplicated children when CSS first-letter is being used.</short_desc>
          <delta_ts>2016-07-25 12:16:17 -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>Accessibility</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>n_wang</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214103</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-24 22:57:05 -0700</bug_when>
    <thetext>Inspect the page: http://www.w3schools.com/cssref/tryit.asp?filename=trycss_sel_firstletter
We can see each paragraph has two accessibility children, both are the same text.

&lt;rdar://problem/27220338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214104</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-24 22:57:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/27519396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214105</commentid>
    <comment_count>2</comment_count>
      <attachid>284463</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-24 23:06:17 -0700</bug_when>
    <thetext>Created attachment 284463
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214106</commentid>
    <comment_count>3</comment_count>
      <attachid>284463</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-07-24 23:08:59 -0700</bug_when>
    <thetext>Comment on attachment 284463
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3144
&gt; +        if (obj-&gt;renderer() &amp;&amp; obj-&gt;renderer()-&gt;isInlineElementContinuation())

shouldn&apos;t nextSibling take care of this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214113</commentid>
    <comment_count>4</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-24 23:44:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 284463 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284463&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3144
&gt; &gt; +        if (obj-&gt;renderer() &amp;&amp; obj-&gt;renderer()-&gt;isInlineElementContinuation())
&gt; 
&gt; shouldn&apos;t nextSibling take care of this case?

I think this case is happened in the firstChild() iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214114</commentid>
    <comment_count>5</comment_count>
      <attachid>284464</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-24 23:56:36 -0700</bug_when>
    <thetext>Created attachment 284464
patch

Moved the check to firstChild()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214115</commentid>
    <comment_count>6</comment_count>
      <attachid>284464</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-07-25 00:02:48 -0700</bug_when>
    <thetext>Comment on attachment 284464
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:226
&gt; +    // Sometimes with CSS first-letter selector, we were adding the same text node twice.

sorry to be a jerk, but this seems like it should be in firstChildConsideringContinuation shouldn&apos;t it

also if firstChild() returns null, how will nextSibling() be called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214120</commentid>
    <comment_count>7</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-25 00:24:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 284464 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284464&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:226
&gt; &gt; +    // Sometimes with CSS first-letter selector, we were adding the same text node twice.
&gt; 
&gt; sorry to be a jerk, but this seems like it should be in
&gt; firstChildConsideringContinuation shouldn&apos;t it
&gt; 
&gt; also if firstChild() returns null, how will nextSibling() be called

I think in this case we don&apos;t want to add children for the inline element continuation. The real node will be handled in its parent level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214121</commentid>
    <comment_count>8</comment_count>
      <attachid>284467</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-25 00:24:32 -0700</bug_when>
    <thetext>Created attachment 284467
patch

review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214122</commentid>
    <comment_count>9</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-25 00:29:02 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created attachment 284467 [details]
&gt; patch
&gt; 
&gt; review comments

Actually I&apos;m not sure if putting this in firstChild() would affect other stuff or not, it passed all the test on my machine. But if we put the check in addChildren() we know for sure that this is the case we don&apos;t want to add it as a child.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214202</commentid>
    <comment_count>10</comment_count>
      <attachid>284467</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-07-25 09:10:42 -0700</bug_when>
    <thetext>Comment on attachment 284467
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:189
&gt; +    // Sometimes with CSS first-letter selector, we were adding the same text node twice.

comment is worded a bit strangely

Can you change it to say why we don&apos;t want to process an inlineElementCont() as the firstChild (the CSS first letter would be noted as an example of that case)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214263</commentid>
    <comment_count>11</comment_count>
      <attachid>284502</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-25 11:10:07 -0700</bug_when>
    <thetext>Created attachment 284502
Patch

Updated the comment and added an anonymous check so that we won&apos;t affect other cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214267</commentid>
    <comment_count>12</comment_count>
      <attachid>284502</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-07-25 11:15:35 -0700</bug_when>
    <thetext>Comment on attachment 284502
Patch

Thanks. Much better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214270</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-07-25 11:16:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 284502 [details]
&gt; Patch
&gt; 
&gt; Thanks. Much better

R+ assuming all tests pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214273</commentid>
    <comment_count>14</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-07-25 11:17:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Comment on attachment 284502 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Thanks. Much better
&gt; 
&gt; R+ assuming all tests pass

Thanks will commit when all tests have passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214295</commentid>
    <comment_count>15</comment_count>
      <attachid>284502</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 12:16:10 -0700</bug_when>
    <thetext>Comment on attachment 284502
Patch

Clearing flags on attachment: 284502

Committed r203694: &lt;http://trac.webkit.org/changeset/203694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214296</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 12:16:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284463</attachid>
            <date>2016-07-24 23:06:17 -0700</date>
            <delta_ts>2016-07-24 23:56:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4893</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTI0ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVy
IGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSB3ZXJlIGFkZGluZyB0aGUgc2FtZSB0ZXh0IG5vZGUgdHdpY2UgaWYgQ1NTIGZp
cnN0LWxldHRlciBzZWxlY3RvciB3YXMgYmVpbmcgdXNlZC4gQWRkZWQgYQorICAgICAgICBjaGVj
ayBmb3IgdGhlIGlubGluZSBjb250aW51YXRpb24gc28gdGhhdCB3ZSBvbmx5IGFkZCBpdCBvbmNl
LiAgICAgICAKKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0
dGVyLWNoaWxkcmVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbik6CisKIDIwMTYtMDctMjQgIE5hbiBXYW5nICA8bl93YW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWDogVmlkZW8gQ29udHJvbHM6IFZvbHVtZSBjYW5ub3QgYmUg
YWRqdXN0ZWQgdXNpbmcgVk8uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIw
MzY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMzksOCArMzEzOSwxMyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkCiAgICAgaWYgKCFjYW5IYXZlQ2hpbGRy
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG9iaiA9IGZpcnN0Q2hpbGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5n
KCkpCisgICAgZm9yIChSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gZmlyc3RDaGls
ZCgpOyBvYmo7IG9iaiA9IG9iai0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAvLyBTb21ldGlt
ZXMgd2l0aCBDU1MgZmlyc3QtbGV0dGVyIHNlbGVjdG9yLCB3ZSB3ZXJlIGFkZGluZyB0aGUgc2Ft
ZSB0ZXh0IG5vZGUgdHdpY2UuCisgICAgICAgIGlmIChvYmotPnJlbmRlcmVyKCkgJiYgb2JqLT5y
ZW5kZXJlcigpLT5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKICAgICAgICAgYWRkQ2hpbGQob2JqLmdldCgpKTsKKyAgICB9CiAg
ICAgCiAgICAgYWRkSGlkZGVuQ2hpbGRyZW4oKTsKICAgICBhZGRBdHRhY2htZW50Q2hpbGRyZW4o
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA3LTI0ICBOYW4gV2FuZyAgPG5f
d2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qg
aXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVyIGlzIGJl
aW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1sZXR0ZXItY2hpbGRyZW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVy
LWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI0ICBOYW4gV2FuZyAgPG5fd2FuZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZpZGVvIENvbnRyb2xzOiBWb2x1bWUgY2Fubm90IGJl
IGFkanVzdGVkIHVzaW5nIFZPLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
Y3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
Y3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorVGVzdCB0ZXh0CisKK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgYWRkaW5n
IGNoaWxkcmVuIGNvcnJlY3RseSB3aGVuIGhhdmluZyBDU1MgZmlyc3QtbGV0dGVyIHNlbGVjdG9y
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQVhSb2xlOiBBWEdyb3VwIEFYVmFs
dWU6IAorICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBUZXN0IHRleHQKK1BBU1MgY29u
dGVudC5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9j
c3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1sZXR0ZXIt
Y2hpbGRyZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorICAgIGZ1bmN0aW9uIGR1bXBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oZWxlbWVudCwgbGV2
ZWwpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3RyaW5nVmFsdWUuaW5kZXhPZignRW5kIG9mIHRl
c3QnKSA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBpbmRl
bnQgPSAiIjsKKyAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZXZlbDsgaysrKSB7IGluZGVu
dCArPSAiICAiOyB9CisgICAgICAgIGRlYnVnKGluZGVudCArIGVsZW1lbnQucm9sZSArICIgIiAr
IGVsZW1lbnQuc3RyaW5nVmFsdWUpOworICAgICAgICB2YXIgY2hpbGRyZW5Db3VudCA9IGVsZW1l
bnQuY2hpbGRyZW5Db3VudDsKKyAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBjaGlsZHJlbkNv
dW50OyBrKyspIHsKKyAgICAgICAgICAgIGlmICghZHVtcEFjY2Vzc2liaWxpdHlDaGlsZHJlbihl
bGVtZW50LmNoaWxkQXRJbmRleChrKSwgbGV2ZWwrMSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKzwvc2NyaXB0
PgorCis8c3R5bGU+CitwOjpmaXJzdC1sZXR0ZXIgeworICAgIGZvbnQtc2l6ZTogMjAwJTsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IGlkPSJib2R5Ij4KKworPGRpdj4KKzxwIGlkPSJ0
ZXh0Ij5UZXN0IHRleHQ8L3A+Cis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0
IHdlIGFyZSBhZGRpbmcgY2hpbGRyZW4gY29ycmVjdGx5IHdoZW4gaGF2aW5nIENTUyBmaXJzdC1s
ZXR0ZXIgc2VsZWN0b3IuIik7CisKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKKyAgICAgICAgZHVtcEFj
Y2Vzc2liaWxpdHlDaGlsZHJlbihjb250ZW50LCAwKTsKKyAgICAgICAgCisgICAgICAgIHNob3Vs
ZEJlKCJjb250ZW50LmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgIH0KKyAgICBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284464</attachid>
            <date>2016-07-24 23:56:36 -0700</date>
            <delta_ts>2016-07-25 00:24:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4803</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTI0ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVy
IGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSB3ZXJlIGFkZGluZyB0aGUgc2FtZSB0ZXh0IG5vZGUgdHdpY2UgaWYgQ1NTIGZp
cnN0LWxldHRlciBzZWxlY3RvciB3YXMgYmVpbmcgdXNlZC4gQWRkZWQgYQorICAgICAgICBjaGVj
ayBmb3IgdGhlIGlubGluZSBjb250aW51YXRpb24gc28gdGhhdCB3ZSBvbmx5IGFkZCBpdCBvbmNl
LiAKKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNo
aWxkcmVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpmaXJzdENoaWxkKToKKwogMjAxNi0wNy0yNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gUmVxdWVzdCBzaG91bGQgYmUgY3JlYXRlZCB3
aXRoIGFueSBIZWFkZXJzSW5pdCBkYXRhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDIwMzY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw2ICsyMjIsMTAgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlcgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSBmaXJzdENoaWxkQ29u
c2lkZXJpbmdDb250aW51YXRpb24oKm1fcmVuZGVyZXIpOworICAgIAorICAgIC8vIFNvbWV0aW1l
cyB3aXRoIENTUyBmaXJzdC1sZXR0ZXIgc2VsZWN0b3IsIHdlIHdlcmUgYWRkaW5nIHRoZSBzYW1l
IHRleHQgbm9kZSB0d2ljZS4KKyAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLT5pc0lu
bGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBJZiBhbiBvYmplY3QgY2FuJ3QgaGF2ZSBjaGlsZHJlbiwgdGhlbiBpdCBpcyB1c2luZyB0
aGlzIG1ldGhvZCB0byBoZWxwCiAgICAgLy8gY2FsY3VsYXRlIHNvbWUgaW50ZXJuYWwgcHJvcGVy
dHkgKGxpa2UgaXRzIGRlc2NyaXB0aW9uKS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3MykKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE2LTA3LTI0ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hl
biBDU1MgZmlyc3QtbGV0dGVyIGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1s
ZXR0ZXItY2hpbGRyZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3
LTI0ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZpZGVvIENv
bnRyb2xzOiBWb2x1bWUgY2Fubm90IGJlIGFkanVzdGVkIHVzaW5nIFZPLgpJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZp
cnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCB0ZXh0CisKK1RoaXMg
dGVzdHMgdGhhdCB3ZSBhcmUgYWRkaW5nIGNoaWxkcmVuIGNvcnJlY3RseSB3aGVuIGhhdmluZyBD
U1MgZmlyc3QtbGV0dGVyIHNlbGVjdG9yLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6IAorICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZh
bHVlOiBUZXN0IHRleHQKK1BBU1MgY29udGVudC5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRl
ci1jaGlsZHJlbi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2Nzcy1maXJzdC1sZXR0ZXItY2hpbGRyZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGR1bXBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW4oZWxlbWVudCwgbGV2ZWwpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3RyaW5n
VmFsdWUuaW5kZXhPZignRW5kIG9mIHRlc3QnKSA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIHZhciBpbmRlbnQgPSAiIjsKKyAgICAgICAgZm9yICh2YXIgayA9IDA7
IGsgPCBsZXZlbDsgaysrKSB7IGluZGVudCArPSAiICAiOyB9CisgICAgICAgIGRlYnVnKGluZGVu
dCArIGVsZW1lbnQucm9sZSArICIgIiArIGVsZW1lbnQuc3RyaW5nVmFsdWUpOworICAgICAgICB2
YXIgY2hpbGRyZW5Db3VudCA9IGVsZW1lbnQuY2hpbGRyZW5Db3VudDsKKyAgICAgICAgZm9yICh2
YXIgayA9IDA7IGsgPCBjaGlsZHJlbkNvdW50OyBrKyspIHsKKyAgICAgICAgICAgIGlmICghZHVt
cEFjY2Vzc2liaWxpdHlDaGlsZHJlbihlbGVtZW50LmNoaWxkQXRJbmRleChrKSwgbGV2ZWwrMSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKzwvc2NyaXB0PgorCis8c3R5bGU+CitwOjpmaXJzdC1sZXR0ZXIgewor
ICAgIGZvbnQtc2l6ZTogMjAwJTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IGlkPSJi
b2R5Ij4KKworPGRpdj4KKzxwIGlkPSJ0ZXh0Ij5UZXN0IHRleHQ8L3A+Cis8L2Rpdj4KKworPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBhZGRpbmcgY2hpbGRyZW4gY29ycmVjdGx5
IHdoZW4gaGF2aW5nIENTUyBmaXJzdC1sZXR0ZXIgc2VsZWN0b3IuIik7CisKKyAgICAgICAgdmFy
IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQiKTsKKyAgICAgICAgZHVtcEFjY2Vzc2liaWxpdHlDaGlsZHJlbihjb250ZW50LCAwKTsK
KyAgICAgICAgCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoaWxkcmVuQ291bnQiLCAiMSIp
OworICAgIH0KKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284467</attachid>
            <date>2016-07-25 00:24:32 -0700</date>
            <delta_ts>2016-07-25 11:10:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4785</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVy
IGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSB3ZXJlIGFkZGluZyB0aGUgc2FtZSB0ZXh0IG5vZGUgdHdpY2UgaWYgQ1NTIGZp
cnN0LWxldHRlciBzZWxlY3RvciB3YXMgYmVpbmcgdXNlZC4gQWRkZWQgYQorICAgICAgICBjaGVj
ayBmb3IgdGhlIGlubGluZSBjb250aW51YXRpb24gc28gdGhhdCB3ZSBvbmx5IGFkZCBpdCBvbmNl
LiAKKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNo
aWxkcmVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdENoaWxkQ29uc2lkZXJpbmdDb250
aW51YXRpb24pOgorCiAyMDE2LTA3LTI0ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNv
bT4KIAogICAgICAgICBNb3ZlIHBhcnNpbmcgb2YgZGlzcGxheSwgZGlzcGxheXN0eWxlIGFuZCBt
YXRodmFyaWFudCBhdHRyaWJ1dGVzIGludG8gTWF0aE1MIGVsZW1lbnQgY2xhc3NlcwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMDM2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsNiArMTg2LDEwIEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdENo
aWxkQ28KIHsKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSByZW5kZXJlci5maXJzdENo
aWxkU2xvdygpOwogCisgICAgLy8gU29tZXRpbWVzIHdpdGggQ1NTIGZpcnN0LWxldHRlciBzZWxl
Y3Rvciwgd2Ugd2VyZSBhZGRpbmcgdGhlIHNhbWUgdGV4dCBub2RlIHR3aWNlLgorICAgIGlmIChm
aXJzdENoaWxkICYmIGZpcnN0Q2hpbGQtPmlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKQor
ICAgICAgICBmaXJzdENoaWxkID0gbnVsbHB0cjsKKyAgICAKICAgICBpZiAoIWZpcnN0Q2hpbGQg
JiYgaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKHJlbmRlcmVyKSkKICAgICAgICAgZmlyc3RDaGls
ZCA9IGZpcnN0Q2hpbGRJbkNvbnRpbnVhdGlvbihkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRl
cmVyKSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY3MykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVy
IGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1sZXR0ZXItY2hpbGRyZW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3Qt
bGV0dGVyLWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI0ICBOYW4gV2FuZyAgPG5f
d2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZpZGVvIENvbnRyb2xzOiBWb2x1bWUgY2Fu
bm90IGJlIGFkanVzdGVkIHVzaW5nIFZPLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJl
bi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCB0ZXh0CisKK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUg
YWRkaW5nIGNoaWxkcmVuIGNvcnJlY3RseSB3aGVuIGhhdmluZyBDU1MgZmlyc3QtbGV0dGVyIHNl
bGVjdG9yLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQVhSb2xlOiBBWEdyb3Vw
IEFYVmFsdWU6IAorICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBUZXN0IHRleHQKK1BB
U1MgY29udGVudC5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1s
ZXR0ZXItY2hpbGRyZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGR1bXBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oZWxlbWVu
dCwgbGV2ZWwpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3RyaW5nVmFsdWUuaW5kZXhPZignRW5k
IG9mIHRlc3QnKSA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZh
ciBpbmRlbnQgPSAiIjsKKyAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZXZlbDsgaysrKSB7
IGluZGVudCArPSAiICAiOyB9CisgICAgICAgIGRlYnVnKGluZGVudCArIGVsZW1lbnQucm9sZSAr
ICIgIiArIGVsZW1lbnQuc3RyaW5nVmFsdWUpOworICAgICAgICB2YXIgY2hpbGRyZW5Db3VudCA9
IGVsZW1lbnQuY2hpbGRyZW5Db3VudDsKKyAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBjaGls
ZHJlbkNvdW50OyBrKyspIHsKKyAgICAgICAgICAgIGlmICghZHVtcEFjY2Vzc2liaWxpdHlDaGls
ZHJlbihlbGVtZW50LmNoaWxkQXRJbmRleChrKSwgbGV2ZWwrMSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKzwv
c2NyaXB0PgorCis8c3R5bGU+CitwOjpmaXJzdC1sZXR0ZXIgeworICAgIGZvbnQtc2l6ZTogMjAw
JTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IGlkPSJib2R5Ij4KKworPGRpdj4KKzxw
IGlkPSJ0ZXh0Ij5UZXN0IHRleHQ8L3A+Cis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IHdlIGFyZSBhZGRpbmcgY2hpbGRyZW4gY29ycmVjdGx5IHdoZW4gaGF2aW5nIENTUyBm
aXJzdC1sZXR0ZXIgc2VsZWN0b3IuIik7CisKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKKyAgICAgICAg
ZHVtcEFjY2Vzc2liaWxpdHlDaGlsZHJlbihjb250ZW50LCAwKTsKKyAgICAgICAgCisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50LmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgIH0KKyAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284502</attachid>
            <date>2016-07-25 11:10:07 -0700</date>
            <delta_ts>2016-07-25 12:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5003</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgaXMgYWRkaW5nIGR1cGxpY2F0ZWQgY2hpbGRyZW4gd2hlbiBDU1MgZmlyc3QtbGV0dGVy
IGlzIGJlaW5nIHVzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSB3ZXJlIGFkZGluZyB0aGUgc2FtZSB0ZXh0IG5vZGUgdHdpY2UgaWYgQ1NTIGZp
cnN0LWxldHRlciBzZWxlY3RvciB3YXMgYmVpbmcgdXNlZC4gQWRkZWQgYQorICAgICAgICBjaGVj
ayBmb3IgdGhlIGlubGluZSBjb250aW51YXRpb24gc28gdGhhdCB3ZSBvbmx5IGFkZCBpdCBvbmNl
LiAKKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNo
aWxkcmVuLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdENoaWxkQ29uc2lkZXJpbmdDb250
aW51YXRpb24pOgorCiAyMDE2LTA3LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIE1lZGlhIGNvbnRyb2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNh
cHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDIwMzY4NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw2ICsxODYs
MTIgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGRDbwogewogICAgIFJl
bmRlck9iamVjdCogZmlyc3RDaGlsZCA9IHJlbmRlcmVyLmZpcnN0Q2hpbGRTbG93KCk7CiAKKyAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIGVuZCBvZiBhIGNvbnRpbnVhdGlvbiBh
cyB0aGUgZmlyc3RDaGlsZCBvZiB0aGUKKyAgICAvLyBhbm9ueW1vdXMgcGFyZW50LCBiZWNhdXNl
IGV2ZXJ5dGhpbmcgaGFzIGFscmVhZHkgYmVlbiBsaW5rZWQgdXAgdmlhIGNvbnRpbnVhdGlvbi4K
KyAgICAvLyBDU1MgZmlyc3QtbGV0dGVyIHNlbGVjdG9yIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyBj
YXNlLgorICAgIGlmIChyZW5kZXJlci5pc0Fub255bW91cygpICYmIGZpcnN0Q2hpbGQgJiYgZmly
c3RDaGlsZC0+aXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpCisgICAgICAgIGZpcnN0Q2hp
bGQgPSBudWxscHRyOworICAgIAogICAgIGlmICghZmlyc3RDaGlsZCAmJiBpc0lubGluZVdpdGhD
b250aW51YXRpb24ocmVuZGVyZXIpKQogICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RDaGlsZElu
Q29udGludWF0aW9uKGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKTsKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjAzNjg2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDctMjUgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBBWDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCBpcyBhZGRpbmcg
ZHVwbGljYXRlZCBjaGlsZHJlbiB3aGVuIENTUyBmaXJzdC1sZXR0ZXIgaXMgYmVpbmcgdXNlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDE1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGlsZHJlbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2Nzcy1maXJzdC1sZXR0ZXItY2hpbGRyZW4u
aHRtbDogQWRkZWQuCisKIDIwMTYtMDctMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgVGhlIHdlYiBwcm9jZXNzIGhhbmdzIHdoZW4gY29tcHV0aW5n
IGVsZW1lbnRzLWJhc2VkIHNuYXAgcG9pbnRzIGZvciBhIGNvbnRhaW5lciB3aXRoIGxhcmdlIG1h
eCBzY3JvbGwgb2Zmc2V0CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jc3Mt
Zmlyc3QtbGV0dGVyLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jc3Mt
Zmlyc3QtbGV0dGVyLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE0IEBACitUZXN0IHRleHQKKworVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBhZGRpbmcgY2hp
bGRyZW4gY29ycmVjdGx5IHdoZW4gaGF2aW5nIENTUyBmaXJzdC1sZXR0ZXIgc2VsZWN0b3IuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitBWFJvbGU6IEFYR3JvdXAgQVhWYWx1ZTog
CisgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IFRlc3QgdGV4dAorUEFTUyBjb250ZW50
LmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Nzcy1m
aXJzdC1sZXR0ZXItY2hpbGRyZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9jc3MtZmlyc3QtbGV0dGVyLWNoaWxkcmVuLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3NzLWZpcnN0LWxldHRlci1jaGls
ZHJlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gZHVtcEFjY2Vzc2liaWxpdHlDaGlsZHJlbihlbGVtZW50LCBsZXZlbCkg
eworICAgICAgICBpZiAoZWxlbWVudC5zdHJpbmdWYWx1ZS5pbmRleE9mKCdFbmQgb2YgdGVzdCcp
ID49IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGluZGVudCA9
ICIiOworICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGxldmVsOyBrKyspIHsgaW5kZW50ICs9
ICIgICI7IH0KKyAgICAgICAgZGVidWcoaW5kZW50ICsgZWxlbWVudC5yb2xlICsgIiAiICsgZWxl
bWVudC5zdHJpbmdWYWx1ZSk7CisgICAgICAgIHZhciBjaGlsZHJlbkNvdW50ID0gZWxlbWVudC5j
aGlsZHJlbkNvdW50OworICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGNoaWxkcmVuQ291bnQ7
IGsrKykgeworICAgICAgICAgICAgaWYgKCFkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVuKGVsZW1l
bnQuY2hpbGRBdEluZGV4KGspLCBsZXZlbCsxKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorPC9zY3JpcHQ+CisK
KzxzdHlsZT4KK3A6OmZpcnN0LWxldHRlciB7CisgICAgZm9udC1zaXplOiAyMDAlOworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKworPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2PgorPHAgaWQ9InRleHQi
PlRlc3QgdGV4dDwvcD4KKzwvZGl2PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgd2Ug
YXJlIGFkZGluZyBjaGlsZHJlbiBjb3JyZWN0bHkgd2hlbiBoYXZpbmcgQ1NTIGZpcnN0LWxldHRl
ciBzZWxlY3Rvci4iKTsKKworICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOworICAgICAgICBkdW1wQWNjZXNz
aWJpbGl0eUNoaWxkcmVuKGNvbnRlbnQsIDApOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUo
ImNvbnRlbnQuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgfQorICAgIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>