<?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>54441</bug_id>
          
          <creation_ts>2011-02-15 01:17:59 -0800</creation_ts>
          <short_desc>Tab traversal doesn’t enter &lt;keygen&gt;</short_desc>
          <delta_ts>2011-06-08 22:36:42 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>59812</dependson>
    
    <dependson>61410</dependson>
          <blocked>61409</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hayato</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351144</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-02-15 01:17:59 -0800</bug_when>
    <thetext>Since bug 51379 &lt;keygen&gt; is implemented using shadow DOM. However tab traversal does not visit form elements in shadow DOM. Thus it is not possible to interact with &lt;keygen&gt; using the keyboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351145</commentid>
    <comment_count>1</comment_count>
      <attachid>82427</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-02-15 01:21:59 -0800</bug_when>
    <thetext>Created attachment 82427
WIP Adds a failing layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404302</commentid>
    <comment_count>2</comment_count>
      <attachid>93610</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-15 23:14:26 -0700</bug_when>
    <thetext>Created attachment 93610
WIP Fix a layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404304</commentid>
    <comment_count>3</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-15 23:17:00 -0700</bug_when>
    <thetext>This looks just like the previous WIP patch, modulo ChangeLog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404305</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-15 23:19:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This looks just like the previous WIP patch, modulo ChangeLog?

It seems the previous test, https://bug-54441-attachments.webkit.org/attachment.cgi?id=82427, just contained a typo, &apos;shift&apos; should be &apos;shiftKey&apos;.

The test itself is expected to pass. We need another test which verifies that element in shadow-dom can receives a key event when its host node is focused. I am working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404309</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-15 23:22:14 -0700</bug_when>
    <thetext>Awesome! Sorry for the inferior test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404310</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-15 23:24:07 -0700</bug_when>
    <thetext>I wonder if you could send a space/enter with EventSender, then a down arrow, and use layoutTestController.shadowRoot to inspect the state of the &lt;select&gt; in the shadow.

That won’t work on platforms that implement &lt;2 algorithms (eg GTK) but this test is already skipped on those IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404313</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-15 23:30:38 -0700</bug_when>
    <thetext>Yeah, that&apos;s exactly what I am trying. Thank you!

(In reply to comment #6)
&gt; I wonder if you could send a space/enter with EventSender, then a down arrow, and use layoutTestController.shadowRoot to inspect the state of the &lt;select&gt; in the shadow.
&gt; 
&gt; That won’t work on platforms that implement &lt;2 algorithms (eg GTK) but this test is already skipped on those IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404884</commentid>
    <comment_count>8</comment_count>
      <attachid>93727</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-16 18:51:06 -0700</bug_when>
    <thetext>Created attachment 93727
A patch in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404887</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-16 18:58:26 -0700</bug_when>
    <thetext>I posted a patch, which is still under development.
I guess we need a general solution for shadow-dom, not specific to a &lt;keygen&gt; element.

There are a lot of use cases we must handle. The patch is incomplete.  I&apos;ll continue improving.
Maybe I&apos;ll file other bugs to separate the problem into small pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404898</commentid>
    <comment_count>10</comment_count>
      <attachid>93727</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-16 19:29:15 -0700</bug_when>
    <thetext>Comment on attachment 93727
A patch in progress

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

This looks like good progress—some minor comments inline.

&gt; LayoutTests/fast/forms/keygen-tab-focused-expected.txt:4
&gt; +Before keydown is pressed: 2048 (High Grade)

This will need to be skipped on GTK (and maybe Qt?) because last I checked they don’t implement any key algorithms.

&gt; LayoutTests/fast/forms/keygen-tab-focused.html:28
&gt; +if (window.layoutTestController) {

Consider writing a helper function to extract the value to reduce repetition.

&gt; Source/WebCore/page/FocusController.cpp:173
&gt; +// FIXME: Merge these into SharowRoot.h?

SharowRoot → ShadowRoot

&gt; Source/WebCore/page/FocusController.cpp:180
&gt; +static Node* lastChild(Node* node)

I would name this something else, since it isn’t really lastChild but &quot;last descendant&quot; or something like that.

&gt; Source/WebCore/page/FocusController.cpp:199
&gt; +                            : document-&gt;previousFocusableNode(lastChild(shadowRootNode), event);

What does WebKit style say about this? Maybe align the : with the ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405017</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-17 04:54:38 -0700</bug_when>
    <thetext>Hi Dominic, thank you for the review.

I just had another idea today. To avoid cluttering FocusController class further, how about having a &apos;Universal&apos; traversalNextNode function in Node. That function traverses every reachable nodes, visiting elements in a Frame and a Shadow-dom as well.

Let me try implement such a universalTraverseNode (tentative name) function. I&apos;d like to know whether we can implement that in clean way.

(In reply to comment #10)
&gt; (From update of attachment 93727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93727&amp;action=review
&gt; 
&gt; This looks like good progress—some minor comments inline.
&gt; 
&gt; &gt; LayoutTests/fast/forms/keygen-tab-focused-expected.txt:4
&gt; &gt; +Before keydown is pressed: 2048 (High Grade)
&gt; 
&gt; This will need to be skipped on GTK (and maybe Qt?) because last I checked they don’t implement any key algorithms.
&gt; 
&gt; &gt; LayoutTests/fast/forms/keygen-tab-focused.html:28
&gt; &gt; +if (window.layoutTestController) {
&gt; 
&gt; Consider writing a helper function to extract the value to reduce repetition.
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.cpp:173
&gt; &gt; +// FIXME: Merge these into SharowRoot.h?
&gt; 
&gt; SharowRoot → ShadowRoot
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.cpp:180
&gt; &gt; +static Node* lastChild(Node* node)
&gt; 
&gt; I would name this something else, since it isn’t really lastChild but &quot;last descendant&quot; or something like that.
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.cpp:199
&gt; &gt; +                            : document-&gt;previousFocusableNode(lastChild(shadowRootNode), event);
&gt; 
&gt; What does WebKit style say about this? Maybe align the : with the ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406876</commentid>
    <comment_count>12</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-19 22:06:30 -0700</bug_when>
    <thetext>Sorry for the slow reply--traversalNextNode in Node, or even a separate class for traversal SGTM.

You mentioned that Node already has methods for traversal... we could start with a nested class and refactor the traversal methods into that class, then deport them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406879</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 22:10:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Sorry for the slow reply--traversalNextNode in Node, or even a separate class for traversal SGTM.
&gt; 
&gt; You mentioned that Node already has methods for traversal... we could start with a nested class and refactor the traversal methods into that class, then deport them.

And we already have Bug 59812 for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406894</commentid>
    <comment_count>14</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-05-19 22:53:08 -0700</bug_when>
    <thetext>I&apos;ve made 59812 block this bug, but in fact we should tackle 59812 in pieces; focus traversal could be the first piece that introduces the new file. I don&apos;t think we need to nail a generic/polymorphic abstraction since a given call site always uses a specific kind of traversal. We just need to make it convenient to use at a given site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417833</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-08 22:36:42 -0700</bug_when>
    <thetext>Resolved by bug 61410.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82427</attachid>
            <date>2011-02-15 01:21:59 -0800</date>
            <delta_ts>2011-05-15 23:14:20 -0700</delta_ts>
            <desc>WIP Adds a failing layout test.</desc>
            <filename>bug-54441-20110215182157.patch</filename>
            <type>text/plain</type>
            <size>2438</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1MTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Nzg5NDJmZGYwMDg5YzZjNWMxOTQz
MjUxNzNhMjY1MGQxYTA0OGRlLi40YzMxNDVkYjI0ZDhlZDlkYzYxNjA1YzcxNzMxYTM1MmIzZTBi
NDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTUgIERvbWluaWMgQ29vbmV5ICA8
ZG9taW5pY2NAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIGEgKGZhaWxpbmcpIGxheW91dCB0ZXN0IGZvciB0YWIgdHJhdmVy
c2FsIHRocm91Z2gga2V5Z2VuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQ0NDEKKworICAgICAgICAqIGZhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMva2V5Z2VuLXRhYi1m
b2N1cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0xNCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1NmI1Nzg5MmIzNTlmZTY4MjExMzUwMzdmMjQwMmQyODExNjJl
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWIt
Zm9jdXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorICAKK1RhYmJpbmcgaW50byBhbmQg
b3V0IG9mIHRoZSBrZXlnZW4sIGFuZCBzaGlmdC10YWJiaW5nIGJhY2sgdG8gdGhlIGZpcnN0IHRl
eHRmaWVsZCwgc2hvdWxkIHByaW50IGEgYiBjIGIgYToKKworYQorYgorYworYgorYQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1cy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1
MWUwMTg0MDZlY2FmNTY2MjhlZmU0NzU5Y2IxZTJkNGMxN2ZhMTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMuaHRtbApAQCAtMCwwICsx
LDQ0IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImEiPgorPGtleWdlbiBpZD0iYiI+Cis8aW5w
dXQgdHlwZT0idGV4dCIgaWQ9ImMiPgorPHA+CitUYWJiaW5nIGludG8gYW5kIG91dCBvZiB0aGUg
a2V5Z2VuLCBhbmQgc2hpZnQtdGFiYmluZyBiYWNrIHRvIHRoZQorZmlyc3QgdGV4dGZpZWxkLCBz
aG91bGQgcHJpbnQgYSBiIGMgYiBhOgorPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
JyNjb25zb2xlJykudGV4dENvbnRlbnQgKz0gKG1zZyArICdcbicpOworfQorCitmdW5jdGlvbiBv
bkZvY3VzKGV2ZW50KSB7CisgICAgbG9nKGV2ZW50LnRhcmdldC5pZCk7Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCit2YXIgYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhJyk7Cit2YXIgYiA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiJyk7Cit2YXIgYyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyNjJyk7CisKK2EuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3VzLCB0cnVl
KTsKK2IuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3VzLCB0cnVlKTsKK2MuYWRkRXZl
bnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3VzLCB0cnVlKTsKKworYS5mb2N1cygpOworCitpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgIC8vIHRhYiBmcm9tIGEgdG8gYgorICBldmVudFNlbmRl
ci5rZXlEb3duKCdcdCcpOworCisgIC8vIGZyb20gYiB0byBjCisgIGV2ZW50U2VuZGVyLmtleURv
d24oJ1x0Jyk7CisKKyAgLy8gYmFjayBmcm9tIGMgdG8gYiAgCisgIGV2ZW50U2VuZGVyLmtleURv
d24oJ1x0JywgWydzaGlmdCddKTsKKworICAvLyBiYWNrIGZyb20gYiB0byBhCisgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJ1x0JywgWydzaGlmdCddKTsKK30KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93610</attachid>
            <date>2011-05-15 23:14:26 -0700</date>
            <delta_ts>2011-05-16 18:50:55 -0700</delta_ts>
            <desc>WIP Fix a layout test</desc>
            <filename>bug-54441-20110516151425.patch</filename>
            <type>text/plain</type>
            <size>2448</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQxMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYWZjNmZiOGY5ZmU4Yjk4MjFiMWIx
N2ExMzAwZmJhNjc2Yzg4MzVlLi44NjM2MGM1ZTg4YzFjNDM5ZmZlMDIwOTcxNmU0ODBkNGY5NjFm
MDRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMTUgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgYSBsYXlvdXQgdGVzdCBmb3IgdGFiIHRyYXZlcnNhbCB0aHJvdWdoIGtl
eWdlbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
NDQxCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMuaHRtbDogQWRk
ZWQuCisKIDIwMTEtMDQtMTggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBBZGRlZCBjaHJvbWl1bSBiYXNlbGluZXMgZm9yIG5ldyB0
ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NmI1Nzg5MmIzNTlmZTY4MjExMzUwMzdmMjQwMmQy
ODExNjJlYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdl
bi10YWItZm9jdXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorICAKK1RhYmJpbmcgaW50
byBhbmQgb3V0IG9mIHRoZSBrZXlnZW4sIGFuZCBzaGlmdC10YWJiaW5nIGJhY2sgdG8gdGhlIGZp
cnN0IHRleHRmaWVsZCwgc2hvdWxkIHByaW50IGEgYiBjIGIgYToKKworYQorYgorYworYgorYQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1cy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjExMjU1YTkyNmVkN2I4M2I0NzY1YzExMTQ4MmIzZDhjZDRhZmUzMjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXMuaHRtbApAQCAt
MCwwICsxLDQ0IEBACis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImEiPgorPGtleWdlbiBpZD0iYiI+
Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImMiPgorPHA+CitUYWJiaW5nIGludG8gYW5kIG91dCBv
ZiB0aGUga2V5Z2VuLCBhbmQgc2hpZnQtdGFiYmluZyBiYWNrIHRvIHRoZQorZmlyc3QgdGV4dGZp
ZWxkLCBzaG91bGQgcHJpbnQgYSBiIGMgYiBhOgorPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyNjb25zb2xlJykudGV4dENvbnRlbnQgKz0gKG1zZyArICdcbicpOworfQorCitmdW5j
dGlvbiBvbkZvY3VzKGV2ZW50KSB7CisgICAgbG9nKGV2ZW50LnRhcmdldC5pZCk7Cit9CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCit2YXIgYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhJyk7Cit2
YXIgYiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiJyk7Cit2YXIgYyA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJyNjJyk7CisKK2EuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3Vz
LCB0cnVlKTsKK2IuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3VzLCB0cnVlKTsKK2Mu
YWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBvbkZvY3VzLCB0cnVlKTsKKworYS5mb2N1cygpOwor
CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgIC8vIHRhYiBmcm9tIGEgdG8gYgorICBldmVu
dFNlbmRlci5rZXlEb3duKCdcdCcpOworCisgIC8vIGZyb20gYiB0byBjCisgIGV2ZW50U2VuZGVy
LmtleURvd24oJ1x0Jyk7CisKKyAgLy8gYmFjayBmcm9tIGMgdG8gYgorICBldmVudFNlbmRlci5r
ZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CisKKyAgLy8gYmFjayBmcm9tIGIgdG8gYQorICBl
dmVudFNlbmRlci5rZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7Cit9Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93727</attachid>
            <date>2011-05-16 18:51:06 -0700</date>
            <delta_ts>2011-05-16 19:29:15 -0700</delta_ts>
            <desc>A patch in progress</desc>
            <filename>bug-54441-20110517105104.patch</filename>
            <type>text/plain</type>
            <size>10644</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY1MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZTVhNDc1OGM0MjU1OGUwZTY3ZDMw
NDA1NmFjOWUyYTQ2Y2IzZWM1Li5lMDg2MDk0Y2QzMzA2ZmY4NGE0MDA1M2JkNjNmMzAzZTIzNWM2
NDU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMTYgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2UgZWxlbWVudHMgaW4gc2hhZG93LXRyZWUgZm9jdXNhYmxlLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQ0MQorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9rZXlnZW4tZm9jdXNlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMva2V5Z2VuLWZvY3VzZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9rZXlnZW4tdGFiLWZvY3VzZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXNlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2tleWdlbi10YWItdHJhdmVyc2FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mb3Jtcy9rZXlnZW4tdGFiLXRyYXZlcnNhbC5odG1sOiBBZGRlZC4KKwog
MjAxMS0wNS0xNSAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9uIGNoYW5nZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLWZvY3VzZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9rZXlnZW4tZm9jdXNlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTAyNjkxM2JkYTk4NWRkZjIxY2ZiMDM0MmRmOWU0NDA3YzEwZmYzMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLWZvY3VzZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorCitGb2N1cyB0aGUga2V5Z2VuIChrZXlnZW4uZm9jdXMoKSksIGFu
ZCBwcmVzcyBkb3duQXJyb3cgdG8gY2hhbmdlIHRoZSBzZWxlY3RlZCB2YWx1ZS4KKworQmVmb3Jl
IGtleWRvd24gaXMgcHJlc3NlZDogMjA0OCAoSGlnaCBHcmFkZSkKK0FmdGVyIGtleWRvd24gaXMg
cHJlc3NlZDogMTAyNCAoTWVkaXVtIEdyYWRlKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2tleWdlbi1mb2N1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tl
eWdlbi1mb2N1c2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc0Y2Q0YjNlMDQ2NzA5OTJmM2UzMDRmOGNi
YmU2ZGRiMDdlODllYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
a2V5Z2VuLWZvY3VzZWQuaHRtbApAQCAtMCwwICsxLDI5IEBACis8a2V5Z2VuIGlkPSJrZXlnZW4i
PgorPHA+CitGb2N1cyB0aGUga2V5Z2VuIChrZXlnZW4uZm9jdXMoKSksIGFuZCBwcmVzcyBkb3du
QXJyb3cgdG8gY2hhbmdlIHRoZSBzZWxlY3RlZCB2YWx1ZS4KKzwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcjY29uc29sZScpLnRleHRDb250ZW50ICs9IChtc2cgKyAnXG4nKTsKK30K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBrZXlnZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCcja2V5Z2VuJyk7CitrZXlnZW4uZm9jdXMoKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICB2YXIgc2VsZWN0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hhZG93Um9v
dChrZXlnZW4pLmZpcnN0Q2hpbGQ7CisgIGxvZygnQmVmb3JlIGtleWRvd24gaXMgcHJlc3NlZDog
JyArIHNlbGVjdC52YWx1ZSk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgIGV2ZW50
U2VuZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgIHZhciBzZWxlY3QgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFkb3dSb290
KGtleWdlbikuZmlyc3RDaGlsZDsKKyAgbG9nKCdBZnRlciBrZXlkb3duIGlzIHByZXNzZWQ6ICcg
KyBzZWxlY3QudmFsdWUpOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2tleWdlbi10YWItZm9jdXNlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAx
ZDA3YjFiYTFlOTM0YzY3NWE4NjU4Mjk0NGRjZmE2M2U4MWFiMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi1mb2N1c2VkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDYgQEAKKyAKK1RhYmJpbmcgaW50byB0aGUga2V5Z2VuLCBhbmQgcHJlc3MgZG93
bkFycm93IHRvIGNoYW5nZSB0aGUgc2VsZWN0ZWQgdmFsdWUuCisKK0JlZm9yZSBrZXlkb3duIGlz
IHByZXNzZWQ6IDIwNDggKEhpZ2ggR3JhZGUpCitBZnRlciBrZXlkb3duIGlzIHByZXNzZWQ6IDEw
MjQgKE1lZGl1bSBHcmFkZSkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9r
ZXlnZW4tdGFiLWZvY3VzZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRh
Yi1mb2N1c2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc5YjBiODg1ZTBiYmFmMTA0NmFhNGMzNzkwZmJi
NTQ5ZTY2N2U1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5
Z2VuLXRhYi1mb2N1c2VkLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPGlucHV0IHR5cGU9InRleHQi
IGlkPSJ0ZXh0Ij4KKzxrZXlnZW4gaWQ9ImtleWdlbiI+Cis8cD4KK1RhYmJpbmcgaW50byB0aGUg
a2V5Z2VuLCBhbmQgcHJlc3MgZG93bkFycm93IHRvIGNoYW5nZSB0aGUgc2VsZWN0ZWQgdmFsdWUu
Cis8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
bXNnKSB7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnNvbGUnKS50ZXh0Q29udGVu
dCArPSAobXNnICsgJ1xuJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgIHZhciBzZWxlY3QgPSBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zaGFkb3dSb290KGtleWdlbikuZmlyc3RDaGlsZDsKKyAgbG9nKCdCZWZvcmUga2V5ZG93biBp
cyBwcmVzc2VkOiAnICsgc2VsZWN0LnZhbHVlKTsKK30KKworZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignI3RleHQnKS5mb2N1cygpOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgIC8vIHRh
YiBmcm9tICd0ZXh0JyB0byAna2V5Z2VuJworICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOwor
ICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICB2YXIgc2VsZWN0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2hhZG93Um9vdChrZXlnZW4pLmZpcnN0Q2hpbGQ7CisgIGxvZygnQWZ0ZXIga2V5ZG93biBpcyBw
cmVzc2VkOiAnICsgc2VsZWN0LnZhbHVlKTsKK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItdHJhdmVyc2FsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMva2V5Z2VuLXRhYi10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY1NmI1Nzg5MmIzNTlmZTY4MjExMzUwMzdmMjQwMmQyODExNjJlYjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItdHJhdmVy
c2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKyAgCitUYWJiaW5nIGludG8gYW5kIG91
dCBvZiB0aGUga2V5Z2VuLCBhbmQgc2hpZnQtdGFiYmluZyBiYWNrIHRvIHRoZSBmaXJzdCB0ZXh0
ZmllbGQsIHNob3VsZCBwcmludCBhIGIgYyBiIGE6CisKK2EKK2IKK2MKK2IKK2EKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9rZXlnZW4tdGFiLXRyYXZlcnNhbC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9rZXlnZW4tdGFiLXRyYXZlcnNhbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM3Y2FlZGEyOTE4MzQ1OWQwNWRjYTExNGM4MWFmODQ4MjMzYjBlMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2tleWdlbi10YWItdHJhdmVyc2FsLmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPGlucHV0IHR5cGU9InRleHQiIGlkPSJhIj4KKzxrZXlnZW4gaWQ9
ImIiPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJjIj4KKzxwPgorVGFiYmluZyBpbnRvIGFuZCBv
dXQgb2YgdGhlIGtleWdlbiwgYW5kIHNoaWZ0LXRhYmJpbmcgYmFjayB0byB0aGUKK2ZpcnN0IHRl
eHRmaWVsZCwgc2hvdWxkIHByaW50IGEgYiBjIGIgYToKKzwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCcjY29uc29sZScpLnRleHRDb250ZW50ICs9IChtc2cgKyAnXG4nKTsKK30KKwor
ZnVuY3Rpb24gb25Gb2N1cyhldmVudCkgeworICAgIGxvZyhldmVudC50YXJnZXQuaWQpOworfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYScp
OwordmFyIGIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYicpOwordmFyIGMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcjYycpOworCithLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25G
b2N1cywgdHJ1ZSk7CitiLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cywgdHJ1ZSk7
CitjLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cywgdHJ1ZSk7CisKK2EuZm9jdXMo
KTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAvLyB0YWIgZnJvbSBhIHRvIGIKKyAg
ZXZlbnRTZW5kZXIua2V5RG93bignXHQnKTsKKworICAvLyBmcm9tIGIgdG8gYworICBldmVudFNl
bmRlci5rZXlEb3duKCdcdCcpOworCisgIC8vIGJhY2sgZnJvbSBjIHRvIGIgIAorICBldmVudFNl
bmRlci5rZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CisKKyAgLy8gYmFjayBmcm9tIGIgdG8g
YQorICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7Cit9Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwYWUyMGE0YjVjNGU1MDkxMDRhMGJlOTkwZjE3Nzc1NzUxNTI1ZTE5
Li5iYjJlYTRiMTE1MTBlZDI4ZmYzY2Y0OTYwNDYwN2ZkZGM0OWU1ZDc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTEtMDUtMTYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgZWxlbWVudHMgaW4gc2hhZG93LXRyZWUgZm9jdXNhYmxlLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQ0MQorCisgICAgICAgIFRlc3RzOiBm
YXN0L2Zvcm1zL2tleWdlbi1mb2N1c2VkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
a2V5Z2VuLXRhYi1mb2N1c2VkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMva2V5Z2Vu
LXRhYi10cmF2ZXJzYWwuaHRtbAorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGVlcEZvY3VzYWJsZU5vZGVJbnNpZGVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpkZWVwRm9jdXNhYmxlTm9kZUluc2lkZVNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpkZWVwRm9jdXNhYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcik6CisKIDIwMTEtMDUtMTMg
IE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IGU3YjM3ODM5M2QzOGFiZjk1MTY3Yjk3NDNhYmU1MWU4ODc0ZDcyYjYuLmUyNWRlYmFhMDEz
OWMxMzFlYTY5ZTkxNDNiM2Y1Nzk2NzE4OWYxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQu
aCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gRm9yIGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZQpAQCAtMTQ0LDcgKzE0NSw3IEBAIHZvaWQgRm9jdXNDb250
cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKICAgICB9CiB9CiAKLXN0YXRpYyBOb2Rl
KiBkZWVwRm9jdXNhYmxlTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIG5vZGUs
IEtleWJvYXJkRXZlbnQqIGV2ZW50KQorc3RhdGljIE5vZGUqIGRlZXBGb2N1c2FibGVOb2RlSW5z
aWRlRnJhbWUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBub2RlLCBLZXlib2FyZEV2
ZW50KiBldmVudCkKIHsKICAgICAvLyBUaGUgbm9kZSB3ZSBmb3VuZCBtaWdodCBiZSBhIEhUTUxG
cmFtZU93bmVyRWxlbWVudCwgc28gZGVzY2VuZCBkb3duIHRoZSBmcmFtZSB0cmVlIHVudGlsIHdl
IGZpbmQgZWl0aGVyOgogICAgIC8vIDEpIGEgZm9jdXNhYmxlIG5vZGUsIG9yCkBAIC0xNjgsNiAr
MTY5LDUwIEBAIHN0YXRpYyBOb2RlKiBkZWVwRm9jdXNhYmxlTm9kZShGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIE5vZGUqIG5vZGUsIEtleWJvYXJkRXZlCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
Ky8vIENvcGllZCBmcm9tIE5vZGUuY3BwCisvLyBGSVhNRTogTWVyZ2UgdGhlc2UgaW50byBTaGFy
b3dSb290Lmg/CitpbmxpbmUgc3RhdGljIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoTm9kZSogbm9k
ZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUp
LT5zaGFkb3dSb290KCkgOiAwOworfQorCisvLyBGSVhNRTogSXMgdGhlcmUgYW55IGF2YWlsYWJs
ZSBmdW5jdGlvbj8KK3N0YXRpYyBOb2RlKiBsYXN0Q2hpbGQoTm9kZSogbm9kZSkKK3sKKyAgICBm
b3IgKDsgbm9kZS0+bGFzdENoaWxkKCk7IG5vZGUgPSBub2RlLT5sYXN0Q2hpbGQoKSkgeyB9Cisg
ICAgcmV0dXJuIG5vZGU7Cit9CisKK3N0YXRpYyBOb2RlKiBkZWVwRm9jdXNhYmxlTm9kZUluc2lk
ZVNoYWRvdyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIG5vZGUsIEtleWJvYXJkRXZl
bnQqIGV2ZW50KQoreworICAgIC8vIFRoZSBub2RlIHdlIGZvdW5kIG1pZ2h0IGJlIGEgc2hhZG93
LWhvc3QsIHNvIGRlc2NlbmQgZG93biB0aGUgc2hhZG93LXRyZWUgdW50aWwgd2UgZmluZCBlaXRo
ZXI6CisgICAgLy8gMSkgYSBmb2N1c2FibGUgbm9kZSwgb3IKKyAgICAvLyAyKSB0aGUgZGVlcGVz
dC1uZXN0ZWQgc2hhZG93LWhvc3QuCisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVy
IGNoaWxkcmVuIG9mIHNoYWRvdy1ob3N0IGFzIHdlbGwgYXMgc2hhZG93LXRyZWUuCisgICAgU2hh
ZG93Um9vdCogc2hhZG93Um9vdE5vZGU7CisgICAgd2hpbGUgKG5vZGUgJiYgKHNoYWRvd1Jvb3RO
b2RlID0gc2hhZG93Um9vdChub2RlKSkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bm9kZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50ID09IHNoYWRvd1Jvb3RO
b2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgbm9kZSA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJl
Y3Rpb25Gb3J3YXJkKQorICAgICAgICAgICAgICAgICAgICA/IGRvY3VtZW50LT5uZXh0Rm9jdXNh
YmxlTm9kZShzaGFkb3dSb290Tm9kZSwgZXZlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBkb2N1bWVudC0+cHJldmlvdXNGb2N1c2FibGVOb2RlKGxhc3RDaGlsZChzaGFkb3dSb290
Tm9kZSksIGV2ZW50KTsKKyAgICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAgICBub2RlID0g
c2hhZG93Um9vdE5vZGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gbm9kZTsKK30KKworc3RhdGljIE5vZGUqIGRlZXBGb2N1c2FibGVOb2RlKEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogbm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgdGhlIHJldmVzZSBjYXNlOiBBIHNoYWRv
dyB0cmVlIGNvbnRhaW5zIGEgZnJhbWUgZWxlbWVudC4KKyAgICBub2RlID0gZGVlcEZvY3VzYWJs
ZU5vZGVJbnNpZGVGcmFtZShkaXJlY3Rpb24sIG5vZGUsIGV2ZW50KTsKKyAgICBub2RlID0gZGVl
cEZvY3VzYWJsZU5vZGVJbnNpZGVTaGFkb3coZGlyZWN0aW9uLCBub2RlLCBldmVudCk7CisgICAg
cmV0dXJuIG5vZGU7Cit9CisKIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRJbml0aWFsRm9jdXMo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBi
b29sIGRpZEFkdmFuY2VGb2N1cyA9IGFkdmFuY2VGb2N1cyhkaXJlY3Rpb24sIGV2ZW50LCB0cnVl
KTsKQEAgLTIzNyw2ICsyODIsMjAgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1
c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWIKICAgICAgICAg
ZnJhbWUgPSBwYXJlbnRGcmFtZTsKICAgICB9CiAKKyAgICAvLyBJZiB0aGVyZSdzIG5vIGZvY3Vz
YWJsZSBub2RlIHRvIGFkdmFuY2UgdG8sIG1vdmUgdXAgdGhlIHNoYWRvdyBob3N0IHVudGlsIHdl
IGZpbmQgb25lLgorICAgIHdoaWxlICghbm9kZSAmJiBjdXJyZW50Tm9kZSkgeworICAgICAgICBO
b2RlKiBhbmNlc3Rvck5vZGUgPSBjdXJyZW50Tm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7Cisg
ICAgICAgIGlmIChjdXJyZW50Tm9kZSA9PSBhbmNlc3Rvck5vZGUpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY3VycmVudE5vZGUgPSBhbmNlc3Rvck5vZGU7CisgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGN1cnJlbnROb2RlLT5kb2N1bWVudCgpOworICAgICAgICBub2RlID0gKGRp
cmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCisgICAgICAgICAgICA/IGRvY3VtZW50
LT5uZXh0Rm9jdXNhYmxlTm9kZShjdXJyZW50Tm9kZSwgZXZlbnQpCisgICAgICAgICAgICA6IGRv
Y3VtZW50LT5wcmV2aW91c0ZvY3VzYWJsZU5vZGUoY3VycmVudE5vZGUsIGV2ZW50KTsKKyAgICB9
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgdGhlIGNhc2UgdGhhdCBmb3VuZCBub2Rl
IGlzIEZyYW1lLgorICAgIC8vIFRoZSBhYm92ZSB0d28gJ3doaWxlIGxvb3AncyBzaG91bGQgYmUg
bWVyZ2VkIGludG8gb25lIGxvb3AuCisKICAgICBub2RlID0gZGVlcEZvY3VzYWJsZU5vZGUoZGly
ZWN0aW9uLCBub2RlLCBldmVudCk7CiAKICAgICBpZiAoIW5vZGUpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>