<?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>139142</bug_id>
          
          <creation_ts>2014-12-01 12:40:08 -0800</creation_ts>
          <short_desc>AX: display:none content exposed to accessibility when aria-hidden is toggled on ancestor element</short_desc>
          <delta_ts>2015-05-26 17:55:26 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1051530</commentid>
    <comment_count>0</comment_count>
      <attachid>242330</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-12-01 12:40:08 -0800</bug_when>
    <thetext>Created attachment 242330
test case

AX: display:none content exposed to accessibility when aria-hidden is toggled on ancestor element

Repro: 

1. Open test case.
2. Navigate to the list with VoiceOver and verify there are only two links.
3. Hide and then show the section.
4. Navigate to the list with VoiceOver and notice there are now three links.

aria-hidden=false should only override display:none on the current element, not on descendant elements.

&lt;rdar://problem/19093687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054026</commentid>
    <comment_count>1</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-12-09 20:07:42 -0800</bug_when>
    <thetext>Chris, what do you think of this (proposed) edit to disambiguate the hidden state? I might need to update the test case but I think it&apos;s much more clear.

http://rawgit.com/w3c/aria/issue-688/aria/aria.html#aria-hidden</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067299</commentid>
    <comment_count>2</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2015-02-05 20:26:20 -0800</bug_when>
    <thetext>https://github.com/w3c/aria/commit/13cf822c68ddf2066da889f403bfd8c5cb55b4bf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075872</commentid>
    <comment_count>3</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2015-03-09 19:42:13 -0700</bug_when>
    <thetext>The important point for this bug is:

- The previous was boolean with false as the default. The new version is true/false/undefined where undefined defers to the renderer. 

WebKit should now check per element:

- If element is rendered and aria-hidden is not true on current element or any ancestor: expose to accessibility API.
- If element is not rendered and aria-hidden=false, walk up the ancestor chain making sure every ancestor element is either rendered or explicitly set as aria-hidden=false. If so, expose the current element to the accessibility API.
- Text nodes should always inherit their parent element&apos;s level of exposure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096710</commentid>
    <comment_count>4</comment_count>
      <attachid>253559</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-05-21 17:18:44 -0700</bug_when>
    <thetext>Created attachment 253559
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097357</commentid>
    <comment_count>5</comment_count>
      <attachid>253559</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-26 11:38:10 -0700</bug_when>
    <thetext>Comment on attachment 253559
patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1310
&gt; +    bool requiresAriaHiddenFalse = !node-&gt;renderer();

Checking the renderer for null is only safe if we know that style is up to date. The rest of what this does is DOM-only and does not depend on style/renderers. Does the caller update style?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1320
&gt; +            if (!testNode-&gt;renderer() &amp;&amp; !equalIgnoringCase(ariaHiddenValue, &quot;false&quot;))
&gt; +                return false;
&gt; +            if (equalIgnoringCase(ariaHiddenValue, &quot;false&quot;))
&gt; +                ariaHiddenFalsePresent = true;

It’s not great to call ariaHiddenFalsePresent twice. Should refactor and only do it once.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1327
&gt; +    if (requiresAriaHiddenFalse &amp;&amp; !ariaHiddenFalsePresent)
&gt; +        return false;
&gt; +    
&gt; +    return true;

If this is the clearest way to write it, I am OK, but it could also be:

    return !requiresAriaHiddenFalse || ariaHiddenFalsePresent;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097556</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-05-26 17:38:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 253559 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253559&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1310
&gt; &gt; +    bool requiresAriaHiddenFalse = !node-&gt;renderer();
&gt; 
&gt; Checking the renderer for null is only safe if we know that style is up to
&gt; date. The rest of what this does is DOM-only and does not depend on
&gt; style/renderers. Does the caller update style?
&gt; 

Yes, it looks like the callers of this method are used when adding children, where we always update the style first

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1320
&gt; &gt; +            if (!testNode-&gt;renderer() &amp;&amp; !equalIgnoringCase(ariaHiddenValue, &quot;false&quot;))
&gt; &gt; +                return false;
&gt; &gt; +            if (equalIgnoringCase(ariaHiddenValue, &quot;false&quot;))
&gt; &gt; +                ariaHiddenFalsePresent = true;
&gt; 
&gt; It’s not great to call ariaHiddenFalsePresent twice. Should refactor and
&gt; only do it once.
&gt; 

Ok

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1327
&gt; &gt; +    if (requiresAriaHiddenFalse &amp;&amp; !ariaHiddenFalsePresent)
&gt; &gt; +        return false;
&gt; &gt; +    
&gt; &gt; +    return true;
&gt; 
&gt; If this is the clearest way to write it, I am OK, but it could also be:
&gt; 
&gt;     return !requiresAriaHiddenFalse || ariaHiddenFalsePresent;

Good idea

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097559</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-05-26 17:53:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/184890</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097560</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-05-26 17:55:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/184891</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>242330</attachid>
            <date>2014-12-01 12:40:08 -0800</date>
            <delta_ts>2014-12-01 12:40:08 -0800</delta_ts>
            <desc>test case</desc>
            <filename>aria-hidden-test.html</filename>
            <type>text/html</type>
            <size>6378</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+Cgk8aHRtbCBsYW5nPSJlbiI+Cgk8aGVhZD4KCQk8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+CgkJPHRpdGxlPkFyaWEtSGlkZGVuIFRlc3Q8L3RpdGxlPgoJCTxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+
CgkJPHNjcmlwdCBzcmM9Imh0dHA6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTIuMS4xLm1pbi5q
cyI+PC9zY3JpcHQ+CgkJPHN0eWxlPgoJCQkuYTExeSB7CgkJCQlwb3NpdGlvbjogYWJzb2x1dGUg
IWltcG9ydGFudDsKCQkJCWhlaWdodDogMXB4OwoJCQkJd2lkdGg6IDFweDsKCQkJCW92ZXJmbG93
OiBoaWRkZW47CgkJCQljbGlwOiByZWN0KDFweCwxcHgsMXB4LDFweCk7CgkJCX0KCgkJCWh0bWwg
ewoJCQkJZm9udC1mYW1pbHk6IFZlcmRhbmEsIHNhbnMtc2VyaWY7CgkJCX0KCgkJCSNwYWdlIHsK
CQkJCXdpZHRoOiAxOHJlbTsKCQkJfQoKCQkJaDEgewoJCQkJZm9udC1zaXplOiAxLjVyZW07CgkJ
CX0KCgkJCWgyIHsKCQkJCWZvbnQtc2l6ZTogMS40cmVtOwoJCQl9CgoJCQluYXYgewoJCQkJd2lk
dGg6IDEwMCU7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiAjNjY2OwoJCQkJY29sb3I6ICNmZmY7CgkJ
CQloZWlnaHQ6IDIuNXJlbTsKCQkJfQoKCQkJbmF2IHVsIHsKCQkJCW1hcmdpbjogMDsKCQkJCXBh
ZGRpbmc6IDA7CgkJCQl3aWR0aDogMTAwJTsKCQkJCXBvc2l0aW9uOiByZWxhdGl2ZTsKCQkJfQoK
CQkJbmF2IHVsIGxpIHsKCQkJCWZsb2F0OiBsZWZ0OwoJCQkJbGlzdC1zdHlsZTogbm9uZTsKCQkJ
CWhlaWdodDogMi41cmVtOwoJCQl9CgoJCQkuYXBwbGVob21lIHsKCQkJCXBvc2l0aW9uOiBhYnNv
bHV0ZTsKCQkJCWxlZnQ6IDcuNzVyZW07CgkJCQlmb250LXNpemU6IDEuM2VtOwoJCQl9CgoJCQlu
YXYgdWwgbGkgYSB7CgkJCQlkaXNwbGF5OiBibG9jazsKCQkJCWhlaWdodDogMi41cmVtOwoJCQkJ
d2lkdGg6IDIuNXJlbTsKCQkJCWxpbmUtaGVpZ2h0OiAyLjVyZW07CgkJCQl0ZXh0LWFsaWduOiBj
ZW50ZXI7CgkJCX0KCgkJCW5hdiBhIHsKCQkJCWNvbG9yOiAjZmZmOwoJCQkJdGV4dC1kZWNvcmF0
aW9uOiBub25lOwoJCQl9CgoJCQlidXR0b24gewoJCQkJd2lkdGg6IDIuNXJlbTsKCQkJCWhlaWdo
dDogMi41cmVtOwoJCQkJbGluZS1oZWlnaHQ6IDIuNXJlbTsKCQkJCWZvbnQtc2l6ZTogMS44cmVt
OwoJCQkJcGFkZGluZzogMDsKCQkJCWJhY2tncm91bmQtY29sb3I6ICM2NjY7CgkJCQljb2xvcjog
I2ZmZjsKCQkJCWJvcmRlcjogbm9uZTsKCQkJfQoKCQkJYnV0dG9uOmhvdmVyIHsKCQkJCWJhY2tn
cm91bmQtY29sb3I6ICMzMzM7CgkJCX0KCgkJCWJ1dHRvbjpmb2N1cyB7CgkJCQliYWNrZ3JvdW5k
LWNvbG9yOiAjMzMzOwoJCQl9CgoJCQlidXR0b246YWZ0ZXIgewoJCQkJY29udGVudDogJ1wwMDNk
JzsKCQkJfQoKCQkJYnV0dG9uLmNvbGxhcHNlOmFmdGVyIHsKICAJCQljb250ZW50OiAnXDI1QjIn
OwogIAkJCWZvbnQtc2l6ZTogMXJlbTsKCQkJfQoKCQkJLm1lbnUgdWwgewoJCQkJbWFyZ2luOiAw
OwoJCQkJcGFkZGluZzogMDsKCQkJfQoKCQkJLm1lbnUgewoJCQkJcG9zaXRpb246IGFic29sdXRl
OwoJCQkJd2lkdGg6IDEwMCU7CgkJCQl0b3A6IC01MHJlbTsKCQkJCWhlaWdodDogMDsKCQkJCWJh
Y2tncm91bmQtY29sb3I6ICM2NjY7CgkJCQljb2xvcjogI2ZmZjsKCQkJfQoKCQkJLnNob3drdm1l
bnUgI2t2IHsKCQkJCXRvcDogMi41cmVtOwoJCQkJaGVpZ2h0OiAyLjVyZW07CgkJCQl0cmFuc2l0
aW9uOiBoZWlnaHQgMC40czsKCQkJfQoKCQkJLnNob3dhdHRybWVudSAjYXR0ciB7CgkJCQl0b3A6
IDIuNXJlbTsKCQkJCWhlaWdodDogMi41cmVtOwoJCQkJdHJhbnNpdGlvbjogaGVpZ2h0IDAuNHM7
CgkJCX0KCgkJCS5tZW51IHVsIGxpIGEgewoJCQkJd2lkdGg6IDRyZW07CgkJCQloZWlnaHQ6IDIu
NXJlbTsKCQkJCXBhZGRpbmc6IDAgMTBweDsKCQkJfQoKCQkJLnRlc3Rjb250ZW50IHsKCQkJCWNs
ZWFyOiBib3RoOwoJCQkJcGFkZGluZzogMzBweCAwOwoJCQkJb3BhY2l0eTogMTsKCQkJfQoKCQkJ
LnRlc3Rjb250ZW50IHVsIHsKCQkJCW1hcmdpbjogMDsKCQkJCXBhZGRpbmc6IDA7CgkJCX0KCgkJ
CS50ZXN0Y29udGVudCBsaSB7CgkJCQlsaXN0LXN0eWxlOiBub25lOwoJCQkJcGFkZGluZzogMnB4
OwoJCQl9CgoJCQkudGVzdGNvbnRlbnQgYSB7CgkJCQljb2xvcjogIzE1ODljOTsKCQkJfQoKCQkJ
LnNob3drdm1lbnUgI2t2Y29udGVudCwgLnNob3dhdHRybWVudSAjYXR0cmNvbnRlbnQgewoJCQkJ
b3BhY2l0eTogMDsKCQkJCXRyYW5zaXRpb246IG9wYWNpdHkgMC40czsKCQkJfQoJCTwvc3R5bGU+
Cgk8L2hlYWQ+Cgk8Ym9keT4KCQk8ZGl2IGlkPSJwYWdlIj4KCQkJPGgxPkFyaWEtSGlkZGVuIFRl
c3Q8L2gxPgoJCQk8cD5XZWJLaXQgc2VlbXMgdG8gZXhwb3NlIGFjY2Vzc2liaWxpdHkgaW5mb3Jt
YXRpb24gZm9yIGNoaWxkIGVsZW1lbnRzIGhpZGRlbiB3aXRoIGRpc3BsYXkgbm9uZSBpZiBhcmlh
LWhpZGRlbiBpcyB0b2dnbGVkIG9uIHRoZSBwYXJlbnQgY29udGFpbmVyLjwvcD4KCQkJPGgyPktl
eS1WYWx1ZSBQYWlyPC9oMj4KCQkJPG5hdj4KCQkJCTx1bD4KCQkJCQk8bGkgY2xhc3M9ImFwcGxl
aG9tZSI+PGEgaHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+76O/PC9hPjwvbGk+CgkJCQkJPGxpPgoJ
CQkJCQk8YnV0dG9uIGlkPSJrZXl2YWx1ZWJ1dHRvbiI+PHNwYW4gY2xhc3M9ImExMXkiPk1lbnU8
L3NwYW4+PC9idXR0b24+CgkJCQkJCTxkaXYgY2xhc3M9Im1lbnUiIGlkPSJrdiIgYXJpYS1oaWRk
ZW49InRydWUiPgoJCQkJCQkJPHVsPgoJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwOi8vc3RvcmUu
YXBwbGUuY29tL3VzIj5TdG9yZTwvYT48L2xpPgoJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwOi8v
c3RvcmUuYXBwbGUuY29tL3VzL2lwaG9uZSI+aVBob25lPC9hPjwvbGk+CgkJCQkJCQkJPGxpPjxh
IGhyZWY9Imh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMvbWFjIj5NYWM8L2E+PC9saT4KCQkJCQkJ
CTwvdWw+CgkJCQkJCTwvZGl2PgoJCQkJCTwvbGk+CgkJCQk8L3VsPgoJCQk8L25hdj4KCQkJPGRp
diBjbGFzcz0idGVzdGNvbnRlbnQiIGlkPSJrdmNvbnRlbnQiPgoJCQkJPHA+V2hlbiB5b3UgZXhw
YW5kIHRoZSBtZW51IHdlJ2xsIGFuaW1hdGUgdGhlIG9wYWNpdHkgdG8gemVybyBhbmQgc2V0IGFy
aWEtaGlkZGVuIHRvIHRydWUuIFdoZW4geW91IGNvbGxhcHNlIHRoZSBtZW51IHdlJ2xsIHNldCB0
aGUgb3BhY2l0eSBiYWNrIHRvIDEgYW5kIDxzdHJvbmc+c2V0IGFyaWEtaGlkZGVuIHRvIGZhbHNl
PC9zdHJvbmc+LjwvcD4KCQkJCTxwPkhlcmUncyBhIGxpc3Qgb2YgbGlua3MsIG9uZSBvZiB3aGlj
aCBpcyBoaWRkZW4gd2l0aCBkaXNwbGF5IG5vbmUuIEFmdGVyIHlvdSd2ZSBleHBhbmRlZCBhbmQg
Y29sbGFwc2VkIHRoZSBtZW51IG9uY2UsIHRoZSBkaXNwbGF5IG5vbmUgY29udGVudCBleHBvc2Vz
IGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gd2hpY2ggaXMgdW5leHBlY3RlZC48L3A+CgkJCQk8
dWw+CgkJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMiPlN0b3JlPC9h
PjwvbGk+CgkJCQkJPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YSBocmVmPSJodHRwOi8vc3Rv
cmUuYXBwbGUuY29tL3VzL2lwaG9uZSI+aVBob25lPC9hPjwvbGk+CgkJCQkJPGxpPjxhIGhyZWY9
Imh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMvbWFjIj5NYWM8L2E+PC9saT4KCQkJCTwvdWw+CgkJ
CTwvZGl2PgoJCQk8aDI+QWRkaW5nIC8gUmVtb3ZpbmcgQXR0cmlidXRlPC9oMj4KCQkJPG5hdj4K
CQkJCTx1bD4KCQkJCQk8bGkgY2xhc3M9ImFwcGxlaG9tZSI+PGEgaHJlZj0iaHR0cDovL2FwcGxl
LmNvbSI+76O/PC9hPjwvbGk+CgkJCQkJPGxpPgoJCQkJCQk8YnV0dG9uIGlkPSJhdHRyaWJ1dGVi
dXR0b24iPjxzcGFuIGNsYXNzPSJhMTF5Ij5NZW51PC9zcGFuPjwvYnV0dG9uPgoJCQkJCQk8ZGl2
IGNsYXNzPSJtZW51IiBpZD0iYXR0ciIgYXJpYS1oaWRkZW49InRydWUiPgoJCQkJCQkJPHVsPgoJ
CQkJCQkJCTxsaT48YSBocmVmPSJodHRwOi8vc3RvcmUuYXBwbGUuY29tL3VzIj5TdG9yZTwvYT48
L2xpPgoJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwOi8vc3RvcmUuYXBwbGUuY29tL3VzL2lwaG9u
ZSI+aVBob25lPC9hPjwvbGk+CgkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdG9yZS5hcHBs
ZS5jb20vdXMvbWFjIj5NYWM8L2E+PC9saT4KCQkJCQkJCTwvdWw+CgkJCQkJCTwvZGl2PgoJCQkJ
CTwvbGk+CgkJCQk8L3VsPgoJCQk8L25hdj4KCQkJPGRpdiBjbGFzcz0idGVzdGNvbnRlbnQiIGlk
PSJhdHRyY29udGVudCI+CgkJCQk8cD5XaGVuIHlvdSBleHBhbmQgdGhlIG1lbnUgd2UnbGwgYW5p
bWF0ZSB0aGUgb3BhY2l0eSB0byB6ZXJvIGFuZCBzZXQgYXJpYS1oaWRkZW4gdG8gdHJ1ZS4gV2hl
biB5b3UgY29sbGFwc2UgdGhlIG1lbnUgd2UnbGwgc2V0IHRoZSBvcGFjaXR5IGJhY2sgdG8gMSBh
bmQgPHN0cm9uZz5yZW1vdmUgdGhlIGFyaWEtaGlkZGVuIGF0dHJpYnV0ZTwvc3Ryb25nPi48L3A+
CgkJCQk8cD5IZXJlJ3MgYSBsaXN0IG9mIGxpbmtzLCBvbmUgb2Ygd2hpY2ggaXMgaGlkZGVuIHdp
dGggZGlzcGxheSBub25lLiBBZnRlciB5b3UndmUgZXhwYW5kZWQgYW5kIGNvbGxhcHNlZCB0aGUg
bWVudSBvbmNlLCB0aGUgZGlzcGxheSBub25lIGNvbnRlbnQgc3RpbGwgZG9lc24ndCBleHBvc2Ug
YWNjZXNzaWJpbGl0eSBpbmZvcm1hdGlvbiBhcyBleHBlY3RlZC48L3A+CgkJCQk8dWw+CgkJCQkJ
PGxpPjxhIGhyZWY9Imh0dHA6Ly9zdG9yZS5hcHBsZS5jb20vdXMiPlN0b3JlPC9hPjwvbGk+CgkJ
CQkJPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YSBocmVmPSJodHRwOi8vc3RvcmUuYXBwbGUu
Y29tL3VzL2lwaG9uZSI+aVBob25lPC9hPjwvbGk+CgkJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9z
dG9yZS5hcHBsZS5jb20vdXMvbWFjIj5NYWM8L2E+PC9saT4KCQkJCTwvdWw+CgkJCTwvZGl2PgoJ
CQk8c2NyaXB0PgoJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQkJdmFyIGtl
eXZhbHVlYnV0dG9uID0gJCgnI2tleXZhbHVlYnV0dG9uJyksIGtleXZhbHVlbWVudSA9ICQoJyNr
dicpLCBrdmNvbnRlbnQgPSAkKCcja3Zjb250ZW50JyksIGF0dHJpYnV0ZWJ1dHRvbiA9ICQoJyNh
dHRyaWJ1dGVidXR0b24nKSwgYXR0cmlidXRlbWVudSA9ICQoJ2F0dHInKSwgYXR0cmNvbnRlbnQg
PSAkKCcjYXR0cmNvbnRlbnQnKTsKCQkJCQkKCQkJCQkkKGtleXZhbHVlYnV0dG9uKS5jbGljayhm
dW5jdGlvbihlKSB7CgkJCQkJCSQodGhpcykudG9nZ2xlQ2xhc3MoJ2NvbGxhcHNlJyk7CgkJCQkJ
CSQoJ2JvZHknKS50b2dnbGVDbGFzcygnc2hvd2t2bWVudScpOwoKCQkJCQkJaWYgKCQoa3YpLmF0
dHIoJ2FyaWEtaGlkZGVuJykgPT09IHVuZGVmaW5lZCB8fCAkKGt2KS5hdHRyKCdhcmlhLWhpZGRl
bicpID09PSAnZmFsc2UnKSB7CgkJCQkJCQkkKGt2KS5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVl
Jyk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkKGt2KS5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxz
ZScpOwoJCQkJCQl9OwoKCQkJCQkJaWYgKCQoa3Zjb250ZW50KS5hdHRyKCdhcmlhLWhpZGRlbicp
ID09PSB1bmRlZmluZWQgfHwgJChrdmNvbnRlbnQpLmF0dHIoJ2FyaWEtaGlkZGVuJykgPT09ICdm
YWxzZScpIHsKCQkJCQkJCSQoa3Zjb250ZW50KS5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7
CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkKGt2Y29udGVudCkuYXR0cignYXJpYS1oaWRkZW4nLCAn
ZmFsc2UnKTsKCQkJCQkJfTsKCQkJCQl9KTsKCgkJCQkJJChhdHRyaWJ1dGVidXR0b24pLmNsaWNr
KGZ1bmN0aW9uKGUpIHsKCQkJCQkJJCh0aGlzKS50b2dnbGVDbGFzcygnY29sbGFwc2UnKTsKCQkJ
CQkJJCgnYm9keScpLnRvZ2dsZUNsYXNzKCdzaG93YXR0cm1lbnUnKTsKCgkJCQkJCWlmICgkKGF0
dHIpLmF0dHIoJ2FyaWEtaGlkZGVuJykgPT09IHVuZGVmaW5lZCkgewoJCQkJCQkJJChhdHRyKS5h
dHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkKGF0dHIp
LnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuJyk7CgkJCQkJCX07CgoJCQkJCQlpZiAoJChhdHRyY29u
dGVudCkuYXR0cignYXJpYS1oaWRkZW4nKSA9PT0gdW5kZWZpbmVkKSB7CgkJCQkJCQkkKGF0dHJj
b250ZW50KS5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJ
CQkkKGF0dHJjb250ZW50KS5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbicpOwoJCQkJCQl9OwoJCQkJ
CX0pOwoJCQkJfSk7CgkJCTwvc2NyaXB0PgoJCTwvZGl2PgoJPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253559</attachid>
            <date>2015-05-21 17:18:44 -0700</date>
            <delta_ts>2015-05-26 11:38:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9310</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDczNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA1LTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGRpc3BsYXk6bm9u
ZSBjb250ZW50IGV4cG9zZWQgdG8gYWNjZXNzaWJpbGl0eSB3aGVuIGFyaWEtaGlkZGVuIGlzIHRv
Z2dsZWQgb24gYW5jZXN0b3IgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgIAorICAgICAgICBBbWVuZCB0aGUgY29kZSB0aGF0IGRldGVybWluZXMgd2hl
biBhbiBpbnZpc2libGUsIGJ1dCBhcmlhLWhpZGRlbj1mYWxzZSwgZWxlbWVudCBpcyBleHBvc2Vk
IHRvIGFjY2Vzc2liaWxpdHkuCisKKyAgICAgICAgVGhlIG5ldyBndWlkZWxpbmUgaXMgdGhhdCB5
b3UgbXVzdCBoYXZlIGFyaWEtaGlkZGVuPWZhbHNlIG9uIGV2ZXJ5IG5vZGUgdGhhdCBpcyBub3Qg
cmVuZGVyZWQgKGV4Y2VwdCB0ZXh0IHdoaWNoIGluaGVyaXRzKQorICAgICAgICBvdGhlcndpc2Ug
dGhlIGVsZW1lbnQgd2lsbCBub3QgYmUgdmlzaWJsZS4KKworICAgICAgICBNb2RpZmllZCBleGlz
dGluZyB0ZXN0OiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWZhbHNlLXdvcmtzLWluLXN1YnRy
ZWVzLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc05vZGVBcmlhVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyb290V2ViQXJlYSk6CisKIDIwMTUtMDUtMjEgIEpha2UgTmllbHNlbiAg
PGphY29iX25pZWxzZW5AYXBwbGUuY29tPgogCiAgICAgICAgIHIxODQ3MTggYW5kIHIxODQ3MjUg
Y2F1c2VkIGZvdXIgdGVzdHMgdG8gYmVnaW4gY3Jhc2hpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTg0Njc1KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwMCwyMCArMTMwMCwzMSBAQAogewogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFRvIGRldGVybWluZSBpZiBhIG5vZGUgaXMg
QVJJQSB2aXNpYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBwYXJlbnQgaGllcmFyY2h5IHRvIHNl
ZSBpZiBhbnlvbmUgc3BlY2lmaWVzCi0gICAgLy8gYXJpYS1oaWRkZW4gZXhwbGljaXRseS4KKwor
ICAgIC8vIEFSSUEgTm9kZSB2aXNpYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgYXJpYS1oaWRkZW4K
KyAgICAvLyAgMSkgaWYgYXJpYS1oaWRkZW49dHJ1ZSwgdGhlIHdob2xlIHN1YnRyZWUgaXMgaGlk
ZGVuCisgICAgLy8gIDIpIGlmIGFyaWEtaGlkZGVuPWZhbHNlLCBhbmQgdGhlIG9iamVjdCBpcyBy
ZW5kZXJlZCwgdGhlcmUncyBubyBlZmZlY3QKKyAgICAvLyAgMykgaWYgYXJpYS1oaWRkZW49ZmFs
c2UsIGFuZCB0aGUgb2JqZWN0IGlzIE5PVCByZW5kZXJlZCwgdGhlbiBpdCBtdXN0IGhhdmUKKyAg
ICAvLyAgICAgYXJpYS1oaWRkZW49ZmFsc2Ugb24gZWFjaCBwYXJlbnQgdW50aWwgaXQgZ2V0cyB0
byBhIHJlbmRlcmVkIG9iamVjdAorICAgIC8vICAzYikgYSB0ZXh0IG5vZGUgaW5oZXJpdHMgYSBw
YXJlbnRzIGFyaWEtaGlkZGVuIHZhbHVlCisgICAgYm9vbCByZXF1aXJlc0FyaWFIaWRkZW5GYWxz
ZSA9ICFub2RlLT5yZW5kZXJlcigpOworICAgIGJvb2wgYXJpYUhpZGRlbkZhbHNlUHJlc2VudCA9
IGZhbHNlOwogICAgIGZvciAoTm9kZSogdGVzdE5vZGUgPSBub2RlOyB0ZXN0Tm9kZTsgdGVzdE5v
ZGUgPSB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChpczxFbGVtZW50Pigq
dGVzdE5vZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFIaWRkZW5W
YWx1ZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCp0ZXN0Tm9kZSkuZmFzdEdldEF0dHJpYnV0ZShhcmlh
X2hpZGRlbkF0dHIpOwotICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFIaWRk
ZW5WYWx1ZSwgImZhbHNlIikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYUhpZGRlblZhbHVlLCAidHJ1ZSIpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghdGVzdE5vZGUtPnJl
bmRlcmVyKCkgJiYgIWVxdWFsSWdub3JpbmdDYXNlKGFyaWFIaWRkZW5WYWx1ZSwgImZhbHNlIikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGFyaWFIaWRkZW5WYWx1ZSwgImZhbHNlIikpCisgICAgICAgICAgICAgICAgYXJp
YUhpZGRlbkZhbHNlUHJlc2VudCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChyZXF1aXJlc0FyaWFIaWRkZW5GYWxzZSAmJiAhYXJpYUhp
ZGRlbkZhbHNlUHJlc2VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biB0cnVlOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290V2Vi
QXJlYSgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODQ3MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwxNCBAQAogMjAxNS0wNS0yMSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCisgICAgICAgIEFYOiBkaXNwbGF5Om5vbmUg
Y29udGVudCBleHBvc2VkIHRvIGFjY2Vzc2liaWxpdHkgd2hlbiBhcmlhLWhpZGRlbiBpcyB0b2dn
bGVkIG9uIGFuY2VzdG9yIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzOTE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1mYWxzZS13b3Jrcy1p
bi1zdWJ0cmVlcy5odG1sOgorCisyMDE1LTA1LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CisKICAgICAgICAgQVg6IGltcHJvdmUgbGlzdCBoZXVyaXN0aWNzIChwcmVz
ZW50YXRpb25hbCB1c2UgdmVyc3VzIGFjdHVhbCBsaXN0cykKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDE4NwogCkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWZhbHNlLXdvcmtzLWluLXN1YnRyZWVzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1mYWxzZS13
b3Jrcy1pbi1zdWJ0cmVlcy5odG1sCShyZXZpc2lvbiAxODQ2NzUpCisrKyBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWZhbHNlLXdvcmtzLWluLXN1YnRyZWVzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTUsMjAgKzUsNTkgQEAKIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4K
IAorPGRpdiBpZD0iY29udGVudCI+CisKIDxkaXYgaGlkZGVuIGFyaWEtaGlkZGVuPSJmYWxzZSIg
YXJpYS1sYWJlbD0iZ3JvdXAwIj4KICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFi
ZWw9Imdyb3VwMSI+CiAgICAgICBpZ25vcmUgbWUKICAgIDwvZGl2PgotICAgPGRpdiByb2xlPSJn
cm91cCIgYXJpYS1sYWJlbD0iZ3JvdXAyIj4KLSAgICAgPGRpdiByb2xlPSJidXR0b24iIGFyaWEt
bGFiZWw9ImJ1dHRvbjEiPmJ1dHRvbjwvZGl2PgorICAgPGRpdiBhcmlhLWhpZGRlbj0iZmFsc2Ui
IHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJncm91cDIiPgorICAgICA8ZGl2IGFyaWEtaGlkZGVu
PSJmYWxzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJidXR0b24xIj5idXR0b248L2Rpdj4K
ICAgICAgZG9uJ3QgaWdub3JlIG1lCiAgIDwvZGl2PgogPC9kaXY+CiAKKzwhLS0gVGhlIHRleHQg
bm9kZSBzaG91bGQgYmUgdmlzaWJsZSBiZWNhdXNlIGl0IGluaGVyaXRzIGZyb20gdGhlIHBhcmVu
dCAtLT4KKzxkaXYgaWQ9Imdyb3VwMyIgaGlkZGVuIGFyaWEtaGlkZGVuPSJmYWxzZSI+Cit0ZXh0
MworPC9kaXY+CisKKzwhLS0gVGhlIHRleHQgbm9kZSBzaG91bGQgYmUgdmlzaWJsZSBiZWNhdXNl
IGl0IGluaGVyaXRzIGZyb20gdGhlIHBhcmVudCwgYW5kIGFsbCBwYXJlbnRzIG5lZWQgYXJpYS1o
aWRkZW49ZmFsc2UgLS0+Cis8ZGl2IGlkPSJncm91cDQiIGhpZGRlbiBhcmlhLWhpZGRlbj0iZmFs
c2UiPgorICA8ZGl2IHJvbGU9Imdyb3VwIiBoaWRkZW4gYXJpYS1oaWRkZW49ImZhbHNlIj4KKyAg
ICB0ZXh0NAorICA8L2Rpdj4KKzwvZGl2PgorCis8IS0tIFRoZSB0ZXh0IG5vZGUgc2hvdWxkIE5P
VCBiZSB2aXNpYmxlIGJlY2F1c2UgaXQgaW5oZXJpdHMgZnJvbSB0aGUgcGFyZW50LCBhbmQgYWxs
IHBhcmVudHMgbmVlZCBhcmlhLWhpZGRlbj1mYWxzZSAtLT4KKzxkaXYgaWQ9Imdyb3VwNSIgcm9s
ZT0iZ3JvdXAiPgorICA8ZGl2IGhpZGRlbj4KKyAgICA8ZGl2IHJvbGU9Imdyb3VwIiBoaWRkZW4g
YXJpYS1oaWRkZW49ImZhbHNlIj4KKyAgICAgIHRleHQ1CisgICAgPC9kaXY+CisgIDwvZGl2Pgor
PC9kaXY+CisKKzwhLS0gVGhlIGJ1dHRvbiBpbnNpZGUgc2hvdWxkIE5PVCBiZSB2aXNpYmxlIGJl
Y2F1c2UgaXQgaXMgbm90IG1hcmtlZCBhcyBhcmlhLWhpZGRlbiAtLT4KKzxkaXYgaWQ9Imdyb3Vw
NiIgaGlkZGVuIGFyaWEtaGlkZGVuPSJmYWxzZSI+CisgIDxkaXYgYXJpYS1oaWRkZW49ImZhbHNl
Ij4KKyAgICAgPGJ1dHRvbj5idXR0b248L2J1dHRvbj4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPCEt
LSBUaGUgYnV0dG9uIGluc2lkZSBzaG91bGQgYmUgdmlzaWJsZSBiZWNhdXNlIGl0IGlzIG1hcmtl
ZCBhcyBhcmlhLWhpZGRlbiBhbmQgYWxsIGl0cyBwYXJlbnRzIGFyZSB0b28gLS0+Cis8ZGl2IGlk
PSJncm91cDciIGhpZGRlbiBhcmlhLWhpZGRlbj0iZmFsc2UiPgorICA8ZGl2IGFyaWEtaGlkZGVu
PSJmYWxzZSI+CisgICAgIDxidXR0b24gYXJpYS1oaWRkZW49ImZhbHNlIj5idXR0b248L2J1dHRv
bj4KKyAgPC9kaXY+Cis8L2Rpdj4KKwogPGRpdiBpZD0iaWZyYW1lIj4KIDxpZnJhbWUgb25sb2Fk
PSJ0ZXN0aUZyYW1lQ29udGVudCgpOyIgYXJpYS1oaWRkZW49ImZhbHNlIiBzcmM9InJlc291cmNl
cy9jYWtlLnBuZyI+aGlkZGVuIGNvbnRlbnQ8L2lmcmFtZT4KIDwvZGl2PgogCis8L2Rpdj4KKwog
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIApAQCAt
MzQsNiArNzMsOCBAQAogICAgICAgICBpZnJhbWVDaGlsZCA9IGlmcmFtZS5jaGlsZEF0SW5kZXgo
MCk7CiAgICAgICAgIGRlYnVnKCJpRnJhbWUgY2hpbGQgcm9sZTogIiArIGlmcmFtZUNoaWxkLnJv
bGUpOwogCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0K
IApAQCAtNTMsMTAgKzk0LDM3IEBACiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewogICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAg
dmFyIHJvb3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuY2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgcm9vdCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7IAog
ICAgICAgICBkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVuKHJvb3QsIDApOwotfQogCisgICAgICAg
IC8vIFRleHQgaW5zaWRlIGFyaWEtaGlkZGVuPWZhbHNlIGluaGVyaXRzIGZyb20gcGFyZW50Lgor
ICAgICAgICB2YXIgb2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJncm91cDMiKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHNob3VsZEJlKCJv
YmplY3Qucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgIHZhciBzdHJp
bmdWYWx1ZSA9IG9iamVjdC5zdHJpbmdWYWx1ZS5yZXBsYWNlKC9cbi9nLCAnJyk7CisgICAgICAg
IHNob3VsZEJlKCJzdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogdGV4dDMnIik7CisKKyAgICAgICAg
Ly8gVGV4dCBpbnNpZGUgbmVzdGVkIGFyaWEtaGlkZGVuPWZhbHNlIGluaGVyaXRzIGZyb20gcGFy
ZW50LgorICAgICAgICBvYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImdyb3VwNCIpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7Cisg
ICAgICAgIHNob3VsZEJlKCJvYmplY3Qucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7
CisgICAgICAgIHN0cmluZ1ZhbHVlID0gb2JqZWN0LnN0cmluZ1ZhbHVlLnJlcGxhY2UoL1xuL2cs
ICcnKTsKKyAgICAgICAgc2hvdWxkQmUoInN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAgICAgdGV4
dDQgICciKTsKKworICAgICAgICAvLyBXaGVuIG5vdCBhbGwgdGhlIHBhcmVudHMgaGF2ZSBhcmlh
LWhpZGRlbj1mYWxzZSwgZWxlbWVudCBzaG91bGQgbm90IGJlIHZpc2libGUuCisgICAgICAgIG9i
amVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3Jv
dXA1IikuY2hpbGRBdEluZGV4KDApOworICAgICAgICBzaG91bGRCZVRydWUoIiFvYmplY3QgfHwg
IW9iamVjdC5pc1ZhbGlkIik7CisKKyAgICAgICAgLy8gT2JqZWN0cyB0aGF0IGRvbid0IGhhdmUg
YXJpYS1oaWRkZW49ZmFsc2UgYXJlIG5vdCB2aXNpYmxlIHdoZW4gdGhlIHBhcmVudHMgaGF2ZSB0
aGF0IGF0dHJpYnV0ZS4KKyAgICAgICAgb2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cDYiKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAg
IHNob3VsZEJlKCJvYmplY3Qucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBz
aG91bGRCZSgib2JqZWN0LmNoaWxkcmVuQ291bnQiLCAiMCIpOworCisgICAgICAgIC8vIFdoZW4g
YWxsIG9iamVjdHMgaGF2ZSBhcmlhLWhpZGRlbj1mYWxzZSwgdGhlbiB0aGUgZWxlbWVudHMgYXJl
IHZpc2libGUuCisgICAgICAgIG9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiZ3JvdXA3IikuY2hpbGRBdEluZGV4KDApOworICAgICAgICBzaG91
bGRCZSgib2JqZWN0LnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKyAgICAgICAgc2hvdWxk
QmUoIm9iamVjdC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgc2hvdWxkQmUoIm9iamVj
dC5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBBWEJ1dHRvbiciKTsKKyAgICB9CisK
IDwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1mYWxzZS13b3Jrcy1pbi1zdWJ0cmVlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4t
ZmFsc2Utd29ya3MtaW4tc3VidHJlZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODQ2NzUpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1mYWxz
ZS13b3Jrcy1pbi1zdWJ0cmVlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSwzIEBACi0KIFRoaXMgdGVzdHMgdGhhdCBhIHN1Yi10cmVlIHdpdGhpbiBhIG5vZGUgbWFya2Vk
IHdpdGggYXJpYS1oaWRkZW49ZmFsc2Ugd2lsbCBiZSBleHBvc2VkIGluIHRoZSBBWCB0cmVlLgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBAIC0xNiw2ICsxNSwxNiBAQAogICAgIEFYUm9s
ZTogQVhTdGF0aWNUZXh0CiAgICAgQVhEZXNjcmlwdGlvbjogCiAKK1BBU1Mgb2JqZWN0LnJvbGUg
aXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyBzdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTog
dGV4dDMnCitQQVNTIG9iamVjdC5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1Mg
c3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6ICAgICB0ZXh0NCAgJworUEFTUyAhb2JqZWN0IHx8ICFv
YmplY3QuaXNWYWxpZCBpcyB0cnVlCitQQVNTIG9iamVjdC5yb2xlIGlzICdBWFJvbGU6IEFYR3Jv
dXAnCitQQVNTIG9iamVjdC5jaGlsZHJlbkNvdW50IGlzIDAKK1BBU1Mgb2JqZWN0LnJvbGUgaXMg
J0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgb2JqZWN0LmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBv
YmplY3QuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhCdXR0b24nCiBOb24tcmVu
ZGVyZWQgaWZyYW1lIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIHdoZW4gYXJpYS1oaWRk
ZW49dHJ1ZS4gVGhlIGZpcnN0IGNoaWxkIHNob3VsZCBiZSBhIGdyb3VwIGFuZCBOT1Qgc3RhdGlj
IHRleHQuCiBpRnJhbWUgY2hpbGQgcm9sZTogQVhSb2xlOiBBWEdyb3VwCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCg==
</data>
<flag name="review"
          id="278476"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>