<?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>22784</bug_id>
          
          <creation_ts>2008-12-10 10:17:43 -0800</creation_ts>
          <short_desc>[Chromium] Home, End, PageUp and PageDown buttons do not do anything in drop down lists</short_desc>
          <delta_ts>2009-07-23 02:57:58 -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>New Bugs</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="jasneet">jasneet</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>jasneet</cc>
    
    <cc>jens</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102114</commentid>
    <comment_count>0</comment_count>
    <who name="jasneet">jasneet</who>
    <bug_when>2008-12-10 10:17:43 -0800</bug_when>
    <thetext>I Steps:
Go to attached testcase

II Issue:
Home and End buttons do not do anything in drop down lists

III Other Browsers:
IE7: ok
FF3: ok

IV Nightly tested: 39088

Bug in Chromium : http://code.google.com/p/chromium/issues/detail?id=4576</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102115</commentid>
    <comment_count>1</comment_count>
      <attachid>25920</attachid>
    <who name="jasneet">jasneet</who>
    <bug_when>2008-12-10 10:18:01 -0800</bug_when>
    <thetext>Created attachment 25920
testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130945</commentid>
    <comment_count>2</comment_count>
      <attachid>32577</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 13:49:37 -0700</bug_when>
    <thetext>Created attachment 32577
Fixes bug 22784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130950</commentid>
    <comment_count>3</comment_count>
      <attachid>32577</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 13:54:20 -0700</bug_when>
    <thetext>Comment on attachment 32577
Fixes bug 22784

&gt; Index: WebCore/dom/SelectElement.cpp
&gt; ===================================================================
&gt; --- WebCore/dom/SelectElement.cpp	(revision 45713)
&gt; +++ WebCore/dom/SelectElement.cpp	(working copy)
&gt; @@ -47,7 +47,9 @@
&gt;  #include &quot;WMLSelectElement.h&quot;
&gt;  #endif
&gt;  
&gt; -#if PLATFORM(MAC)
&gt; +// On Mac (Safari or Chrome), pop up the menu if the user presses the arrow keys
&gt; +// while a Select element has focus. On other platforms, just change the selection.
&gt; +#if PLATFORM(DARWIN) &amp;&amp; !PLATFORM(IPHONE)

This isn&apos;t the appropriate check.  PLATFORM(DARWIN) evaluates to true for any port building on Mac OS X, including Qt, GTK and wx.  It indicates the presence of the BSD-level functionality of Darwin, and says nothing about the behavior of higher levels of the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130951</commentid>
    <comment_count>4</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 13:56:40 -0700</bug_when>
    <thetext>Here&apos;s a fix. 

* I added support for &quot;Home&quot;, &quot;End&quot;, &quot;PgUp&quot; and &quot;PgDown&quot; keys. To reduce
duplicated code between all these cases (and the arrow keys) I factored out the
list-traversal into a new static function.

* This bug affects non-Mac platforms. I found that it also affects the Mac
version of Chromium, because in Chromium PLATFORM(MAC) has to be false. But Mac
Chromium should follow the Mac HI guidelines the way Safari does, so I changed
the tests for defining ARROW_KEYS_POP_MENU so that it will also be true in Mac
Chromium. The logic gets a little weird, but I did what I could with the
existing platform flags. Maybe we need a new flag
PLATFORM(MAC_INCLUDING_CHROMIUM) ;-)

N.b. this is also being tracked as
http://code.google.com/p/chromium/issues/detail?id=4576</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130952</commentid>
    <comment_count>5</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 13:58:46 -0700</bug_when>
    <thetext>Mark -- I agree the test is kludgy. What do you suggest using instead? I am told that Chromium cannot turn on PLATFORM(MAC) because it enables all sorts of assumptions throughout WebKit that it&apos;s running inside an AppKit view hierarchy, which is definitely not true in Chromium.
If you think a new flag is necessary, we can do that; I didn&apos;t want to propose it myself since it seemed kind of a wide-ranging change for a newbie to make!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130957</commentid>
    <comment_count>6</comment_count>
      <attachid>32577</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 14:11:35 -0700</bug_when>
    <thetext>Comment on attachment 32577
Fixes bug 22784

&gt; -#if PLATFORM(MAC)
&gt; +// On Mac (Safari or Chrome), pop up the menu if the user presses the arrow keys
&gt; +// while a Select element has focus. On other platforms, just change the selection.
&gt; +#if PLATFORM(DARWIN) &amp;&amp; !PLATFORM(IPHONE)
&gt;  #define ARROW_KEYS_POP_MENU 1
&gt;  #else
&gt;  #define ARROW_KEYS_POP_MENU 0

Another minor comment: Mac WebKit is more than just Safari, so it doesn&apos;t makes too much sense to mention Safari here.

&gt; +#if !ARROW_KEYS_POP_MENU
&gt; +// Returns the index of the next valid list item in direction |dir| past |listIndex|.
&gt; +static int nextValidIndex(int listIndex, int dir, const Vector&lt;Element*&gt;&amp; listItems) {
&gt; +    ASSERT(dir!=0);
&gt; +    int size = listItems.size();
&gt; +    for (listIndex += dir; listIndex &gt;= 0 &amp;&amp; listIndex &lt; size; listIndex += dir) {
&gt; +        if (!listItems[listIndex]-&gt;disabled() &amp;&amp; isOptionElement(listItems[listIndex]))
&gt; +            return listIndex;
&gt; +    }
&gt; +    return -1;
&gt; +}
&gt; +#endif

There are some minor style issues here (brace on same line as function definition, lack of whitespace around operators).  We also prefer not to unnecessarily abbreviate variable names such as &quot;dir&quot;.  It may be clearer to use an enum rather than magic values such as -1 and 1 to represent up and down as the directions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130958</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 14:12:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Mark -- I agree the test is kludgy. What do you suggest using instead?

I don&apos;t know what you should use.  I just know that PLATFORM(DARWIN) is not it.  You&apos;d need to speak with someone familiar with the Chromium port to find out the right define for your needs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130961</commentid>
    <comment_count>8</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 14:31:06 -0700</bug_when>
    <thetext>Looking at Platform.h, a better check might be
    PLATFORM(DARWIN) &amp;&amp; !PLATFORM(GTK) &amp;&amp; !PLATFORM(WX)
which is based on the same logic used to compute PLATFORM(MAC) when
BUILDING_CHROMIUM__ is not turned on. Does that seem, if not reasonable, than
at least acceptable since we don&apos;t have the right flag yet?

Will change the reference to Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130963</commentid>
    <comment_count>9</comment_count>
      <attachid>32580</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 14:37:38 -0700</bug_when>
    <thetext>Created attachment 32580
2nd patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130964</commentid>
    <comment_count>10</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 14:39:49 -0700</bug_when>
    <thetext>Just noticed you added &quot;[Chromium]&quot; to the title. This bug doesn&apos;t only affect Chromium; it affects WebKit itself on all non-Mac platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130967</commentid>
    <comment_count>11</comment_count>
      <attachid>32580</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 14:46:03 -0700</bug_when>
    <thetext>Comment on attachment 32580
2nd patch

&gt; Index: WebCore/dom/SelectElement.cpp
&gt; ===================================================================
&gt; --- WebCore/dom/SelectElement.cpp	(revision 45713)
&gt; +++ WebCore/dom/SelectElement.cpp	(working copy)
&gt; @@ -47,7 +47,10 @@
&gt;  #include &quot;WMLSelectElement.h&quot;
&gt;  #endif
&gt;  
&gt; -#if PLATFORM(MAC)
&gt; +// On Mac OS, pop up the menu if the user presses the arrow keys while a Select element has focus.
&gt; +// On other platforms, just change the selection.
&gt; +// (Cannot just test PLATFORM(MAC), because that is false in Chromium due to its AppKit assumptions.)
&gt; +#if PLATFORM(DARWIN) &amp;&amp; !PLATFORM(GTK) &amp;&amp; !PLATFORM(WX)
&gt;  #define ARROW_KEYS_POP_MENU 1
&gt;  #else
&gt;  #define ARROW_KEYS_POP_MENU 0

At the very least this is not correct because it omits Qt.  Thinking about this a little more, I suspect what you really want is PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN))

Marking as r- due to this and the other unaddressed comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130973</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 14:59:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Just noticed you added &quot;[Chromium]&quot; to the title. This bug doesn&apos;t only affect
&gt; Chromium; it affects WebKit itself on all non-Mac platforms.

In that case, the changes to the #if&apos;s (Pop-up menus in Chromium don&apos;t behave like Mac pop-ups) seem to be a different issue from what this bug talks about (Home and end don&apos;t do anything in select elements on non-Mac platforms).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130976</commentid>
    <comment_count>13</comment_count>
      <attachid>32582</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 15:14:51 -0700</bug_when>
    <thetext>Created attachment 32582
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130981</commentid>
    <comment_count>14</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 15:19:38 -0700</bug_when>
    <thetext>New patch should address the existing issues.

I don&apos;t see the Mac stuff as a separate issue. I kept the original title someone else created for this bug, but in fixing it what I did was make keyboard navigation of Select elements work correctly, both on non-Macs and in Mac Chromium. (Basically I fixed the reported problem first, then noticed that the behavior on my Mac doesn&apos;t match the behavior of Safari, which I think is described by HI Guidelines, so I fixed that too.)

If you think I need to split that one line out as a separate bug I can do that, but it would just consume another couple man-hours of people&apos;s time for a separate submission and review; doesn&apos;t seem worth it to me. This whole thing is just a minor fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130984</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 15:36:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; New patch should address the existing issues.
&gt; 
&gt; I don&apos;t see the Mac stuff as a separate issue. I kept the original title
&gt; someone else created for this bug, but in fixing it what I did was make
&gt; keyboard navigation of Select elements work correctly, both on non-Macs and in
&gt; Mac Chromium. (Basically I fixed the reported problem first, then noticed that
&gt; the behavior on my Mac doesn&apos;t match the behavior of Safari, which I think is
&gt; described by HI Guidelines, so I fixed that too.)
&gt;
&gt; If you think I need to split that one line out as a separate bug I can do that,
&gt; but it would just consume another couple man-hours of people&apos;s time for a
&gt; separate submission and review; doesn&apos;t seem worth it to me. This whole thing
&gt; is just a minor fix.

It would take a matter of minutes to split it in to a separate patch, not hours.  If you&apos;re not willing to do that then that&apos;s fine, but you should retitle the bug to describe what it is you&apos;re actually fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130988</commentid>
    <comment_count>16</comment_count>
      <attachid>32582</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-10 15:43:37 -0700</bug_when>
    <thetext>Comment on attachment 32582
updated patch

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 45720)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,24 @@
&gt; +2009-07-10  Jens Alfke  &lt;snej@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Bug 22784: Home/End and PageUp/PageDn buttons do not do anything in drop down lists,
&gt; +		on non-Mac platforms (nor in the Mac build of Chromium.)
&gt; +		https://bugs.webkit.org/show_bug.cgi?id=22784
&gt; +		http://code.google.com/p/chromium/issues/detail?id=4576
&gt; +
&gt; +
&gt; +        No new tests; affects only user input handling, not layout or rendering.
&gt; +
&gt; +        * dom/SelectElement.cpp:
&gt; +		Changed definition of ARROW_KEYS_POP_MENU to make it true in Mac Chromium,
&gt; +		so it will behave compatibly with Mac HI guidelines on pop-up menus.
&gt; +		It&apos;s not possible to have PLATFORM(MAC) be true in the Mac build of Chromium.
&gt; +        (WebCore::nextValidIndex): 
&gt; +		New utility fn for traversing items of a select&apos;s list.
&gt; +        (WebCore::SelectElement::menuListDefaultEventHandler):
&gt; +		Added code to handle Home/End and PageUp/PageDn when ARROW_KEYS_POP_MENU is false.

There are lots of tabs in this ChangeLog entry.  Our SVN pre-commit hook will be unhappy with these, so it would be best to remove them.

&gt; +#if !ARROW_KEYS_POP_MENU
&gt; +// Returns the index of the next valid list item before or after |listIndex|.
&gt; +static int nextValidIndex(int listIndex, bool forward, const Vector&lt;Element*&gt;&amp; listItems)
&gt; +{
&gt; +    int skip = forward ? 1 : -1;

Is there a reason that you switched to a boolean argument rather than the enum that I suggested?  At the call site you don&apos;t have the context of the argument name to indicate what the true or false represent. An enum value is understandable at a glance, even at the call site.

The rest of the patch looks good.  It should be landable when these two minor issues are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131000</commentid>
    <comment_count>17</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 16:05:02 -0700</bug_when>
    <thetext>Bugzilla won&apos;t let me retitle the bug; maybe because my account doesn&apos;t have the right privileges.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131004</commentid>
    <comment_count>18</comment_count>
      <attachid>32590</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 16:22:04 -0700</bug_when>
    <thetext>Created attachment 32590
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131006</commentid>
    <comment_count>19</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-10 16:26:50 -0700</bug_when>
    <thetext>Sorry about the tab characters! I&apos;m on a new machine and hadn&apos;t yet fixed the tab settings in TextMate.

&gt;Is there a reason that you switched to a boolean argument rather than the enum
&gt;that I suggested?

Yes: because I felt that was a better change. IMHO defining a special enum for this one very local subroutine is overkill.

I&apos;ve improved my change to add a second (inlined) function, so the calls now look like &quot;nextValidIndex&quot; and &quot;previousValidIndex&quot;, without a direction parameter. Hopefully that should be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131020</commentid>
    <comment_count>20</comment_count>
      <attachid>32594</attachid>
    <who name="Neil Rhodes">nrhodes</who>
    <bug_when>2009-07-10 17:05:56 -0700</bug_when>
    <thetext>Created attachment 32594
Proposed fix for bug 22784

It&apos;s not clear to me that Jens&apos;s patch actually handles paging up and down a page at a time.

In any case, this patch provides a test for the behavior of PageUp/PageDown/Home/End behavior for select elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131325</commentid>
    <comment_count>21</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-13 09:04:03 -0700</bug_when>
    <thetext>It does handle page up/down. Note that this code runs only when the Select is _not_ popped up -- otherwise the platform&apos;s menu code is tracking the events.

Since only a single item is showing, the current &apos;page size&apos; is 1, so I made page up/down jump by one element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131328</commentid>
    <comment_count>22</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-13 09:21:38 -0700</bug_when>
    <thetext>nrhodes&apos; patch and mine are orthogonal -- they fix different issues. You should probably take both of them.

This made me notice that there&apos;s a disconnect between this bug&apos;s title and its description/test-case. The title (like Chromium bug 4576 which links to this one) refers to a &apos;drop down list&apos;, i.e. a pop-up menu. However, the description and test case here say that the problem is with list boxes. 

The original test case from 12/10/08 does include a pop-up, but incorrectly says it has no problems; actually on non-Mac platforms, or in Mac Chromium, the home/end/page keys do _not_ work when it&apos;s not popped up; that&apos;s what bug 4576 describes. (Whoever wrote the test case must only have tried it on a Mac, or only tried keystrokes while the menu was popped up?)

So in summary:
* My patch implements proper behavior of the home/end/page keys in a pop-up Select that has focus but is not currently popped up, on non-Mac platforms.
* My patch also gives Mac Chromium the Mac-like behavior of popping up the menu in response to the spacebar or home/end/page/arrow keys, as PLATFORM_MAC already does.
* nrhodes&apos; patch implements proper key behavior in a _list-box_ Select.

(I noticed the bug was still unassigned, so I&apos;ve taken the liberty of assigning it to myself.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132591</commentid>
    <comment_count>23</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-17 09:17:17 -0700</bug_when>
    <thetext>*ping* Any ETA for further review of the currently pending patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133070</commentid>
    <comment_count>24</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 22:05:01 -0700</bug_when>
    <thetext>It would be good if you had separate bugs with titles hat reflected what you said in the comments because it tends to get confusing with just a few comments (even when all the patches are coming from just one author).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133071</commentid>
    <comment_count>25</comment_count>
      <attachid>32590</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 22:19:39 -0700</bug_when>
    <thetext>Comment on attachment 32590
new patch

It is best not to assign your patch to be reviewed by a particular person.  You&apos;ll get more attention usually if your patch is in the general queue.

There were a few things that Mark suggested which would allow you to get closer to getting this checked in faster:

1. If you had a patch and a bug just for the define change for ARROW_KEYS_POP_MENU.  I&apos;d r+ it right now and it would be a small focused patch that didn&apos;t attempt to do more than one thing.  This is a good practice in general. As it makes reviews go quicker and keeping patches focused also helps with future maintainence when people look at the history and try to understand what patches were trying to accomplish, etc. so while it may be ten minutes more work for you. It is a good thing.

2. WebKit is adopting a new style guide (that isn&apos;t yet in the written guidelines) to avoid bool parameters to functions. This is a really good thing for several reasons: 
a. It keeps the code more readable (What does &quot;true/false&quot; mean when you see it at a calling site?)
b. It helps with future changes to avoid breakages.  (Once when we picked up a new revision of WebKit code in chromium things broke because a new bool parameter was inserted in the middle of other bool parameters.  Now clearly this doesn&apos;t seem like the best thing to do but if they had been enums the problem would have been quickly detected and corrected instead of taking hours to track down.)

While your function seems small and you may feel that it isn&apos;t worth it to add an enum for this function, it isn&apos;t hard, and it could help with future maintenance.



&gt; +static int nextValidIndex(const Vector&lt;Element*&gt;&amp; listItems, int listIndex, bool forward = true)

Change bool forward to an enum as noted above.

&gt; +        if (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;Right&quot; || keyIdentifier == &quot;PageDown&quot;) {
&gt; +            listIndex = nextValidIndex(listItems, listIndex);

Making &quot;PageDown&quot; go down only one item seems incorrect.

&gt; +        } else if (keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;Left&quot; || keyIdentifier == &quot;PageUp&quot;) {
&gt; +            listIndex = previousValidIndex(listItems, listIndex);
&gt; +            handled = true;

Making &quot;PageUp&quot; go up only one item seems incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133072</commentid>
    <comment_count>26</comment_count>
      <attachid>32594</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 22:40:06 -0700</bug_when>
    <thetext>Comment on attachment 32594
Proposed fix for bug 22784


1. Please create a separate bug for your patch (or else this is going to get confusing fast).
2. This needs a changelog.  Run prepare-ChangeLog --bug=YourNewBugNumber.
3. It would be great if you used the functions that are being created in the other patch on this bug rather than have basically the same code duplicated here.
4. Please make comments look like sentences.  Start with a capital and end with a period.
5. It looks like you added several static functions to the class. It doesn&apos;t look like they need to be exposed on the class and could instead be static functions in the file. 

&gt; Index: WebCore/dom/SelectElement.cpp

&gt; +int SelectElement::selectableListIndexPageFrom(SelectElementData&amp; data, Element* element, int startIndex, bool pageDown)

Avoid bool parameters. Use an enum instead. See my comment for the other patch on this bug.

&gt; +{
&gt; +    int pageSize = static_cast&lt;RenderListBox*&gt;(element-&gt;renderer())-&gt;size() - 1;  // -1 so we still show context

1 space before end of line comments.

&gt; +    int indexOnePageAway = optionToListIndex(data, element, max(0, min(listSize -1, startIndex +  (pageDown ? pageSize : -pageSize))));

There is no space after &quot;listSize -&quot;
There are two spaces after &quot;startIndex + &quot;

&gt; +    while (index &gt;= 0 &amp;&amp; index &lt; listSize &amp;&amp; (!isOptionElement(items[index]) || items[index]-&gt;disabled()))
&gt; +        pageDown ? ++index : --index;

Ideally this would use the function from the other patch -- perhaps wait until after that patch is checked in.


&gt; +    if (index &lt; 0 || (unsigned) index == items.size()) {

Use c++ style casts.

&gt; +        while (index &gt;= 0 &amp;&amp; index &lt; listSize &amp;&amp; (!isOptionElement(items[index]) || items[index]-&gt;disabled()))
&gt; +            pageDown ? --index : ++index;

Ideally this would use the function from the other patch.


&gt; +int SelectElement::firstSelectableListIndex(SelectElementData&amp; data, Element* element)

Use the function from the other patch.

&gt; +int SelectElement::lastSelectableListIndex(SelectElementData&amp; data, Element* element)

Use the function from the other patch.

&gt;              else if (keyIdentifier == &quot;Up&quot;)
&gt;                  endIndex = previousSelectableListIndex(data, element, optionToListIndex(data, element, selectedIndex(data, element)));
...
&gt; +            else if (keyIdentifier == &quot;PageUp&quot;)
&gt; +                endIndex = selectableListIndexPageFrom(data, element, selectedIndex(data, element), false);

Why is this using selectedIndex(data, element) instead of what &quot;Up&quot; does: optionToListIndex(data, element, selectedIndex(data, element)) ?

&gt; +        if (endIndex &gt;= 0 &amp;&amp; 
Boolean expressions at the same nesting level that span multiple lines should have their operators on the left side of the line instead of the right side.

So please move the &amp;&amp; to the next line.

&gt; +		        (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;Home&quot;
&gt; +                ||  keyIdentifier == &quot;End&quot; || keyIdentifier == &quot;PageDown&quot; || keyIdentifier == &quot;PageUp&quot;)) {

You have some TABs here which is why the indentation looks so bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133162</commentid>
    <comment_count>27</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-20 10:15:25 -0700</bug_when>
    <thetext>I&apos;ve split out the redefinition of ARROW_KEYS_POP_MENU into a new bug 27448 and provided a patch (which is just a subset of my previous patch here.)

I&apos;ll update the remaining part of my patch and attach that here in a few minutes.

** Neil, please file a new report for the bug that you fixed. After my patch for this bug has landed, merge your stuff with it (consider re-using or enhancing the static function I added) and submit the patch against that new bug. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133178</commentid>
    <comment_count>28</comment_count>
      <attachid>33096</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-20 11:40:24 -0700</bug_when>
    <thetext>Created attachment 33096
Updated, more focused patch

This is an update of my prior patch for the home/end/pageup/pagedown behavior:
* Removes the redefinition of the space key behavior on Mac; that&apos;s broken into a separate bug/patch.
* Uses an enum instead of boolean for controlling the up/down mode of nextValidIndex().

Regarding the question of how far page up/down should scroll: I settled on one item, because since the list is not popped up at the time, the current &apos;page size&apos; is 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133281</commentid>
    <comment_count>29</comment_count>
      <attachid>33096</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 16:01:55 -0700</bug_when>
    <thetext>Comment on attachment 33096
Updated, more focused patch



&gt; Index: WebCore/ChangeLog
&gt; +        No new tests; affects only user input handling.

(Now that I understand this better) It seems that a layout test could be added for this functionality.  For example, see this test that simulates user input: LayoutTests/fast/forms/input-text-enter.html

&gt; Index: WebCore/dom/SelectElement.cpp
&gt; +enum SkipDirection {
&gt; +    kSkipBackwards = -1,
&gt; +    kSkipForwards = 1
&gt; +};
&gt; +

Enum members should user InterCaps with an initial capital letter.  (No leading &quot;k&quot;. Also, just fyi, even for constants WebKit doesn&apos;t prefix them with &quot;k&quot;.  They follow the standard naming convention.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133643</commentid>
    <comment_count>30</comment_count>
      <attachid>33224</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-21 16:03:46 -0700</bug_when>
    <thetext>Created attachment 33224
Updated patch with test case

This revised patch adds a layout test. (Note that the test checks the non-Mac behavior, so it is expected to report failure on Mac; I&apos;ve added a Mac-specific expected output file reflecting this.)
Page Up/Down now jump by three, as in Neil Rhodes&apos; related patch.
It also fixes the enum naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133647</commentid>
    <comment_count>31</comment_count>
      <attachid>33224</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 16:27:39 -0700</bug_when>
    <thetext>Comment on attachment 33224
Updated patch with test case

A few small changes and this will be done :)

&gt; --- LayoutTests/fast/forms/select-popup-pagekeys-expected.txt	(revision 0)

&gt; +This test verifies that the Home/End/PageUp/PageDown keys work correctly for pop-up &lt;select&gt; elements that have focus but are not currently popped-up.
&gt; +

The tests typically note here what one should see if running it in the browser.  (Some thing like.  Below you should see some information about the key pressed and whether a test passed followed by a single &quot;SUCCESS&quot;.)


The expected output here doesn&apos;t match what I would expect from the html. (It is missing &quot;NOTE: This test will fail on Mac OS, on which these keys are NOT supposed to change the selection of a focused pop-up.&quot;


&gt; \ No newline at end of file

Please add a newline (I guess fix the html file to ensure that there is one.)


&gt; Property changes on: LayoutTests/fast/forms/select-popup-pagekeys-expected.txt
&gt; ___________________________________________________________________
&gt; Name: svn:eol-style:native

Please set to LF.


&gt; Index: LayoutTests/fast/forms/select-popup-pagekeys.html
&gt; \ No newline at end of file

Please add a newline.

&gt; Index: LayoutTests/platform/mac/fast/forms/select-popup-pagekeys-expected.txt
&gt; ___________________________________________________________________
&gt; Name: svn:eol-style:native

Please set to LF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133984</commentid>
    <comment_count>32</comment_count>
      <attachid>33306</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-22 16:43:52 -0700</bug_when>
    <thetext>Created attachment 33306
Final(?) patch

This patches addresses the above review comments. It&apos;s also been updated to WebKit r46229.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133988</commentid>
    <comment_count>33</comment_count>
      <attachid>33306</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-22 16:50:31 -0700</bug_when>
    <thetext>Comment on attachment 33306
Final(?) patch

I think the conversion to LF was over aggressive (when it was done to existing files -- I didn&apos;t mean to suggest that.  Anyway, I&apos;ll take care of this all on landing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133989</commentid>
    <comment_count>34</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-22 16:50:57 -0700</bug_when>
    <thetext>Assigned to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134027</commentid>
    <comment_count>35</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-22 22:57:25 -0700</bug_when>
    <thetext>While landing, I noticed a bug in the layout test:

passed = testPageDownNoDisabledElements();
  should be
passed = testPageDownNoDisabledElements() &amp;&amp; passed;

(or &quot;passed &amp;&amp;&quot; could come first but then the first failure prevents anything else from running).

Anyway, I&apos;ll fix this while landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134056</commentid>
    <comment_count>36</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-23 00:53:23 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/46259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134064</commentid>
    <comment_count>37</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-23 02:11:24 -0700</bug_when>
    <thetext>Follow up fix: http://trac.webkit.org/changeset/46261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134070</commentid>
    <comment_count>38</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-23 02:57:58 -0700</bug_when>
    <thetext>One more follow up fix http://trac.webkit.org/changeset/46262</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25920</attachid>
            <date>2008-12-10 10:18:01 -0800</date>
            <delta_ts>2008-12-10 10:18:01 -0800</delta_ts>
            <desc>testcase</desc>
            <filename>testcase.html</filename>
            <type>text/html</type>
            <size>3298</size>
            <attacher name="jasneet">jasneet</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiI+DQo8aHRtbD4NCiAgPGhlYWQ+DQogIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MCI+DQogIDxtZXRhIG5h
bWU9ImdlbmVyYXRvciIgY29udGVudD0iUFNQYWQgZWRpdG9yLCB3d3cucHNwYWQuY29tIj4NCiAg
PHRpdGxlPjwvdGl0bGU+DQogIDwvaGVhZD4NCiAgPGJvZHk+DQogIA0KICA8L2JyPkdvb2QgZXhh
bXBsZSB3aGVyZSBob21lLCBlbmQsIHBhZ2UgdXAsIGFuZCBwYWdlIGRvd24gd29yayBhcyBleHBl
Y3RlZCB3aGVuIHNlbGVjdGluZyBvcHRpb25zIGFuZCB0aGUgd2lkZ2V0IGhhcyBmb2N1cy48L2Jy
Pg0KICANCiAgPHNlbGVjdCBuYW1lPSJyZXBfcGxhdGZvcm0iPg0KICAgICAgPG9wdGlvbiB2YWx1
ZT0iUEMiIHNlbGVjdGVkPSJzZWxlY3RlZCI+UEMgICAgICA8L29wdGlvbj4NCiAgICAgIDxvcHRp
b24gdmFsdWU9Ik1hY2ludG9zaCI+TWFjaW50b3NoICAgICAgPC9vcHRpb24+DQogICAgICA8b3B0
aW9uIHZhbHVlPSJBbGwiPkFsbCAgICAgIDwvb3B0aW9uPg0KICAgICAgPG9wdGlvbiB2YWx1ZT0i
T3RoZXIiPk90aGVyICAgICAgPC9vcHRpb24+DQogIDwvc2VsZWN0Pg0KICANCiAgPC9icj48L2Jy
PkJhZCBleGFtcGxlIHdoZXJlIGhvbWUsIGVuZCwgcGFnZSB1cCwgYW5kIHBhZ2UgZG93biAqZG8g
bm90KiB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gc2VsZWN0aW5nIG9wdGlvbnMgYW5kIHRoZSB3aWRn
ZXQgaGFzIGZvY3VzLiAgUHJlc3NpbmcgdGhlc2Uga2V5cyB3aWxsIGNhdXNlIHRoZSBwYWdlIHRv
IGp1bXAsIGFuZCB3aWxsIG5vdCBtb3ZlIHRoZSBzZWxlY3Rpb24uPC9icj4NCiAgICAgICAgICAg
IDxzZWxlY3QgbmFtZT0iY29tcG9uZW50IiBpZD0iY29tcG9uZW50Ig0KICAgICAgICAgICAgICAg
ICAgICBzaXplPSI1Ij4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8b3B0aW9u
IHZhbHVlPSJCb29rbWFya3MgJmFtcDsgSGlzdG9yeSI+Qm9va21hcmtzICZhbXA7IEhpc3RvcnkN
CiAgICAgICAgICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVl
PSJCdWlsZCBDb25maWciPkJ1aWxkIENvbmZpZw0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0K
ICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkRpc2FiaWxpdHkgQWNjZXNzIj5EaXNhYmls
aXR5IEFjY2Vzcw0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IkV4dGVuc2lvbiBDb21wYXRpYmlsaXR5Ij5FeHRlbnNpb24gQ29tcGF0aWJp
bGl0eQ0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxvcHRpb24g
dmFsdWU9IkZpbGUgSGFuZGxpbmciPkZpbGUgSGFuZGxpbmcNCiAgICAgICAgICAgICAgICA8L29w
dGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHZW5lcmFsIiBzZWxlY3RlZD0i
c2VsZWN0ZWQiPkdlbmVyYWwNCiAgICAgICAgICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJIZWxwIERvY3VtZW50YXRpb24iPkhlbHAgRG9jdW1lbnRhdGlv
bg0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9Ikluc3RhbGxlciI+SW5zdGFsbGVyDQogICAgICAgICAgICAgICAgPC9vcHRpb24+DQogICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS2V5Ym9hcmQgTmF2aWdhdGlvbiI+S2V5Ym9hcmQg
TmF2aWdhdGlvbg0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IkxvY2F0aW9uIEJhciBhbmQgQXV0b2NvbXBsZXRlIj5Mb2NhdGlvbiBCYXIg
YW5kIEF1dG9jb21wbGV0ZQ0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9Ik1lbnVzIj5NZW51cw0KICAgICAgICAgICAgICAgIDwvb3B0aW9u
Pg0KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1pY3Jvc3VtbWFyaWVzIj5NaWNyb3N1
bW1hcmllcw0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9Ik1pZ3JhdGlvbiI+TWlncmF0aW9uDQogICAgICAgICAgICAgICAgPC9vcHRpb24+
DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGFnZSBJbmZvIj5QYWdlIEluZm8NCiAg
ICAgICAgICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQ
aGlzaGluZyBQcm90ZWN0aW9uIj5QaGlzaGluZyBQcm90ZWN0aW9uDQogICAgICAgICAgICAgICAg
PC9vcHRpb24+DQogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGxhY2VzIj5QbGFjZXMN
CiAgICAgICAgICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVl
PSJQcmVmZXJlbmNlcyI+UHJlZmVyZW5jZXMNCiAgICAgICAgICAgICAgICA8L29wdGlvbj4NCiAg
ICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSU1MgRGlzY292ZXJ5IGFuZCBQcmV2aWV3Ij5S
U1MgRGlzY292ZXJ5IGFuZCBQcmV2aWV3DQogICAgICAgICAgICAgICAgPC9vcHRpb24+DQogICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VhcmNoIj5TZWFyY2gNCiAgICAgICAgICAgICAg
ICA8L29wdGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTZWN1cml0eSI+U2Vj
dXJpdHkNCiAgICAgICAgICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgICAgICAgICA8b3B0aW9u
IHZhbHVlPSJTZXNzaW9uIFJlc3RvcmUiPlNlc3Npb24gUmVzdG9yZQ0KICAgICAgICAgICAgICAg
IDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNoZWxsIEludGVncmF0
aW9uIj5TaGVsbCBJbnRlZ3JhdGlvbg0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhYmJlZCBCcm93c2VyIj5UYWJiZWQgQnJvd3Nlcg0K
ICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9
IlRoZW1lIj5UaGVtZQ0KICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9IlRvb2xiYXJzIj5Ub29sYmFycw0KICAgICAgICAgICAgICAgIDwvb3B0
aW9uPg0KICAgICAgICAgICAgPC9zZWxlY3Q+DQogIDwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32577</attachid>
            <date>2009-07-10 13:49:37 -0700</date>
            <delta_ts>2009-07-10 14:37:38 -0700</delta_ts>
            <desc>Fixes bug 22784</desc>
            <filename>selectKeys.patch</filename>
            <type>text/plain</type>
            <size>4540</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTcyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDctMTAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIy
Nzg0OiBIb21lL0VuZCBhbmQgUGFnZVVwL1BhZ2VEbiBidXR0b25zIGRvIG5vdCBkbyBhbnl0aGlu
ZyBpbiBkcm9wIGRvd24gbGlzdHMsCisJCW9uIG5vbi1NYWMgcGxhdGZvcm1zIChub3IgaW4gdGhl
IE1hYyBidWlsZCBvZiBDaHJvbWl1bS4pCisJCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc4NAorCQlodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD00NTc2CisKKworICAgICAgICBObyBuZXcgdGVzdHM7IGFmZmVjdHMgb25s
eSB1c2VyIGlucHV0IGhhbmRsaW5nLCBub3QgbGF5b3V0IG9yIHJlbmRlcmluZy4KKworICAgICAg
ICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKwkJQ2hhbmdlZCBkZWZpbml0aW9uIG9mIEFSUk9X
X0tFWVNfUE9QX01FTlUgdG8gbWFrZSBpdCB0cnVlIGluIE1hYyBDaHJvbWl1bSwKKwkJc28gaXQg
d2lsbCBiZWhhdmUgY29tcGF0aWJseSB3aXRoIE1hYyBISSBndWlkZWxpbmVzIG9uIHBvcC11cCBt
ZW51cy4KKwkJSXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBQTEFURk9STShNQUMpIGJlIHRydWUg
aW4gdGhlIE1hYyBidWlsZCBvZiBDaHJvbWl1bS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxp
ZEluZGV4KTogCisJCU5ldyB1dGlsaXR5IGZuIGZvciB0cmF2ZXJzaW5nIGl0ZW1zIG9mIGEgc2Vs
ZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVm
YXVsdEV2ZW50SGFuZGxlcik6CisJCUFkZGVkIGNvZGUgdG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQ
YWdlVXAvUGFnZURuIHdoZW4gQVJST1dfS0VZU19QT1BfTUVOVSBpcyBmYWxzZS4KKwogMjAwOS0w
Ny0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwg
b3VyIFhjb2RlIHByb2plY3RzCkluZGV4OiBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNDU3
MTMpCisrKyBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsOSBAQAogI2luY2x1ZGUgIldNTFNlbGVjdEVsZW1lbnQuaCIKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKQorLy8gT24gTWFjIChTYWZhcmkgb3IgQ2hyb21lKSwgcG9wIHVwIHRo
ZSBtZW51IGlmIHRoZSB1c2VyIHByZXNzZXMgdGhlIGFycm93IGtleXMKKy8vIHdoaWxlIGEgU2Vs
ZWN0IGVsZW1lbnQgaGFzIGZvY3VzLiBPbiBvdGhlciBwbGF0Zm9ybXMsIGp1c3QgY2hhbmdlIHRo
ZSBzZWxlY3Rpb24uCisjaWYgUExBVEZPUk0oREFSV0lOKSAmJiAhUExBVEZPUk0oSVBIT05FKQog
I2RlZmluZSBBUlJPV19LRVlTX1BPUF9NRU5VIDEKICNlbHNlCiAjZGVmaW5lIEFSUk9XX0tFWVNf
UE9QX01FTlUgMApAQCAtNTA5LDYgKzUxMSwxOSBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc2V0
KFNlbGVjdEVsZW1lbnRECiAKICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9
CisgICAgCisjaWYgIUFSUk9XX0tFWVNfUE9QX01FTlUKKy8vIFJldHVybnMgdGhlIGluZGV4IG9m
IHRoZSBuZXh0IHZhbGlkIGxpc3QgaXRlbSBpbiBkaXJlY3Rpb24gfGRpcnwgcGFzdCB8bGlzdElu
ZGV4fC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoaW50IGxpc3RJbmRleCwgaW50IGRpciwg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKSB7CisgICAgQVNTRVJUKGRpciE9MCk7
CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9
IGRpcjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRp
cikgeworICAgICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpICYmIGlz
T3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdEluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4g
bGlzdEluZGV4OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisjZW5kaWYKIAogdm9pZCBTZWxl
Y3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVtZW50KiBo
dG1sRm9ybSkKIHsKQEAgLTUzNSwyNCArNTUwLDI0IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bWVu
dUxpc3REZWZhdWx0RXZlbnQKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAgICAg
IGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKIAogICAgICAgICBpbnQgbGlzdEluZGV4ID0g
b3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVt
ZW50KSk7Ci0gICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlm
aWVyID09ICJSaWdodCIpIHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4ICs9IDE7Ci0gICAg
ICAgICAgICAgICAgIGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxpc3RJ
dGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1z
W2xpc3RJbmRleF0pKTsKLSAgICAgICAgICAgICAgICAgKytsaXN0SW5kZXgpIHsgfQotICAgICAg
ICAgICAgaWYgKGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAgICAg
ICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChk
YXRhLCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKKyAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0g
IkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCBrZXlJZGVudGlmaWVyID09ICJQ
YWdlRG93biIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJ
bmRleCwgMSwgbGlzdEl0ZW1zKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIiB8fCBrZXlJZGVudGlmaWVyID09ICJM
ZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09ICJQYWdlVXAiKSB7CisgICAgICAgICAgICBsaXN0SW5k
ZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SW5kZXgsIC0xLCBsaXN0SXRlbXMpOwogICAgICAgICAg
ICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAi
VXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIkxlZnQiKSB7Ci0gICAgICAgICAgICBmb3IgKGxpc3RJ
bmRleCAtPSAxOwotICAgICAgICAgICAgICAgICBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXgg
PCBzaXplICYmIChsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSB8fCAhaXNPcHRpb25F
bGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSk7Ci0gICAgICAgICAgICAgICAgIC0tbGlzdElu
ZGV4KSB7IH0KLSAgICAgICAgICAgIGlmIChsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBz
aXplKQotICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlz
dFRvT3B0aW9uSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdEluZGV4KSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9
IG5leHRWYWxpZEluZGV4KC0xLCAxLCBsaXN0SXRlbXMpOworICAgICAgICAgICAgaGFuZGxlZCA9
IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5kIikgeworICAg
ICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLnNpemUoKSwgLTEs
IGxpc3RJdGVtcyk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDApCisgICAgICAgICAg
ICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEs
IGVsZW1lbnQsIGxpc3RJbmRleCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChoYW5kbGVkKQogICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cg==
</data>
<flag name="review"
          id="16997"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32580</attachid>
            <date>2009-07-10 14:37:38 -0700</date>
            <delta_ts>2009-07-10 15:14:51 -0700</delta_ts>
            <desc>2nd patch</desc>
            <filename>selectKeys.patch</filename>
            <type>text/plain</type>
            <size>4642</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTcyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDctMTAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIy
Nzg0OiBIb21lL0VuZCBhbmQgUGFnZVVwL1BhZ2VEbiBidXR0b25zIGRvIG5vdCBkbyBhbnl0aGlu
ZyBpbiBkcm9wIGRvd24gbGlzdHMsCisJCW9uIG5vbi1NYWMgcGxhdGZvcm1zIChub3IgaW4gdGhl
IE1hYyBidWlsZCBvZiBDaHJvbWl1bS4pCisJCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc4NAorCQlodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD00NTc2CisKKworICAgICAgICBObyBuZXcgdGVzdHM7IGFmZmVjdHMgb25s
eSB1c2VyIGlucHV0IGhhbmRsaW5nLCBub3QgbGF5b3V0IG9yIHJlbmRlcmluZy4KKworICAgICAg
ICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKwkJQ2hhbmdlZCBkZWZpbml0aW9uIG9mIEFSUk9X
X0tFWVNfUE9QX01FTlUgdG8gbWFrZSBpdCB0cnVlIGluIE1hYyBDaHJvbWl1bSwKKwkJc28gaXQg
d2lsbCBiZWhhdmUgY29tcGF0aWJseSB3aXRoIE1hYyBISSBndWlkZWxpbmVzIG9uIHBvcC11cCBt
ZW51cy4KKwkJSXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBQTEFURk9STShNQUMpIGJlIHRydWUg
aW4gdGhlIE1hYyBidWlsZCBvZiBDaHJvbWl1bS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxp
ZEluZGV4KTogCisJCU5ldyB1dGlsaXR5IGZuIGZvciB0cmF2ZXJzaW5nIGl0ZW1zIG9mIGEgc2Vs
ZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVm
YXVsdEV2ZW50SGFuZGxlcik6CisJCUFkZGVkIGNvZGUgdG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQ
YWdlVXAvUGFnZURuIHdoZW4gQVJST1dfS0VZU19QT1BfTUVOVSBpcyBmYWxzZS4KKwogMjAwOS0w
Ny0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwg
b3VyIFhjb2RlIHByb2plY3RzCkluZGV4OiBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNDU3
MTMpCisrKyBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsMTAgQEAKICNpbmNsdWRlICJXTUxTZWxlY3RFbGVtZW50LmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykKKy8vIE9uIE1hYyBPUywgcG9wIHVwIHRoZSBtZW51IGlmIHRoZSB1
c2VyIHByZXNzZXMgdGhlIGFycm93IGtleXMgd2hpbGUgYSBTZWxlY3QgZWxlbWVudCBoYXMgZm9j
dXMuCisvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIGp1c3QgY2hhbmdlIHRoZSBzZWxlY3Rpb24uCisv
LyAoQ2Fubm90IGp1c3QgdGVzdCBQTEFURk9STShNQUMpLCBiZWNhdXNlIHRoYXQgaXMgZmFsc2Ug
aW4gQ2hyb21pdW0gZHVlIHRvIGl0cyBBcHBLaXQgYXNzdW1wdGlvbnMuKQorI2lmIFBMQVRGT1JN
KERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdYKQogI2RlZmluZSBBUlJP
V19LRVlTX1BPUF9NRU5VIDEKICNlbHNlCiAjZGVmaW5lIEFSUk9XX0tFWVNfUE9QX01FTlUgMApA
QCAtNTA5LDYgKzUxMiwxOSBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc2V0KFNlbGVjdEVsZW1l
bnRECiAKICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CisgICAgCisjaWYg
IUFSUk9XX0tFWVNfUE9QX01FTlUKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZh
bGlkIGxpc3QgaXRlbSBpbiBkaXJlY3Rpb24gfGRpcnwgcGFzdCB8bGlzdEluZGV4fC4KK3N0YXRp
YyBpbnQgbmV4dFZhbGlkSW5kZXgoaW50IGxpc3RJbmRleCwgaW50IGRpciwgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgbGlzdEl0ZW1zKSB7CisgICAgQVNTRVJUKGRpciE9MCk7CisgICAgaW50IHNp
emUgPSBsaXN0SXRlbXMuc2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9IGRpcjsgbGlzdElu
ZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcikgeworICAgICAg
ICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpICYmIGlzT3B0aW9uRWxlbWVu
dChsaXN0SXRlbXNbbGlzdEluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4gbGlzdEluZGV4Owor
ICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisjZW5kaWYKIAogdm9pZCBTZWxlY3RFbGVtZW50Ojpt
ZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1l
bnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVtZW50KiBodG1sRm9ybSkKIHsK
QEAgLTUzNSwyNCArNTUxLDI0IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0
RXZlbnQKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
bGlzdEl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAgICAgIGludCBzaXplID0g
bGlzdEl0ZW1zLnNpemUoKTsKIAogICAgICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0
SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSk7Ci0gICAg
ICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdo
dCIpIHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4ICs9IDE7Ci0gICAgICAgICAgICAgICAg
IGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxpc3RJdGVtc1tsaXN0SW5k
ZXhdLT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0p
KTsKLSAgICAgICAgICAgICAgICAgKytsaXN0SW5kZXgpIHsgfQotICAgICAgICAgICAgaWYgKGxp
c3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAgICAgICAgICAgc2V0U2Vs
ZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50
LCBsaXN0SW5kZXgpKTsKKyAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCBrZXlJZGVudGlmaWVyID09ICJQYWdlRG93biIpIHsK
KyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJbmRleCwgMSwgbGlz
dEl0ZW1zKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYg
KGtleUlkZW50aWZpZXIgPT0gIlVwIiB8fCBrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJ
ZGVudGlmaWVyID09ICJQYWdlVXAiKSB7CisgICAgICAgICAgICBsaXN0SW5kZXggPSBuZXh0VmFs
aWRJbmRleChsaXN0SW5kZXgsIC0xLCBsaXN0SXRlbXMpOwogICAgICAgICAgICAgaGFuZGxlZCA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiIHx8IGtleUlk
ZW50aWZpZXIgPT0gIkxlZnQiKSB7Ci0gICAgICAgICAgICBmb3IgKGxpc3RJbmRleCAtPSAxOwot
ICAgICAgICAgICAgICAgICBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBzaXplICYmIChs
aXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSB8fCAhaXNPcHRpb25FbGVtZW50KGxpc3RJ
dGVtc1tsaXN0SW5kZXhdKSk7Ci0gICAgICAgICAgICAgICAgIC0tbGlzdEluZGV4KSB7IH0KLSAg
ICAgICAgICAgIGlmIChsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBzaXplKQotICAgICAg
ICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdFRvT3B0aW9uSW5k
ZXgoZGF0YSwgZWxlbWVudCwgbGlzdEluZGV4KSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRl
bnRpZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZElu
ZGV4KC0xLCAxLCBsaXN0SXRlbXMpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAg
ICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5kIikgeworICAgICAgICAgICAgbGlz
dEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLnNpemUoKSwgLTEsIGxpc3RJdGVtcyk7
CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDApCisgICAgICAgICAgICBzZXRTZWxlY3Rl
ZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGxp
c3RJbmRleCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChoYW5kbGVkKQogICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cg==
</data>
<flag name="review"
          id="16998"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32582</attachid>
            <date>2009-07-10 15:14:51 -0700</date>
            <delta_ts>2009-07-10 16:22:04 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>selectKeys.patch</filename>
            <type>text/plain</type>
            <size>4641</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTcyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDctMTAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIy
Nzg0OiBIb21lL0VuZCBhbmQgUGFnZVVwL1BhZ2VEbiBidXR0b25zIGRvIG5vdCBkbyBhbnl0aGlu
ZyBpbiBkcm9wIGRvd24gbGlzdHMsCisJCW9uIG5vbi1NYWMgcGxhdGZvcm1zIChub3IgaW4gdGhl
IE1hYyBidWlsZCBvZiBDaHJvbWl1bS4pCisJCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc4NAorCQlodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD00NTc2CisKKworICAgICAgICBObyBuZXcgdGVzdHM7IGFmZmVjdHMgb25s
eSB1c2VyIGlucHV0IGhhbmRsaW5nLCBub3QgbGF5b3V0IG9yIHJlbmRlcmluZy4KKworICAgICAg
ICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKwkJQ2hhbmdlZCBkZWZpbml0aW9uIG9mIEFSUk9X
X0tFWVNfUE9QX01FTlUgdG8gbWFrZSBpdCB0cnVlIGluIE1hYyBDaHJvbWl1bSwKKwkJc28gaXQg
d2lsbCBiZWhhdmUgY29tcGF0aWJseSB3aXRoIE1hYyBISSBndWlkZWxpbmVzIG9uIHBvcC11cCBt
ZW51cy4KKwkJSXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBQTEFURk9STShNQUMpIGJlIHRydWUg
aW4gdGhlIE1hYyBidWlsZCBvZiBDaHJvbWl1bS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxp
ZEluZGV4KTogCisJCU5ldyB1dGlsaXR5IGZuIGZvciB0cmF2ZXJzaW5nIGl0ZW1zIG9mIGEgc2Vs
ZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVm
YXVsdEV2ZW50SGFuZGxlcik6CisJCUFkZGVkIGNvZGUgdG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQ
YWdlVXAvUGFnZURuIHdoZW4gQVJST1dfS0VZU19QT1BfTUVOVSBpcyBmYWxzZS4KKwogMjAwOS0w
Ny0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwg
b3VyIFhjb2RlIHByb2plY3RzCkluZGV4OiBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNDU3
MTMpCisrKyBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsMTAgQEAKICNpbmNsdWRlICJXTUxTZWxlY3RFbGVtZW50LmgiCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykKKy8vIE9uIE1hYyBPUywgcG9wIHVwIHRoZSBtZW51IGlmIHRoZSB1
c2VyIHByZXNzZXMgdGhlIGFycm93IGtleXMgd2hpbGUgYSBTZWxlY3QgZWxlbWVudCBoYXMgZm9j
dXMuCisvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIGp1c3QgY2hhbmdlIHRoZSBzZWxlY3Rpb24uCisv
LyAoUExBVEZPUk0oTUFDKSBpcyBhbHdheXMgZmFsc2UgaW4gQ2hyb21pdW0sIGhlbmNlIHRoZSBl
eHRyYSB0ZXN0LikKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYg
UExBVEZPUk0oREFSV0lOKSkKICNkZWZpbmUgQVJST1dfS0VZU19QT1BfTUVOVSAxCiAjZWxzZQog
I2RlZmluZSBBUlJPV19LRVlTX1BPUF9NRU5VIDAKQEAgLTUwOSw2ICs1MTIsMjAgQEAgdm9pZCBT
ZWxlY3RFbGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RAogCiAgICAgZWxlbWVudC0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogfQorICAgIAorI2lmICFBUlJPV19LRVlTX1BPUF9NRU5VCisvLyBS
ZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBsaXN0IGl0ZW0gYmVmb3JlIG9yIGFm
dGVyIHxsaXN0SW5kZXh8Lgorc3RhdGljIGludCBuZXh0VmFsaWRJbmRleChpbnQgbGlzdEluZGV4
LCBib29sIGZvcndhcmQsIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcykKK3sKKyAg
ICBpbnQgc2tpcCA9IGZvcndhcmQgPyAxIDogLTE7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMu
c2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9IHNraXA7IGxpc3RJbmRleCA+PSAwICYmIGxp
c3RJbmRleCA8IHNpemU7IGxpc3RJbmRleCArPSBza2lwKSB7CisgICAgICAgIGlmICghbGlzdEl0
ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1ts
aXN0SW5kZXhdKSkKKyAgICAgICAgICAgIHJldHVybiBsaXN0SW5kZXg7CisgICAgfQorICAgIHJl
dHVybiAtMTsKK30KKyNlbmRpZgogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVs
dEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwg
RXZlbnQqIGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0bWxGb3JtKQogewpAQCAtNTM1LDI0ICs1
NTIsMjQgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudAogICAgICAg
ICB9CiAjZWxzZQogICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBk
YXRhLmxpc3RJdGVtcyhlbGVtZW50KTsKLSAgICAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6
ZSgpOwogCiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChkYXRhLCBl
bGVtZW50LCBzZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQpKTsKLSAgICAgICAgaWYgKGtleUlk
ZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJpZ2h0IikgewotICAgICAg
ICAgICAgZm9yIChsaXN0SW5kZXggKz0gMTsKLSAgICAgICAgICAgICAgICAgbGlzdEluZGV4ID49
IDAgJiYgbGlzdEluZGV4IDwgc2l6ZSAmJiAobGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVk
KCkgfHwgIWlzT3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdEluZGV4XSkpOwotICAgICAgICAg
ICAgICAgICArK2xpc3RJbmRleCkgeyB9Ci0gICAgICAgICAgICBpZiAobGlzdEluZGV4ID49IDAg
JiYgbGlzdEluZGV4IDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGRh
dGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RJbmRleCkp
OworICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRpZmllciA9
PSAiUmlnaHQiIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikgeworICAgICAgICAgICAg
bGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEluZGV4LCB0cnVlLCBsaXN0SXRlbXMpOwor
ICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRp
ZmllciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIkxlZnQiIHx8IGtleUlkZW50aWZpZXIg
PT0gIlBhZ2VVcCIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxp
c3RJbmRleCwgZmFsc2UsIGxpc3RJdGVtcyk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIgfHwga2V5SWRlbnRpZmll
ciA9PSAiTGVmdCIpIHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4IC09IDE7Ci0gICAgICAg
ICAgICAgICAgIGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxpc3RJdGVt
c1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xp
c3RJbmRleF0pKTsKLSAgICAgICAgICAgICAgICAgLS1saXN0SW5kZXgpIHsgfQotICAgICAgICAg
ICAgaWYgKGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAgICAgICAg
ICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRh
LCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVy
ID09ICJIb21lIikgeworICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgoLTEs
IHRydWUsIGxpc3RJdGVtcyk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAg
fSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJFbmQiKSB7CisgICAgICAgICAgICBsaXN0SW5k
ZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMuc2l6ZSgpLCBmYWxzZSwgbGlzdEl0ZW1zKTsK
ICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoaGFuZGxlZCAmJiBsaXN0SW5kZXggPj0gMCkKKyAgICAgICAgICAgIHNldFNlbGVjdGVk
SW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdFRvT3B0aW9uSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlz
dEluZGV4KSk7CiAjZW5kaWYKICAgICAgICAgaWYgKGhhbmRsZWQpCiAgICAgICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
</data>
<flag name="review"
          id="17000"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32590</attachid>
            <date>2009-07-10 16:22:04 -0700</date>
            <delta_ts>2009-07-20 11:40:24 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>selectKeys.patch</filename>
            <type>text/plain</type>
            <size>5167</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTcyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDctMTAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIy
Nzg0OiBJbXByb3ZlIGtleWJvYXJkIG5hdmlnYXRpb24gb2YgU2VsZWN0IGVsZW1lbnRzLgorICAg
ICAgICBIb21lL0VuZCBhbmQgUGFnZVVwL1BhZ2VEbiBidXR0b25zIGRvIG5vdCBkbyBhbnl0aGlu
ZyBpbiBkcm9wIGRvd24gbGlzdHMsCisgICAgICAgIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgorICAg
ICAgICBBbmQgdGhlIE1hYyBidWlsZCBvZiBDaHJvbWl1bSBkb2Vzbid0IGZvbGxvdyBNYWMgSEkg
Z3VpZGVsaW5lcyB0byBwb3AgdXAgdGhlIG1lbnUgd2hlbgorICAgICAgICBhbiBhcnJvdyBrZXkg
aXMgcHJlc3NlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzg0CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTQ1NzYKKworCisgICAgICAgIE5vIG5ldyB0ZXN0czsgYWZmZWN0cyBvbmx5
IHVzZXIgaW5wdXQgaGFuZGxpbmcsIG5vdCBsYXlvdXQgb3IgcmVuZGVyaW5nLgorCisgICAgICAg
ICogZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICBDaGFuZ2VkIGRlZmluaXRpb24gb2Yg
QVJST1dfS0VZU19QT1BfTUVOVSB0byBtYWtlIGl0IHRydWUgaW4gTWFjIENocm9taXVtLAorICAg
ICAgICBzbyBpdCB3aWxsIGJlaGF2ZSBjb21wYXRpYmx5IHdpdGggTWFjIEhJIGd1aWRlbGluZXMg
b24gcG9wLXVwIG1lbnVzLgorICAgICAgICBJdCdzIG5vdCBwb3NzaWJsZSB0byBoYXZlIFBMQVRG
T1JNKE1BQykgYmUgdHJ1ZSBpbiB0aGUgTWFjIGJ1aWxkIG9mIENocm9taXVtLgorICAgICAgICAo
V2ViQ29yZTo6bmV4dFZhbGlkSW5kZXgpOiAKKyAgICAgICAgTmV3IHV0aWxpdHkgZm4gZm9yIHRy
YXZlcnNpbmcgaXRlbXMgb2YgYSBzZWxlY3QncyBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6cHJl
dmlvdXNWYWxpZEluZGV4KTogCisgICAgICAgIE5ldyB1dGlsaXR5IGZuIGZvciB0cmF2ZXJzaW5n
IGl0ZW1zIG9mIGEgc2VsZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1l
bnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIEFkZGVkIGNvZGUgdG8g
aGFuZGxlIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIHdoZW4gQVJST1dfS0VZU19QT1BfTUVO
VSBpcyBmYWxzZS4KKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3RzCkluZGV4OiBXZWJDb3JlL2Rv
bS9TZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TZWxlY3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gNDU3MTMpCisrKyBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsMTAgQEAKICNpbmNsdWRlICJXTUxTZWxlY3RF
bGVtZW50LmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKy8vIE9uIE1hYyBPUywgcG9w
IHVwIHRoZSBtZW51IGlmIHRoZSB1c2VyIHByZXNzZXMgdGhlIGFycm93IGtleXMgd2hpbGUgYSBT
ZWxlY3QgZWxlbWVudCBoYXMgZm9jdXMuCisvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIGp1c3QgY2hh
bmdlIHRoZSBzZWxlY3Rpb24uCisvLyAoUExBVEZPUk0oTUFDKSBpcyBhbHdheXMgZmFsc2UgaW4g
Q2hyb21pdW0sIGhlbmNlIHRoZSBleHRyYSB0ZXN0LikKKyNpZiBQTEFURk9STShNQUMpIHx8IChQ
TEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oREFSV0lOKSkKICNkZWZpbmUgQVJST1dfS0VZ
U19QT1BfTUVOVSAxCiAjZWxzZQogI2RlZmluZSBBUlJPV19LRVlTX1BPUF9NRU5VIDAKQEAgLTUw
OSw2ICs1MTIsMjYgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RAog
CiAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQorICAgIAorI2lmICFBUlJP
V19LRVlTX1BPUF9NRU5VCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBs
aXN0IGl0ZW0gYWZ0ZXIgfGxpc3RJbmRleHwsIG9yIC0xLgorc3RhdGljIGludCBuZXh0VmFsaWRJ
bmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5kZXgsIGJv
b2wgZm9yd2FyZCA9IHRydWUpCit7CisgICAgaW50IHNraXAgPSBmb3J3YXJkID8gMSA6IC0xOwor
ICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKGxpc3RJbmRleCArPSBz
a2lwOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gc2tp
cCkgeworICAgICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpICYmIGlz
T3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdEluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4g
bGlzdEluZGV4OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIFJldHVybnMgdGhlIGlu
ZGV4IG9mIHRoZSBwcmV2aW91cyB2YWxpZCBsaXN0IGl0ZW0gYmVmb3JlIHxsaXN0SW5kZXh8LCBv
ciAtMS4KK2lubGluZSBzdGF0aWMgaW50IHByZXZpb3VzVmFsaWRJbmRleChjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5kZXgpCit7CisgICAgcmV0dXJuIG5leHRW
YWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEluZGV4LCBmYWxzZSk7Cit9CisjZW5kaWYKIAogdm9p
ZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVt
ZW50KiBodG1sRm9ybSkKIHsKQEAgLTUzNSwyNCArNTU4LDI0IEBAIHZvaWQgU2VsZWN0RWxlbWVu
dDo6bWVudUxpc3REZWZhdWx0RXZlbnQKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0g
ICAgICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKIAogICAgICAgICBpbnQgbGlzdElu
ZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRh
LCBlbGVtZW50KSk7Ci0gICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJ
ZGVudGlmaWVyID09ICJSaWdodCIpIHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4ICs9IDE7
Ci0gICAgICAgICAgICAgICAgIGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYg
KGxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlz
dEl0ZW1zW2xpc3RJbmRleF0pKTsKLSAgICAgICAgICAgICAgICAgKytsaXN0SW5kZXgpIHsgfQot
ICAgICAgICAgICAgaWYgKGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAg
ICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25J
bmRleChkYXRhLCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKKyAgICAgICAgaWYgKGtleUlkZW50aWZp
ZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCBrZXlJZGVudGlmaWVy
ID09ICJQYWdlRG93biIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4
KGxpc3RJdGVtcywgbGlzdEluZGV4KTsKICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIiB8fCBrZXlJZGVudGlmaWVyID09
ICJMZWZ0IikgewotICAgICAgICAgICAgZm9yIChsaXN0SW5kZXggLT0gMTsKLSAgICAgICAgICAg
ICAgICAgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZSAmJiAobGlzdEl0ZW1zW2xp
c3RJbmRleF0tPmRpc2FibGVkKCkgfHwgIWlzT3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdElu
ZGV4XSkpOwotICAgICAgICAgICAgICAgICAtLWxpc3RJbmRleCkgeyB9Ci0gICAgICAgICAgICBp
ZiAobGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBz
ZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVs
ZW1lbnQsIGxpc3RJbmRleCkpOworICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0g
IlVwIiB8fCBrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09ICJQYWdl
VXAiKSB7CisgICAgICAgICAgICBsaXN0SW5kZXggPSBwcmV2aW91c1ZhbGlkSW5kZXgobGlzdEl0
ZW1zLCBsaXN0SW5kZXgpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0g
ZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRl
eCA9IG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcywgLTEpOworICAgICAgICAgICAgaGFuZGxlZCA9
IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5kIikgeworICAg
ICAgICAgICAgbGlzdEluZGV4ID0gcHJldmlvdXNWYWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEl0
ZW1zLnNpemUoKSk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDApCisgICAgICAgICAg
ICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEs
IGVsZW1lbnQsIGxpc3RJbmRleCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChoYW5kbGVkKQogICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cg==
</data>
<flag name="review"
          id="17007"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32594</attachid>
            <date>2009-07-10 17:05:56 -0700</date>
            <delta_ts>2009-07-19 22:40:05 -0700</delta_ts>
            <desc>Proposed fix for bug 22784</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>22625</size>
            <attacher name="Neil Rhodes">nrhodes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NTI3NikKKysrIFdlYkNvcmUvZG9t
L1NlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwzMSBAQCB2b2lk
IFNlbGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKFNlCiAgICAgfQogfQogCisvLyByZXR1
cm5zIGFuIGVsZW1lbnQgdGhhdCBpcyBzZWxlY3RhYmxlIGEgcGFnZSBhd2F5IGZyb20gc3RhcnRJ
bmRleC4KK2ludCBTZWxlY3RFbGVtZW50OjpzZWxlY3RhYmxlTGlzdEluZGV4UGFnZUZyb20oU2Vs
ZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4LCBi
b29sIHBhZ2VEb3duKQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0
YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgLy8gY2FuJ3QgdXNlIGRhdGEtPnNpemUoKSBiZWNh
dXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6ZQorICAgIGludCBwYWdlU2l6ZSA9IHN0
YXRpY19jYXN0PFJlbmRlckxpc3RCb3gqPihlbGVtZW50LT5yZW5kZXJlcigpKS0+c2l6ZSgpIC0g
MTsgIC8vIC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dAorICAgIGludCBsaXN0U2l6ZSA9IGl0
ZW1zLnNpemUoKTsKKyAgICAKKyAgICBpbnQgaW5kZXhPbmVQYWdlQXdheSA9IG9wdGlvblRvTGlz
dEluZGV4KGRhdGEsIGVsZW1lbnQsIG1heCgwLCBtaW4obGlzdFNpemUgLTEsIHN0YXJ0SW5kZXgg
KyAgKHBhZ2VEb3duID8gcGFnZVNpemUgOiAtcGFnZVNpemUpKSkpOworICAKKyAgICBpbnQgaW5k
ZXggPSBpbmRleE9uZVBhZ2VBd2F5OworICAgIC8vIHN0YXJ0IGEgcGFnZSBhd2F5IGFuZCBrZWVw
IGdvaW5nIGluIHRoZSBzYW1lIGRpcmVjdGlvbiB0byBmaW5kIGEgdmFsaWQgaW5kZXgKKyAgICB3
aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGxpc3RTaXplICYmICghaXNPcHRpb25FbGVtZW50
KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxlZCgpKSkKKyAgICAgICAgcGFn
ZURvd24gPyArK2luZGV4IDogLS1pbmRleDsKKyAgICBpZiAoaW5kZXggPCAwIHx8ICh1bnNpZ25l
ZCkgaW5kZXggPT0gaXRlbXMuc2l6ZSgpKSB7CisgICAgICAgIC8vIGNvdWxkbid0IGZpbmQgb25l
IGluIHRoYXQgZGlyZWN0aW9uOyBnbyBiYWNrIHRoZSBvdGhlciB3YXkKKyAgICAgICAgaW5kZXgg
PSBwYWdlRG93biA/IChpbmRleE9uZVBhZ2VBd2F5IC0gMSkgOiAoaW5kZXhPbmVQYWdlQXdheSAr
IDEpOworICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGxpc3RTaXplICYmICgh
aXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxlZCgp
KSkKKyAgICAgICAgICAgIHBhZ2VEb3duID8gLS1pbmRleCA6ICsraW5kZXg7CisgICAgfQorICAg
IGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdFNpemUpCisgICAgICAgIHJldHVybiBzdGFy
dEluZGV4OworICAgIHJldHVybiBpbmRleDsKK30KKwogaW50IFNlbGVjdEVsZW1lbnQ6Om5leHRT
ZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVt
ZW50LCBpbnQgc3RhcnRJbmRleCkKIHsKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVt
cyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpOwpAQCAtMTIwLDYgKzE0NSwyNiBAQCBpbnQgU2Vs
ZWN0RWxlbWVudDo6cHJldmlvdXNTZWxlY3RhYmxlTGlzCiAgICAgcmV0dXJuIGluZGV4OwogfQog
CitpbnQgU2VsZWN0RWxlbWVudDo6Zmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1l
bnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0g
MDsKKyAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6
ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5k
aXNhYmxlZCgpKSkKKyAgICAgICAgKytpbmRleDsKKyAgICBpZiAoKHVuc2lnbmVkKSBpbmRleCA9
PSBpdGVtcy5zaXplKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gaW5kZXg7Cit9
CisgIAoraW50IFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVs
ZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4
ID0gaXRlbXMuc2l6ZSgpIC0gMTsKKyAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQp
IGluZGV4IDwgaXRlbXMuc2l6ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkg
fHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxlZCgpKSkKKyAgICAgICAgLS1pbmRleDsKKyAgICByZXR1
cm4gaW5kZXg7Cit9CisKIHZvaWQgU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBp
bmRleCkKIHsKICAgICBkYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGluZGV4KTsK
QEAgLTY4OSwxNSArNzM0LDI5IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRF
dmVudEgKICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4
KGRhdGEsIGVsZW1lbnQsIGxhc3RTZWxlY3RlZExpc3RJbmRleChkYXRhLCBlbGVtZW50KSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCiAgICAgICAgICAgICAg
ICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwg
b3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVt
ZW50KSkpOworICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZURvd24i
KQorICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9t
KGRhdGEsIGVsZW1lbnQsIGxhc3RTZWxlY3RlZExpc3RJbmRleChkYXRhLCBlbGVtZW50KSwgdHJ1
ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlVXAiKQorICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9tKGRhdGEs
IGVsZW1lbnQsIHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCksIGZhbHNlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNldCB0aGUgZW5kIGluZGV4IGJhc2VkIG9uIHRoZSBj
dXJyZW50IGVuZCBpbmRleAogICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24i
KQogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0
YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKICAgICAgICAgICAg
IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikKICAgICAgICAgICAgICAgICBlbmRJbmRl
eCA9IHByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2
ZVNlbGVjdGlvbkVuZEluZGV4KCkpOyAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlVwIikgewor
ICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZURvd24iKQorICAgICAg
ICAgICAgICAgIGVuZEluZGV4ID0gc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9tKGRhdGEsIGVs
ZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlVXAiKQorICAgICAgICAgICAgICAgIGVu
ZEluZGV4ID0gc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9tKGRhdGEsIGVsZW1lbnQsIGRhdGEu
YWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSwgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIGlm
IChrZXlJZGVudGlmaWVyID09ICJIb21lIikKKyAgICAgICAgICAgIGVuZEluZGV4ID0gZmlyc3RT
ZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICBlbHNlIGlmIChrZXlJ
ZGVudGlmaWVyID09ICJFbmQiKQorICAgICAgICAgICAgZW5kSW5kZXggPSBsYXN0U2VsZWN0YWJs
ZUxpc3RJbmRleChkYXRhLCBlbGVtZW50KTsKKyAgICAgIAorICAgICAgICBpZiAoZW5kSW5kZXgg
Pj0gMCAmJiAKKwkJICAgICAgICAoa2V5SWRlbnRpZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRp
ZmllciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIkhvbWUiCisgICAgICAgICAgICAgICAg
fHwgIGtleUlkZW50aWZpZXIgPT0gIkVuZCIgfHwga2V5SWRlbnRpZmllciA9PSAiUGFnZURvd24i
IHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpKSB7CiAgICAgICAgICAgICAvLyBTYXZlIHRo
ZSBzZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdo
ZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhl
IG5ldyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbihkYXRhLCBlbGVt
ZW50KTsKIApJbmRleDogV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gNDUyNzYpCisrKyBXZWJDb3Jl
L2RvbS9TZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDEwIEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyB2b2lkIHNlbGVjdEFsbChTZWxlY3RFbGVtZW50RGF0YSYs
IEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBzYXZlTGFzdFNlbGVjdGlvbihTZWxlY3RFbGVt
ZW50RGF0YSYsIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgaW50IHNlbGVjdGFibGVMaXN0SW5kZXhQ
YWdlRnJvbShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0
YXJ0SW5kZXgsIGJvb2wgcGFnZURvd24pOwogICAgIHN0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVM
aXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwor
ICAgIHN0YXRpYyBpbnQgZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRh
JiwgRWxlbWVudCopOworICAgIHN0YXRpYyBpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoU2Vs
ZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGludCBwcmV2aW91c1NlbGVj
dGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5k
ZXgpOwogICAgIHN0YXRpYyB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KFNlbGVj
dEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBpbmRleCk7CiAgICAgc3RhdGljIHZvaWQgc2V0
QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBpbnQgaW5kZXgpOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkocmV2aXNpb24gNDUyNzYpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcy
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRl
eChpbnQgaW5kZXgpOwogICAgIGJvb2wgbGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCk7Cisg
IAorICAgIGludCBzaXplKCkgY29uc3Q7IC8vIFJldHVybnMgdGhlIG1heCBudW1iZXIgb2YgaXRl
bXMgdGhhdCBjYW4gYmUgZGlzcGxheWVkIGF0IGEgdGltZQogCiAgICAgdmlydHVhbCBib29sIGNh
bkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoYm9vbCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CkBAIC0xMDgsNyArMTEwLDYgQEAgcHJpdmF0
ZToKICAgICAKICAgICBpbnQgaXRlbUhlaWdodCgpIGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFu
Z2VkKHVuc2lnbmVkIGxpc3RJbmRleCk7Ci0gICAgaW50IHNpemUoKSBjb25zdDsKICAgICBpbnQg
bnVtVmlzaWJsZUl0ZW1zKCkgY29uc3Q7CiAgICAgaW50IG51bUl0ZW1zKCkgY29uc3Q7CiAgICAg
aW50IGxpc3RIZWlnaHQoKSBjb25zdDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBIb21lL0Vu
ZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVjdD4gZWxlbWVu
dHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdpbGwgbm90IHJ1
biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBydW4td2Via2l0
LXRlc3RzLgorCisgIAordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVz
dFBhZ2VVcE5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RIb21lTm9EaXNhYmxlZEVsZW1l
bnRzIHBhc3NlZAordGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RQYWdlRG93
bldpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVzdFBhZ2VVcFdpdGhEaXNhYmxlZEVsZW1l
bnRzIHBhc3NlZAordGVzdEhvbWVXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RFbmRX
aXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RWYXJpb3VzU2hpZnRLZXlzTm9EaXNhYmxl
ZEVsZW1lbnRzIHBhc3NlZAordGVzdFZhcmlvdXNTaGlmdEtleXNXaXRoRGlzYWJsZWRFbGVtZW50
cyBwYXNzZWQKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0
LWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxl
Y3QtZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2VsZWN0LWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMzQgQEAKKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBsb2cocykKKyAgICB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlhbEluZGV4LCBleHBlY3RlZElu
ZGV4KSB7CisgICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxl
Y3RJZCk7CisgICAgICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCk7CisgICAgICAgIHNlbGVjdC5m
b2N1cygpOworICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IGluaXRpYWxJbmRleDsKKyAg
ICAgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGluaXRpYWxJbmRleCkgeworICAgICAg
ICAgICAgbG9nKCJjYW4ndCBzZXQgc2VsZWN0ZWRJbmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsg
JyAoaXMgJworICAgICAgICAgICAgKyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpJyk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5KTsK
KyAgICAgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4cGVjdGVkSW5kZXgpIHsKKyAg
ICAgICAgICAgIGxvZygnc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgJyArIGV4cGVjdGVkSW5kZXgg
KyAnIChpcyAnICsKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpIGFm
dGVyIGEgJyArIGtleSArIAorICAgICAgICAgICAgICAgICcgZnJvbSBpbmRleCAnICsgaW5pdGlh
bEluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYTEsIGEy
KSB7CisgICAgICAgIGlmIChhMS5sZW5ndGggIT0gYTIubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYTEubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGZ1
bmN0aW9uIGR1bXBBcnJheShhKSB7CisgICAgICAgIHMgPSAiWyI7CisgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBzID0gcyArIGFbaV07CisgICAg
ICAgICAgICBpZiAoaSA8IGEubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICAgcyA9IHMgKyAi
LCAiOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzICsgIl0iOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBnZXRTZWxlY3RlZEluZGljZXMoc2VsZWN0KSB7CisgICAgICAgIG5vd1NlbGVj
dGVkID0gW107CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGlmIChzZWxlY3Qub3B0aW9uc1tpXS5zZWxlY3RlZCkKKyAgICAg
ICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAgICAgIHJldHVybiBub3dTZWxl
Y3RlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY2xlYXJTZWxlY3Rpb24oc2VsZWN0KSB7
CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgIHNlbGVjdC5vcHRpb25zW2ldLnNlbGVjdGVkID0gZmFsc2U7CisgICAgfQorICAg
IAorICAgIC8vIGV4cGVjdGVkSW5kaWNlcyBzaG91bGQgYmUgaW4gc29ydGVkIG9yZGVyCisgICAg
ZnVuY3Rpb24gc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoc2VsZWN0SWQsIGtleSwg
ZXhwZWN0ZWRJbmRpY2VzKSB7CisgICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChzZWxlY3RJZCk7CisgICAgICAgIHNlbGVjdC5mb2N1cygpOworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bihrZXksIFsic2hpZnRLZXkiXSk7CisgICAgICAgIG5vd1NlbGVjdGVkID0gZ2V0U2VsZWN0
ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgICAgIGlmICghZXF1YWxBcnJheXMobm93U2VsZWN0ZWQs
IGV4cGVjdGVkSW5kaWNlcykpIHsKKyAgICAgICAgICAgIGxvZygnc2VsZWN0ZWQgaW5kaWNlcyBz
aG91bGQgYmUgJyArIGR1bXBBcnJheShleHBlY3RlZEluZGljZXMpICsgJyAoaXMgJyArCisgICAg
ICAgICAgICAgICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcpIGFmdGVyIGEgJyArIGtleSk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRz
KCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIsIDAsIDMpOworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdl
RG93biIsIDEsIDQpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJwYWdlRG93biIsIDIsIDUpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIsIDMsIDYpOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93
biIsIDQsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJwYWdlRG93biIsIDUsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIsIDYsIDYpOworCisgICAgICAg
IGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVt
ZW50cyBwYXNzZWQnKTsKKyAgICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2Vk
ID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJwYWdlVXAiLCA2LCAzKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAicGFnZVVwIiwgNSwgMik7CisgICAgICAgIHBhc3Nl
ZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgInBhZ2VVcCIsIDQsIDEp
OworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycs
ICJwYWdlVXAiLCAzLCAwKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgnc3MnLCAicGFnZVVwIiwgMiwgMCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgInBhZ2VVcCIsIDEsIDApOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlVXAi
LCAwLCAwKTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0UGFn
ZVVwTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpIHsK
KyAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiaG9tZSIsIDYsIDApOworICAgICAgICBwYXNz
ZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJob21lIiwgNSwgMCk7
CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywg
ImhvbWUiLCA0LCAwKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgnc3MnLCAiaG9tZSIsIDMsIDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJob21lIiwgMiwgMCk7CisgICAgICAgIHBhc3Nl
ZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgImhvbWUiLCAxLCAwKTsK
KyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAi
aG9tZSIsIDAsIDApOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rl
c3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2Vk
OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0RW5kTm9EaXNhYmxlZEVsZW1lbnRzKCkg
eworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJlbmQiLCA2LCA2KTsKKyAgICAgICAgcGFz
c2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiZW5kIiwgNSwgNik7
CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywg
ImVuZCIsIDQsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJlbmQiLCAzLCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiZW5kIiwgMiwgNik7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgImVuZCIsIDEsIDYpOworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJlbmQi
LCAwLCA2KTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0RW5k
Tm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFnZURvd24iLCAxLCA0KTsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgInBhZ2VEb3du
IiwgMiwgNSk7IAorICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzc2QnLCAicGFnZURvd24iLCA0LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgInBhZ2VEb3duIiwgNSwgNik7CisgICAgICAg
IHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJwYWdlRG93
biIsIDYsIDYpOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RQ
YWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFz
c2VkOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0UGFnZVVwV2l0aERpc2FibGVkRWxl
bWVudHMoKSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJwYWdlVXAiLCA2LCAyKTsK
KyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywg
InBhZ2VVcCIsIDUsIDIpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCdzc2QnLCAicGFnZVVwIiwgNCwgMSk7IAorICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFnZVVwIiwgMiwgMSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJwYWdl
VXAiLCAxLCAxKTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0
UGFnZVVwV2l0aERpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNz
ZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RIb21lV2l0aERpc2FibGVkRWxlbWVu
dHMoKSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHBh
c3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgNywgMSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21l
IiwgNiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoJ3NzZCcsICJob21lIiwgNSwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgNCwgMSk7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgMywgMSk7Cisg
ICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJo
b21lIiwgMiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoJ3NzZCcsICJob21lIiwgMSwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgMCwgMSk7CisKKyAgICAgICAgaWYg
KHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygndGVzdEhvbWVXaXRoRGlzYWJsZWRFbGVtZW50cyBw
YXNzZWQnKTsKKyAgICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gdGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0g
dHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4
KCdzc2QnLCAiZW5kIiwgNywgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJlbmQiLCA2LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgImVuZCIsIDUsIDYpOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiZW5kIiwg
NCwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
J3NzZCcsICJlbmQiLCAzLCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgnc3NkJywgImVuZCIsIDIsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiZW5kIiwgMSwgNik7CisgICAgICAg
IHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJlbmQiLCAw
LCA2KTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0RW5kV2l0
aERpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RWYXJpb3VzU2hpZnRLZXlzTm9EaXNhYmxlZEVsZW1l
bnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHZh
ciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3MnKTsKKyAgICAgICAgc2VsZWN0
LmZvY3VzKCk7CisgICAgICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCk7CisgICAgICAgIHNlbGVj
dC5zZWxlY3RlZEluZGV4ID0gMDsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgInBhZ2VEb3duIiwgWzAsIDEsIDIsIDNd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzcycsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSk7CisgICAgICAg
IHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3Mn
LCAicGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pOworICAgICAgICBwYXNzZWQgPSBw
YXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgInBhZ2VVcCIs
IFswLCAxLCAyLCAzXSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAicGFnZVVwIiwgWzBdKTsKKyAgICAgICAgcGFzc2Vk
ID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJwYWdl
VXAiLCBbMF0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoJ3NzJywgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygn
c3MnLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJob21lIiwgWzBd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzcycsICJob21lIiwgWzBdKTsKKyAgICAgICAgCisgICAgICAgIGNsZWFyU2VsZWN0
aW9uKHNlbGVjdCk7CisgICAgICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMzsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycs
ICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAicGFnZURvd24iLCBbMywgNCwg
NSwgNl0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoJ3NzJywgInBhZ2VVcCIsIFszXSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAicGFnZVVwIiwgWzAs
IDEsIDIsIDNdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCdzcycsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pOworICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywg
InBhZ2VVcCIsIFswLCAxLCAyLCAzXSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAiZW5kIiwgWzMsIDQsIDUsIDZdKTsK
KyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRp
Y2VzKCdzcycsICJlbmQiLCBbMywgNCwgNSwgNl0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgImhvbWUiLCBbMCwgMSwg
MiwgM10pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoJ3NzJywgImhvbWUiLCBbMCwgMSwgMiwgM10pOworCisgICAgICAgIGlmIChw
YXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RWYXJpb3VzU2hpZnRLZXlzTm9EaXNhYmxlZEVs
ZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHZhciBzZWxlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAgICAgIHNlbGVjdC5mb2N1cygp
OworICAgICAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgICAgICBzZWxlY3Quc2VsZWN0
ZWRJbmRleCA9IDE7CisKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZURvd24iLCBbMSwgMiwgNF0pOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3Nz
ZCcsICJwYWdlRG93biIsIFsxLCAyLCA0LCA1LCA2XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3NkJywgInBhZ2VEb3duIiwg
WzEsIDIsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzEsIDJdKTsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2Qn
LCAicGFnZVVwIiwgWzFdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzFdKTsKKyAgICAgICAgcGFz
c2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAi
ZW5kIiwgWzEsIDIsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRX
aXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiZW5kIiwgWzEsIDIsIDQsIDUsIDZd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzc2QnLCAiaG9tZSIsIFsxXSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3NkJywgImhvbWUiLCBbMV0pOworICAg
ICAgICAKKyAgICAgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICAgICAgc2VsZWN0LnNl
bGVjdGVkSW5kZXggPSA0OworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlm
dEtleUFuZEV4cGVjdEluZGljZXMoJ3NzZCcsICJwYWdlRG93biIsIFs0LCA1LCA2XSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygn
c3NkJywgInBhZ2VEb3duIiwgWzQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzIsIDRd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzEsIDIsIDRdKTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwg
WzEsIDIsIDRdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiZW5kIiwgWzQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2Vk
ID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiZW5k
IiwgWzQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiaG9tZSIsIFsxLCAyLCA0XSk7CisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3NkJywg
ImhvbWUiLCBbMSwgMiwgNF0pOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgbG9n
KCd0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAg
ICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAg
ICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHZhciBwYXNzZWQg
PSB0cnVlOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVzdFBhZ2VEb3duTm9EaXNhYmxl
ZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0UGFnZVVwTm9EaXNh
YmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0SG9tZU5vRGlz
YWJsZWRFbGVtZW50cygpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVzdEVuZE5vRGlz
YWJsZWRFbGVtZW50cygpOworCisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0UGFnZURv
d25XaXRoRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVz
dFBhZ2VVcFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiB0ZXN0SG9tZVdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAgCisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiB0ZXN0VmFyaW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygp
OworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVzdFZhcmlvdXNTaGlmdEtleXNXaXRoRGlz
YWJsZWRFbGVtZW50cygpOworICAgICAgICAKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAg
ICAgIGxvZygnU1VDQ0VTUycpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coJ0ZBSUxV
UkUnKTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIEhvbWUvRW5kL1BhZ2VVcC9Q
YWdlRG93biBrZXlzIHdvcmsgY29ycmVjdGx5Citmb3IgJmx0O3NlbGVjdCZndDsgZWxlbWVudHMu
ICBTaW5jZSBpdCByZXF1aXJlcyA8Q09ERT5ldmVudFNlbmRlci5rZXlEb3duPC9DT0RFPiwgaXQg
d2lsbCBub3QgcnVuIHNvbG8gaW4gdGhlIHdlYiBicm93c2VyOyBpdCBtdXN0IGJlIHJ1bgord2l0
aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorICAgIDxocj4KKyAgPGZvcm0+Cisg
ICAgICAgICA8IS0tIFdlIHNwZWNpZnkgYSBzaXplIG9mIDMgYnV0IHdpbGwgZW5kIHVwIHJlbmRl
cmluZyB3aXRoIDQgYmVjYXVzZSB3ZWJraXQgaW1wb3NlcyBhIG1pbmltdW0gc2l6ZSBvZiA0LiAK
KyAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoZSBj
b2RlIGhhbmRsZXMgdGhpcyBjYXNlICAtLT4KKyAgICAgICAgPHNlbGVjdCBuYW1lPSJzaW5nbGVz
ZWxlY3QiIGlkPSJzcyIKKyAgICAgICAgICAgICAgICBzaXplPSIzIiBtdWx0aXBsZT0idHJ1ZSI+
CisgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlvbj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIy
Ij4yIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+MyA8L29wdGlvbj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
NiI+NiA8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgIDxzZWxlY3QgIG5hbWU9
InNpbmdsZXNlbGVjdHdpdGhkaXNhYmxlZCIgaWQ9InNzZCIKKyAgICAgICAgICAgICAgICBzaXpl
PSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCIgZGlz
YWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4x
IDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiI+MiA8L29wdGlvbj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0cnVlIj4zIDwvb3B0aW9uPgor
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2
Ij42IDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNyIgZGlzYWJsZWQgPSAi
dHJ1ZSI+NyA8L29wdGlvbj4gICAgICAgICAgICAKKyAgICAgICAgPC9zZWxlY3Q+CisgICAgPC9m
b3JtPgorICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="17011"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33096</attachid>
            <date>2009-07-20 11:40:24 -0700</date>
            <delta_ts>2009-07-21 16:03:46 -0700</delta_ts>
            <desc>Updated, more focused patch</desc>
            <filename>selectKeys_take2.patch</filename>
            <type>text/plain</type>
            <size>4122</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDctMjAgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcg
MjI3ODQ6IEltcHJvdmUga2V5Ym9hcmQgbmF2aWdhdGlvbiBvZiBTZWxlY3QgZWxlbWVudHMuCisg
ICAgICAgIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIGJ1dHRvbnMgZG8gbm90IGRvIGFueXRo
aW5nIGluIGRyb3AgZG93biBsaXN0cywKKyAgICAgICAgb24gbm9uLU1hYyBwbGF0Zm9ybXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NAorICAg
ICAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00
NTc2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBhZmZlY3RzIG9ubHkgdXNlciBpbnB1dCBoYW5k
bGluZy4KKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5leHRWYWxpZEluZGV4KTogCisgICAgICAgIE5ldyB1dGlsaXR5IGZuIGZvciB0cmF2ZXJz
aW5nIGl0ZW1zIG9mIGEgc2VsZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVs
ZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIEFkZGVkIGNvZGUg
dG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIHdoZW4gQVJST1dfS0VZU19QT1Bf
TUVOVSBpcyBmYWxzZS4KKwogMjAwOS0wNy0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29y
ZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDQ2MTI1KQorKysgV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNCw2ICs1MTQsMjQgQEAgdm9pZCBTZWxlY3RFbGVt
ZW50OjpyZXNldChTZWxlY3RFbGVtZW50RAogCiAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQorICAgIAorI2lmICFBUlJPV19LRVlTX1BPUF9NRU5VCitlbnVtIFNraXBEaXJl
Y3Rpb24geworICAgIGtTa2lwQmFja3dhcmRzID0gLTEsCisgICAga1NraXBGb3J3YXJkcyA9IDEK
K307CisKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGxpc3QgaXRlbSBh
ZnRlciB8bGlzdEluZGV4fCBpbiBkaXJlY3Rpb24gfHNraXB8LCBvciAtMS4KK3N0YXRpYyBpbnQg
bmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlz
dEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpbnQgc2l6ZSA9IGxpc3RJ
dGVtcy5zaXplKCk7CisgICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXgg
Pj0gMCAmJiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7CisgICAg
ICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVt
ZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkKKyAgICAgICAgICAgIHJldHVybiBsaXN0SW5kZXg7
CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKyNlbmRpZgogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6
Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxl
bWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0bWxGb3JtKQog
ewpAQCAtNTQwLDI0ICs1NTgsMjQgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1
bHRFdmVudAogICAgICAgICB9CiAjZWxzZQogICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBsaXN0SXRlbXMgPSBkYXRhLmxpc3RJdGVtcyhlbGVtZW50KTsKLSAgICAgICAgaW50IHNpemUg
PSBsaXN0SXRlbXMuc2l6ZSgpOwogCiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xp
c3RJbmRleChkYXRhLCBlbGVtZW50LCBzZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQpKTsKLSAg
ICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJp
Z2h0IikgewotICAgICAgICAgICAgZm9yIChsaXN0SW5kZXggKz0gMTsKLSAgICAgICAgICAgICAg
ICAgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZSAmJiAobGlzdEl0ZW1zW2xpc3RJ
bmRleF0tPmRpc2FibGVkKCkgfHwgIWlzT3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdEluZGV4
XSkpOwotICAgICAgICAgICAgICAgICArK2xpc3RJbmRleCkgeyB9Ci0gICAgICAgICAgICBpZiAo
bGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBzZXRT
ZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1l
bnQsIGxpc3RJbmRleCkpOworICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIgfHwg
a2V5SWRlbnRpZmllciA9PSAiUmlnaHQiIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikg
eworICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLCBsaXN0
SW5kZXgsIGtTa2lwRm9yd2FyZHMpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAg
ICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0g
IkxlZnQiIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAgICAgIGxpc3RJ
bmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEluZGV4LCBrU2tpcEJhY2t3YXJk
cyk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChrZXlJ
ZGVudGlmaWVyID09ICJVcCIgfHwga2V5SWRlbnRpZmllciA9PSAiTGVmdCIpIHsKLSAgICAgICAg
ICAgIGZvciAobGlzdEluZGV4IC09IDE7Ci0gICAgICAgICAgICAgICAgIGxpc3RJbmRleCA+PSAw
ICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgp
IHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKTsKLSAgICAgICAgICAg
ICAgICAgLS1saXN0SW5kZXgpIHsgfQotICAgICAgICAgICAgaWYgKGxpc3RJbmRleCA+PSAwICYm
IGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRh
LCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50LCBsaXN0SW5kZXgpKTsK
KyAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJIb21lIikgeworICAgICAgICAg
ICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLCAtMSwga1NraXBGb3J3YXJk
cyk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlJ
ZGVudGlmaWVyID09ICJFbmQiKSB7CisgICAgICAgICAgICBsaXN0SW5kZXggPSBuZXh0VmFsaWRJ
bmRleChsaXN0SXRlbXMsIGxpc3RJdGVtcy5zaXplKCksIGtTa2lwQmFja3dhcmRzKTsKICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
aGFuZGxlZCAmJiBsaXN0SW5kZXggPj0gMCkKKyAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgo
ZGF0YSwgZWxlbWVudCwgbGlzdFRvT3B0aW9uSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdEluZGV4
KSk7CiAjZW5kaWYKICAgICAgICAgaWYgKGhhbmRsZWQpCiAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsK
</data>
<flag name="review"
          id="17424"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33224</attachid>
            <date>2009-07-21 16:03:46 -0700</date>
            <delta_ts>2009-07-22 16:43:52 -0700</delta_ts>
            <desc>Updated patch with test case</desc>
            <filename>selectKeys_take3.patch</filename>
            <type>text/plain</type>
            <size>18101</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjE5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDctMjEgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcg
MjI3ODQ6IEltcHJvdmUga2V5Ym9hcmQgbmF2aWdhdGlvbiBvZiBTZWxlY3QgZWxlbWVudHMuCisg
ICAgICAgIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIGJ1dHRvbnMgZG8gbm90IGRvIGFueXRo
aW5nIGluIGRyb3AgZG93biBsaXN0cywKKyAgICAgICAgb24gbm9uLU1hYyBwbGF0Zm9ybXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NAorICAg
ICAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00
NTc2CisKKyAgICAgICAgTmV3IHRlc3Q6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBv
cHVwLXBhZ2VrZXlzLmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogCisgICAgICAgIE5ldyB1dGlsaXR5IGZu
IGZvciB0cmF2ZXJzaW5nIGl0ZW1zIG9mIGEgc2VsZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IEFkZGVkIGNvZGUgdG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIHdoZW4gQVJS
T1dfS0VZU19QT1BfTUVOVSBpcyBmYWxzZS4KKwogMjAwOS0wNy0yMSAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBGaXggdGhlIFdpbmRvd3MgYnVp
bGQsIGFuZCB1cGRhdGUgdGhlIGNvbW1lbnQgb24gdG9wIG5vdyB0aGF0IHd4IHVzZXMgV2ViQ29y
ZVByZWZpeC5oIHRvby4KSW5kZXg6IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NjE5NSkK
KysrIFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTYs
NiArNTE2LDI5IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6cmVzZXQoU2VsZWN0RWxlbWVudEQKIAog
ICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KKyAgICAKKyNpZiAhQVJST1df
S0VZU19QT1BfTUVOVQorZW51bSBTa2lwRGlyZWN0aW9uIHsKKyAgICBTa2lwQmFja3dhcmRzID0g
LTEsCisgICAgU2tpcEZvcndhcmRzID0gMQorfTsKKworLy8gUmV0dXJucyB0aGUgaW5kZXggb2Yg
dGhlIG5leHQgdmFsaWQgbGlzdCBpdGVtIHxza2lwfCBpdGVtcyBwYXN0IHxsaXN0SW5kZXh8IGlu
IGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9u
IGRpcmVjdGlvbiwgaW50IHNraXApCit7CisgICAgaW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5k
ZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4
ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdElu
ZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAtLXNraXA7CisgICAgICAgIGlmICghbGlzdEl0
ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1ts
aXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAg
ICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29kSW5kZXg7Cit9CisjZW5kaWYKIAogdm9pZCBT
ZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERh
dGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVtZW50
KiBodG1sRm9ybSkKIHsKQEAgLTU0MiwyNCArNTY1LDMwIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6
bWVudUxpc3REZWZhdWx0RXZlbnQKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAg
ICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKIAogICAgICAgICBpbnQgbGlzdEluZGV4
ID0gb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBl
bGVtZW50KSk7CiAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVu
dGlmaWVyID09ICJSaWdodCIpIHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4ICs9IDE7Ci0g
ICAgICAgICAgICAgICAgIGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxp
c3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0
ZW1zW2xpc3RJbmRleF0pKTsKLSAgICAgICAgICAgICAgICAgKytsaXN0SW5kZXgpIHsgfQotICAg
ICAgICAgICAgaWYgKGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAg
ICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRl
eChkYXRhLCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5l
eHRWYWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOwogICAg
ICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmll
ciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIkxlZnQiKSB7Ci0gICAgICAgICAgICBmb3Ig
KGxpc3RJbmRleCAtPSAxOwotICAgICAgICAgICAgICAgICBsaXN0SW5kZXggPj0gMCAmJiBsaXN0
SW5kZXggPCBzaXplICYmIChsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSB8fCAhaXNP
cHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSk7Ci0gICAgICAgICAgICAgICAgIC0t
bGlzdEluZGV4KSB7IH0KLSAgICAgICAgICAgIGlmIChsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5k
ZXggPCBzaXplKQotICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVu
dCwgbGlzdFRvT3B0aW9uSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdEluZGV4KSk7CisgICAgICAg
ICAgICBsaXN0SW5kZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMsIGxpc3RJbmRleCwgU2tp
cEJhY2t3YXJkcywgMSk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBl
bHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlRG93biIpIHsKKyAgICAgICAgICAgIGxpc3RJ
bmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEluZGV4LCBTa2lwRm9yd2FyZHMs
IDMpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5
SWRlbnRpZmllciA9PSAiUGFnZVVwIikgeworICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZh
bGlkSW5kZXgobGlzdEl0ZW1zLCBsaXN0SW5kZXgsIFNraXBCYWNrd2FyZHMsIDMpOworICAgICAg
ICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9
PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJ
dGVtcywgLTEsIFNraXBGb3J3YXJkcywgMSk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJFbmQiKSB7CisgICAgICAgICAg
ICBsaXN0SW5kZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMsIGxpc3RJdGVtcy5zaXplKCks
IFNraXBCYWNrd2FyZHMsIDEpOwogICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChoYW5kbGVkICYmIGxpc3RJbmRleCA+PSAwICYmIGxp
c3RJbmRleCA8IGxpc3RJdGVtcy5zaXplKCkpCisgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4
KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RJbmRl
eCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChoYW5kbGVkKQogICAgICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjE5NSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA3LTIx
ICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIyNzg0OiBJbXByb3ZlIGtleWJvYXJkIG5h
dmlnYXRpb24gb2YgU2VsZWN0IGVsZW1lbnRzLgorICAgICAgICBIb21lL0VuZCBhbmQgUGFnZVVw
L1BhZ2VEbiBidXR0b25zIGRvIG5vdCBkbyBhbnl0aGluZyBpbiBkcm9wIGRvd24gbGlzdHMsCisg
ICAgICAgIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODQKKyAgICAgICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDU3NgorCisgICAgICAgICogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtleXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtleXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZAorICAgICAgICAqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3NlbGVjdC1wb3B1cC1wYWdla2V5cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTA3LTIx
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QtcG9wdXAtcGFnZWtleXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgdGhlIEhvbWUvRW5kL1BhZ2VVcC9QYWdlRG93biBrZXlzIHdvcmsgY29ycmVj
dGx5IGZvciBwb3AtdXAgPHNlbGVjdD4gZWxlbWVudHMgdGhhdCBoYXZlIGZvY3VzIGJ1dCBhcmUg
bm90IGN1cnJlbnRseSBwb3BwZWQtdXAuCisKKyAgCitEaXNwYXRjaCBrZXkgJ1BhZ2VEb3duJwor
RGlzcGF0Y2gga2V5ICdQYWdlRG93bicKK0Rpc3BhdGNoIGtleSAnUGFnZURvd24nCitEaXNwYXRj
aCBrZXkgJ1BhZ2VEb3duJworRGlzcGF0Y2gga2V5ICdQYWdlRG93bicKK0Rpc3BhdGNoIGtleSAn
UGFnZURvd24nCitEaXNwYXRjaCBrZXkgJ1BhZ2VEb3duJwordGVzdFBhZ2VEb3duTm9EaXNhYmxl
ZEVsZW1lbnRzIHBhc3NlZAorRGlzcGF0Y2gga2V5ICdQYWdlVXAnCitEaXNwYXRjaCBrZXkgJ1Bh
Z2VVcCcKK0Rpc3BhdGNoIGtleSAnUGFnZVVwJworRGlzcGF0Y2gga2V5ICdQYWdlVXAnCitEaXNw
YXRjaCBrZXkgJ1BhZ2VVcCcKK0Rpc3BhdGNoIGtleSAnUGFnZVVwJworRGlzcGF0Y2gga2V5ICdQ
YWdlVXAnCit0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAorRGlzcGF0Y2gga2V5
ICdIb21lJworRGlzcGF0Y2gga2V5ICdIb21lJworRGlzcGF0Y2gga2V5ICdIb21lJworRGlzcGF0
Y2gga2V5ICdIb21lJworRGlzcGF0Y2gga2V5ICdIb21lJworRGlzcGF0Y2gga2V5ICdIb21lJwor
RGlzcGF0Y2gga2V5ICdIb21lJwordGVzdEhvbWVOb0Rpc2FibGVkRWxlbWVudHMgcGFzc2VkCitE
aXNwYXRjaCBrZXkgJ0VuZCcKK0Rpc3BhdGNoIGtleSAnRW5kJworRGlzcGF0Y2gga2V5ICdFbmQn
CitEaXNwYXRjaCBrZXkgJ0VuZCcKK0Rpc3BhdGNoIGtleSAnRW5kJworRGlzcGF0Y2gga2V5ICdF
bmQnCitEaXNwYXRjaCBrZXkgJ0VuZCcKK3Rlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMgcGFzc2Vk
CitEaXNwYXRjaCBrZXkgJ1BhZ2VEb3duJworRGlzcGF0Y2gga2V5ICdQYWdlRG93bicKK0Rpc3Bh
dGNoIGtleSAnUGFnZURvd24nCitEaXNwYXRjaCBrZXkgJ1BhZ2VEb3duJworRGlzcGF0Y2gga2V5
ICdQYWdlRG93bicKK3Rlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAorRGlz
cGF0Y2gga2V5ICdQYWdlVXAnCitEaXNwYXRjaCBrZXkgJ1BhZ2VVcCcKK0Rpc3BhdGNoIGtleSAn
UGFnZVVwJworRGlzcGF0Y2gga2V5ICdQYWdlVXAnCitEaXNwYXRjaCBrZXkgJ1BhZ2VVcCcKK3Rl
c3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK0Rpc3BhdGNoIGtleSAnSG9tZScK
K0Rpc3BhdGNoIGtleSAnSG9tZScKK0Rpc3BhdGNoIGtleSAnSG9tZScKK0Rpc3BhdGNoIGtleSAn
SG9tZScKK0Rpc3BhdGNoIGtleSAnSG9tZScKK0Rpc3BhdGNoIGtleSAnSG9tZScKK0Rpc3BhdGNo
IGtleSAnSG9tZScKK0Rpc3BhdGNoIGtleSAnSG9tZScKK3Rlc3RIb21lV2l0aERpc2FibGVkRWxl
bWVudHMgcGFzc2VkCitEaXNwYXRjaCBrZXkgJ0VuZCcKK0Rpc3BhdGNoIGtleSAnRW5kJworRGlz
cGF0Y2gga2V5ICdFbmQnCitEaXNwYXRjaCBrZXkgJ0VuZCcKK0Rpc3BhdGNoIGtleSAnRW5kJwor
RGlzcGF0Y2gga2V5ICdFbmQnCitEaXNwYXRjaCBrZXkgJ0VuZCcKK0Rpc3BhdGNoIGtleSAnRW5k
JwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAorU1VDQ0VTUwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjplb2wtc3R5bGU6bmF0aXZlCiAgICsgCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QtcG9wdXAtcGFnZWtleXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1wb3B1cC1wYWdla2V5cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtleXMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMjQgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlNFTEVDVCBw
b3AtdXAgcGFnZSBrZXlzIHRlc3Q8L3RpdGxlPgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24g
bG9nKHMpCisgICAgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4iKSk7CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIHNlbmRLZXkoZWxlbWVudCwga2V5KSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKGtleSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbG9nKCJEaXNwYXRjaCBrZXkg
JyIra2V5KyInIik7CisgICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgiS2V5Ym9hcmRFdmVudHMiKTsKKyAgICAgICAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50
KCJrZXlkb3duIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleSwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gc2VuZEtleUFuZEV4cGVjdEluZGV4KHNl
bGVjdElkLCBrZXksIGluaXRpYWxJbmRleCwgZXhwZWN0ZWRJbmRleCkgeworICAgICAgICB2YXIg
c2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOworICAgICAgICBjbGVh
clNlbGVjdGlvbihzZWxlY3QpOworICAgICAgICBzZWxlY3QuZm9jdXMoKTsKKyAgICAgICAgc2Vs
ZWN0LnNlbGVjdGVkSW5kZXggPSBpbml0aWFsSW5kZXg7CisgICAgICAgIGlmIChzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCAhPSBpbml0aWFsSW5kZXgpIHsKKyAgICAgICAgICAgIGxvZygiY2FuJ3Qgc2V0
IHNlbGVjdGVkSW5kZXggdG8gIiArIGluaXRpYWxJbmRleCArICcgKGlzICcKKyAgICAgICAgICAg
ICsgc2VsZWN0LnNlbGVjdGVkSW5kZXggKyAnKScpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHNlbmRLZXkoc2VsZWN0LCBrZXkpOworICAgICAgICBpZiAo
c2VsZWN0LnNlbGVjdGVkSW5kZXggIT0gZXhwZWN0ZWRJbmRleCkgeworICAgICAgICAgICAgbG9n
KCdzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAnICsgZXhwZWN0ZWRJbmRleCArICcgKGlzICcgKwor
ICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ICsgJykgYWZ0ZXIgYSAnICsga2V5
ICsgCisgICAgICAgICAgICAgICAgJyBmcm9tIGluZGV4ICcgKyBpbml0aWFsSW5kZXgpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBjbGVhclNlbGVjdGlvbihzZWxlY3QpIHsKKyAgICAg
ICAgZm9yIChpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgc2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gdGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIg
cGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCdzcycsICJQYWdlRG93biIsIDAsIDMpOworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlRG93biIsIDEsIDQpOworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdl
RG93biIsIDIsIDUpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJQYWdlRG93biIsIDMsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlRG93biIsIDQsIDYpOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlRG93
biIsIDUsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJQYWdlRG93biIsIDYsIDYpOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAg
ICAgICAgICBsb2coJ3Rlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsKKyAg
ICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0UGFnZVVwTm9E
aXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlVXAi
LCA2LCAzKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgnc3MnLCAiUGFnZVVwIiwgNSwgMik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIlBhZ2VVcCIsIDQsIDEpOworICAgICAgICBwYXNzZWQg
PSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlVXAiLCAzLCAwKTsK
KyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAi
UGFnZVVwIiwgMiwgMCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoJ3NzJywgIlBhZ2VVcCIsIDEsIDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJQYWdlVXAiLCAwLCAwKTsKKworICAgICAg
ICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1l
bnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiB0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICAgICAgdmFyIHBhc3Nl
ZCA9IHRydWU7CisKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgnc3MnLCAiSG9tZSIsIDYsIDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJIb21lIiwgNSwgMCk7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkhvbWUiLCA0LCAwKTsKKyAg
ICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiSG9t
ZSIsIDMsIDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJIb21lIiwgMiwgMCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkhvbWUiLCAxLCAwKTsKKyAgICAgICAgcGFzc2VkID0g
cGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiSG9tZSIsIDAsIDApOworCisg
ICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RIb21lTm9EaXNhYmxlZEVs
ZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiB0ZXN0RW5kTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFz
c2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJFbmQiLCA2LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiRW5kIiwgNSwgNik7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkVuZCIsIDQsIDYpOworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJFbmQi
LCAzLCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgnc3MnLCAiRW5kIiwgMiwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkVuZCIsIDEsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJFbmQiLCAwLCA2KTsKKworICAgICAg
ICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0RW5kTm9EaXNhYmxlZEVsZW1lbnRz
IHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2Vk
ID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzc2QnLCAiUGFnZURvd24iLCAxLCA0KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgIlBhZ2VEb3duIiwgMiwgNSk7IAorICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiUGFnZURv
d24iLCA0LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgnc3NkJywgIlBhZ2VEb3duIiwgNSwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJQYWdlRG93biIsIDYsIDYpOworCisgICAg
ICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RQYWdlRG93bldpdGhEaXNhYmxl
ZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiB0ZXN0UGFnZVVwV2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAg
IHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJQYWdlVXAiLCA2LCAyKTsKKyAgICAgICAgcGFzc2VkID0g
cGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgIlBhZ2VVcCIsIDUsIDIpOwor
ICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAi
UGFnZVVwIiwgNCwgMSk7IAorICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCdzc2QnLCAiUGFnZVVwIiwgMiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJQYWdlVXAiLCAxLCAxKTsKKworICAg
ICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0UGFnZVVwV2l0aERpc2FibGVk
RWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIHRlc3RIb21lV2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAgIHZh
ciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoJ3NzZCcsICJIb21lIiwgNywgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJIb21lIiwgNiwgMSk7CisgICAgICAg
IHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJIb21lIiwg
NSwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
J3NzZCcsICJIb21lIiwgNCwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJIb21lIiwgMywgMSk7CisgICAgICAgIHBhc3NlZCA9IHBh
c3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJIb21lIiwgMiwgMSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJIb21l
IiwgMSwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoJ3NzZCcsICJIb21lIiwgMCwgMSk7CisKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAg
ICAgIGxvZygndGVzdEhvbWVXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsKKyAgICAgICAg
cmV0dXJuIHBhc3NlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdEVuZFdpdGhEaXNh
YmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiRW5kIiwgNywg
Nik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3Nz
ZCcsICJFbmQiLCA2LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgnc3NkJywgIkVuZCIsIDUsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiRW5kIiwgNCwgNik7CisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJFbmQiLCAzLCA2
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3Nk
JywgIkVuZCIsIDIsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCdzc2QnLCAiRW5kIiwgMSwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJFbmQiLCAwLCA2KTsKKworICAgICAgICBp
ZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCd0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMg
cGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdmFyIHBhc3NlZCA9IHRydWU7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0UGFn
ZURvd25Ob0Rpc2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHRl
c3RQYWdlVXBOb0Rpc2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiB0ZXN0RW5kTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisKKyAgICAgICAgcGFzc2VkID0gcGFzc2Vk
ICYmIHRlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiB0ZXN0UGFnZVVwV2l0aERpc2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAgcGFz
c2VkID0gcGFzc2VkICYmIHRlc3RIb21lV2l0aERpc2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHRlc3RFbmRXaXRoRGlzYWJsZWRFbGVtZW50cygpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygnU1VDQ0VTUycpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb2coJ0ZBSUxVUkUnKTsKKyAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgPHA+VGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgdGhlIEhvbWUvRW5kL1BhZ2VVcC9QYWdlRG93biBrZXlzIHdvcmsgY29ycmVj
dGx5CisgICAgICAgIGZvciBwb3AtdXAgJmx0O3NlbGVjdCZndDsgZWxlbWVudHMgdGhhdCBoYXZl
IGZvY3VzIGJ1dCBhcmUgbm90IGN1cnJlbnRseSBwb3BwZWQtdXAuPC9wPgorICAgIDxwPk5PVEU6
IFRoaXMgdGVzdCB3aWxsIGZhaWwgb24gTWFjIE9TLCBvbiB3aGljaCB0aGVzZSBrZXlzIGFyZSBO
T1Qgc3VwcG9zZWQgdG8gY2hhbmdlCisgICAgICAgIHRoZSBzZWxlY3Rpb24gb2YgYSBmb2N1c2Vk
IHBvcC11cC48L3A+CisgICAgPGhyPgorICA8Zm9ybT4KKyAgICAgICAgPHNlbGVjdCBuYW1lPSJz
aW5nbGVzZWxlY3QiIGlkPSJzcyI+CisgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29w
dGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAg
ICAgICA8b3B0aW9uIHZhbHVlPSIyIj4yIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2
YWx1ZT0iMyI+MyA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQgPC9v
cHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAg
ICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+Cisg
ICAgICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0d2l0aGRpc2FibGVkIiBpZD0ic3NkIj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiIGRpc2FibGVkPSJ0cnVlIj4wIDwvb3B0aW9u
PgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVl
PSIzIiBkaXNhYmxlZD0idHJ1ZSI+MyA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0
aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8L29wdGlvbj4KKyAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9IjciIGRpc2FibGVkID0gInRydWUiPjcgPC9vcHRpb24+ICAgICAg
ICAgICAgCisgICAgICAgIDwvc2VsZWN0PgorICAgIDwvZm9ybT4KKyAgICA8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1wb3B1
cC1wYWdla2V5cy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBh
Z2VrZXlzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVw
LXBhZ2VrZXlzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9tZS9FbmQvUGFnZVVwL1BhZ2VEb3duIGtleXMgd29y
ayBjb3JyZWN0bHkgZm9yIHBvcC11cCA8c2VsZWN0PiBlbGVtZW50cyB0aGF0IGhhdmUgZm9jdXMg
YnV0IGFyZSBub3QgY3VycmVudGx5IHBvcHBlZC11cC4KKworTk9URTogVGhpcyB0ZXN0IHdpbGwg
ZmFpbCBvbiBNYWMgT1MsIG9uIHdoaWNoIHRoZXNlIGtleXMgYXJlIE5PVCBzdXBwb3NlZCB0byBj
aGFuZ2UgdGhlIHNlbGVjdGlvbiBvZiBhIGZvY3VzZWQgcG9wLXVwLgorCisgIAorc2VsZWN0ZWRJ
bmRleCBzaG91bGQgYmUgMyAoaXMgMCkgYWZ0ZXIgYSBQYWdlRG93biBmcm9tIGluZGV4IDAKK0ZB
SUxVUkUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjplb2wtc3R5bGU6bmF0aXZlCiAgICsgCgo=
</data>
<flag name="review"
          id="17539"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33306</attachid>
            <date>2009-07-22 16:43:52 -0700</date>
            <delta_ts>2009-07-22 16:50:31 -0700</delta_ts>
            <desc>Final(?) patch</desc>
            <filename>selectKeys_take4.patch</filename>
            <type>text/plain</type>
            <size>21280</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjIyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDctMjIgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcg
MjI3ODQ6IEltcHJvdmUga2V5Ym9hcmQgbmF2aWdhdGlvbiBvZiBTZWxlY3QgZWxlbWVudHMuCisg
ICAgICAgIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIGJ1dHRvbnMgZG8gbm90IGRvIGFueXRo
aW5nIGluIGRyb3AgZG93biBsaXN0cywKKyAgICAgICAgb24gbm9uLU1hYyBwbGF0Zm9ybXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4NAorICAg
ICAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00
NTc2CisKKyAgICAgICAgTmV3IHRlc3Q6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBv
cHVwLXBhZ2VrZXlzLmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogCisgICAgICAgIE5ldyB1dGlsaXR5IGZu
IGZvciB0cmF2ZXJzaW5nIGl0ZW1zIG9mIGEgc2VsZWN0J3MgbGlzdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IEFkZGVkIGNvZGUgdG8gaGFuZGxlIEhvbWUvRW5kIGFuZCBQYWdlVXAvUGFnZURuIHdoZW4gQVJS
T1dfS0VZU19QT1BfTUVOVSBpcyBmYWxzZS4KKwogMjAwOS0wNy0yMiAgUGF1bCBHb2RhdmFyaSAg
PHBhdWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvQ2hhbmdlTG9nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmVvbC1zdHlsZQogICAtIG5hdGl2ZQogICArIExGCgpJbmRleDogV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDQ2MjI5KQorKysgV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxNiw2ICs1MTYsMjkgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpyZXNl
dChTZWxlY3RFbGVtZW50RAogCiAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwog
fQorICAgIAorI2lmICFBUlJPV19LRVlTX1BPUF9NRU5VCitlbnVtIFNraXBEaXJlY3Rpb24gewor
ICAgIFNraXBCYWNrd2FyZHMgPSAtMSwKKyAgICBTa2lwRm9yd2FyZHMgPSAxCit9OworCisvLyBS
ZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBsaXN0IGl0ZW0gfHNraXB8IGl0ZW1z
IHBhc3QgfGxpc3RJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258Lgorc3RhdGljIGludCBu
ZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0
SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKK3sKKyAgICBpbnQgbGFz
dEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7
CisgICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0
SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7CisgICAgICAgIC0tc2tpcDsK
KyAgICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSAmJiBpc09wdGlv
bkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7CisgICAgICAgICAgICBsYXN0R29vZElu
ZGV4ID0gbGlzdEluZGV4OworICAgICAgICAgICAgaWYgKHNraXAgPD0gMCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGFzdEdvb2RJbmRleDsK
K30KKyNlbmRpZgogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFu
ZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2
ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0bWxGb3JtKQogewpAQCAtNTQyLDI0ICs1NjUsMzAgQEAg
dm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudAogICAgICAgICB9CiAjZWxz
ZQogICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBkYXRhLmxpc3RJ
dGVtcyhlbGVtZW50KTsKLSAgICAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOwogCiAg
ICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChkYXRhLCBlbGVtZW50LCBz
ZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQpKTsKICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIg
PT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlJpZ2h0IikgewotICAgICAgICAgICAgZm9y
IChsaXN0SW5kZXggKz0gMTsKLSAgICAgICAgICAgICAgICAgbGlzdEluZGV4ID49IDAgJiYgbGlz
dEluZGV4IDwgc2l6ZSAmJiAobGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgfHwgIWlz
T3B0aW9uRWxlbWVudChsaXN0SXRlbXNbbGlzdEluZGV4XSkpOwotICAgICAgICAgICAgICAgICAr
K2xpc3RJbmRleCkgeyB9Ci0gICAgICAgICAgICBpZiAobGlzdEluZGV4ID49IDAgJiYgbGlzdElu
ZGV4IDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1l
bnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RJbmRleCkpOworICAgICAg
ICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLCBsaXN0SW5kZXgsIFNr
aXBGb3J3YXJkcywgMSk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIgfHwga2V5SWRlbnRpZmllciA9PSAiTGVmdCIp
IHsKLSAgICAgICAgICAgIGZvciAobGlzdEluZGV4IC09IDE7Ci0gICAgICAgICAgICAgICAgIGxp
c3RJbmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUgJiYgKGxpc3RJdGVtc1tsaXN0SW5kZXhd
LT5kaXNhYmxlZCgpIHx8ICFpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKTsK
LSAgICAgICAgICAgICAgICAgLS1saXN0SW5kZXgpIHsgfQotICAgICAgICAgICAgaWYgKGxpc3RJ
bmRleCA+PSAwICYmIGxpc3RJbmRleCA8IHNpemUpCi0gICAgICAgICAgICAgICAgc2V0U2VsZWN0
ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50LCBs
aXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJ
dGVtcywgbGlzdEluZGV4LCBTa2lwQmFja3dhcmRzLCAxKTsKKyAgICAgICAgICAgIGhhbmRsZWQg
PSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikg
eworICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLCBsaXN0
SW5kZXgsIFNraXBGb3J3YXJkcywgMyk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlVXAiKSB7CisgICAgICAgICAg
ICBsaXN0SW5kZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMsIGxpc3RJbmRleCwgU2tpcEJh
Y2t3YXJkcywgMyk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IGlmIChrZXlJZGVudGlmaWVyID09ICJIb21lIikgeworICAgICAgICAgICAgbGlzdEluZGV4ID0g
bmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zLCAtMSwgU2tpcEZvcndhcmRzLCAxKTsKKyAgICAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0g
IkVuZCIpIHsKKyAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJdGVt
cywgbGlzdEl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgMSk7CiAgICAgICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGhhbmRsZWQgJiYg
bGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgbGlzdEl0ZW1zLnNpemUoKSkKKyAgICAgICAg
ICAgIHNldFNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdFRvT3B0aW9uSW5kZXgoZGF0
YSwgZWxlbWVudCwgbGlzdEluZGV4KSk7CiAjZW5kaWYKICAgICAgICAgaWYgKGhhbmRsZWQpCiAg
ICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKClByb3BlcnR5IGNoYW5nZXMg
b246IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYyMjkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wNy0yMSAg
SmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMjc4NDogSW1wcm92ZSBrZXlib2FyZCBuYXZp
Z2F0aW9uIG9mIFNlbGVjdCBlbGVtZW50cy4KKyAgICAgICAgSG9tZS9FbmQgYW5kIFBhZ2VVcC9Q
YWdlRG4gYnV0dG9ucyBkbyBub3QgZG8gYW55dGhpbmcgaW4gZHJvcCBkb3duIGxpc3RzLAorICAg
ICAgICBvbiBub24tTWFjIHBsYXRmb3Jtcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzg0CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ1NzYKKworICAgICAgICAqIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4
dDogQWRkZWQKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9z
ZWxlY3QtcG9wdXAtcGFnZWtleXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0wNy0yMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgIC0gbmF0aXZlCiAgICsgTEYKCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1wb3B1cC1wYWdla2V5cy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtl
eXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3QtcG9wdXAtcGFnZWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9tZS9FbmQvUGFnZVVwL1BhZ2VE
b3duIGtleXMgd29yayBjb3JyZWN0bHkgZm9yIHBvcC11cCA8c2VsZWN0PiBlbGVtZW50cyB0aGF0
IGhhdmUgZm9jdXMgYnV0IGFyZSBub3QgY3VycmVudGx5IHBvcHBlZC11cC4KKworT3V0cHV0IGJl
bG93IGlzIGEgc2VyaWVzIG9mIFBBU1Mgb3IgRkFJTCBsaW5lcyBzaG93aW5nIGV4cGVjdGVkIGFu
ZCBhY3R1YWwgc2VsZWN0aW9uIGluZGV4ZXMsIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIFBBU1Mgb3Ig
RkFJTCBmb3IgdGhlIHN0YXR1cyBvZiB0aGUgZW50aXJlIHRlc3QuCisKK05PVEU6IFRoaXMgdGVz
dCB3aWxsIGZhaWwgb24gTWFjIE9TLCBvbiB3aGljaCB0aGVzZSBrZXlzIGFyZSBOT1Qgc3VwcG9z
ZWQgdG8gY2hhbmdlIHRoZSBzZWxlY3Rpb24gb2YgYSBmb2N1c2VkIHBvcC11cC4KKworICAKK1BB
U1M6IHRlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK1BBU1M6IHRlc3RQYWdl
VXBOb0Rpc2FibGVkRWxlbWVudHMgcGFzc2VkCitQQVNTOiB0ZXN0SG9tZU5vRGlzYWJsZWRFbGVt
ZW50cyBwYXNzZWQKK1BBU1M6IHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMgcGFzc2VkCitQQVNT
OiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK1BBU1M6IHRlc3RQYWdl
VXBXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK1BBU1M6IHRlc3RIb21lV2l0aERpc2FibGVk
RWxlbWVudHMgcGFzc2VkCitQQVNTOiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMgcGFzc2Vk
CisKK1BBU1M6IEFMTCBURVNUUyBTVUNDRUVERUQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1wb3B1
cC1wYWdla2V5cy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1wb3B1cC1wYWdla2V5
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVw
LXBhZ2VrZXlzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nl
bGVjdC1wb3B1cC1wYWdla2V5cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMSBAQAor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+U0VMRUNUIHBvcC11cCBwYWdlIGtleXMgdGVzdDwv
dGl0bGU+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBsb2cocykKKyAgICB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc2Vu
ZEtleShlbGVtZW50LCBrZXkpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICAgICAga2V5ID0ga2V5LnN1YnN0cigwLDEpLnRvTG93ZXJDYXNlKCkg
KyBrZXkuc3Vic3RyKDEpOyAvLyBsb3dlcmNhc2UgMXN0IGxldHRlciBmb3IgZXZlbnRTZW5kZXIK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2
ZW50cyIpOworICAgICAgICAgICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoImtleWRvd24iLCB0
cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmlldywga2V5LCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwg
aW5pdGlhbEluZGV4LCBleHBlY3RlZEluZGV4KSB7CisgICAgICAgIHZhciBzZWxlY3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RJZCk7CisgICAgICAgIGNsZWFyU2VsZWN0aW9uKHNl
bGVjdCk7CisgICAgICAgIHNlbGVjdC5mb2N1cygpOworICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJ
bmRleCA9IGluaXRpYWxJbmRleDsKKyAgICAgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9
IGluaXRpYWxJbmRleCkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBjYW4ndCBzZXQgc2VsZWN0
ZWRJbmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJworICAgICAgICAgICAgKyBzZWxl
Y3Quc2VsZWN0ZWRJbmRleCArICcpJyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgc2VuZEtleShzZWxlY3QsIGtleSk7CisgICAgICAgIGlmIChzZWxlY3Qu
c2VsZWN0ZWRJbmRleCAhPSBleHBlY3RlZEluZGV4KSB7CisgICAgICAgICAgICBsb2coJ0ZBSUw6
IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlICcgKyBleHBlY3RlZEluZGV4ICsgJyAoaXMgJyArCisg
ICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggKyAnKSBhZnRlciBhICcgKyBrZXkg
KyAKKyAgICAgICAgICAgICAgICAnIGZyb20gaW5kZXggJyArIGluaXRpYWxJbmRleCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCkgeworICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBzZWxlY3Qub3B0aW9uc1tpXS5zZWxlY3RlZCA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiB0ZXN0UGFnZURvd25Ob0Rpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAgIHZhciBw
YXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgn
c3MnLCAiUGFnZURvd24iLCAwLCAzKSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZURvd24iLCAxLCA0KSAmJiBwYXNzZWQ7CisgICAg
ICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZURvd24iLCAyLCA1
KSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3Mn
LCAiUGFnZURvd24iLCAzLCA2KSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZURvd24iLCA0LCA2KSAmJiBwYXNzZWQ7CisgICAgICAg
IHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZURvd24iLCA1LCA2KSAm
JiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAi
UGFnZURvd24iLCA2LCA2KSAmJiBwYXNzZWQ7CisKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAg
ICAgICAgIGxvZygnUEFTUzogdGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcp
OworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RQYWdl
VXBOb0Rpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisg
ICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZVVwIiwgNiwg
MykgJiYgcGFzc2VkOworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3Nz
JywgIlBhZ2VVcCIsIDUsIDIpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCdzcycsICJQYWdlVXAiLCA0LCAxKSAmJiBwYXNzZWQ7CisgICAgICAgIHBh
c3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZVVwIiwgMywgMCkgJiYgcGFz
c2VkOworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIlBhZ2VV
cCIsIDIsIDApICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJQYWdlVXAiLCAxLCAwKSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiUGFnZVVwIiwgMCwgMCkgJiYgcGFzc2VkOworCisg
ICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ1BBU1M6IHRlc3RQYWdlVXBOb0Rp
c2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAg
ICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoJ3NzJywgIkhvbWUiLCA2LCAwKSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiSG9tZSIsIDUsIDApICYmIHBhc3NlZDsKKyAgICAg
ICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJIb21lIiwgNCwgMCkgJiYg
cGFzc2VkOworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkhv
bWUiLCAzLCAwKSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgnc3MnLCAiSG9tZSIsIDIsIDApICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJIb21lIiwgMSwgMCkgJiYgcGFzc2VkOworICAgICAg
ICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkhvbWUiLCAwLCAwKSAmJiBw
YXNzZWQ7CisKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygnUEFTUzogdGVz
dEhvbWVOb0Rpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgnc3MnLCAiRW5kIiwgNiwgNikgJiYgcGFzc2VkOworICAgICAgICBwYXNz
ZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgIkVuZCIsIDUsIDYpICYmIHBhc3NlZDsK
KyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJFbmQiLCA0LCA2
KSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3Mn
LCAiRW5kIiwgMywgNikgJiYgcGFzc2VkOworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoJ3NzJywgIkVuZCIsIDIsIDYpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0g
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJFbmQiLCAxLCA2KSAmJiBwYXNzZWQ7CisgICAg
ICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiRW5kIiwgMCwgNikgJiYg
cGFzc2VkOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ1BBU1M6IHRl
c3RFbmROb0Rpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFBhZ2VEb3duV2l0aERpc2FibGVkRWxlbWVudHMo
KSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgIlBhZ2VEb3duIiwgMSwgNCkgJiYgcGFzc2VkOworICAg
ICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJQYWdlRG93biIsIDIs
IDUpICYmIHBhc3NlZDsgCisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgn
c3NkJywgIlBhZ2VEb3duIiwgNCwgNikgJiYgcGFzc2VkOworICAgICAgICBwYXNzZWQgPSBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJQYWdlRG93biIsIDUsIDYpICYmIHBhc3NlZDsKKyAg
ICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiUGFnZURvd24iLCA2
LCA2KSAmJiBwYXNzZWQ7CisKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygn
UEFTUzogdGVzdFBhZ2VEb3duV2l0aERpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAg
IHJldHVybiBwYXNzZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RQYWdlVXBXaXRo
RGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisKKyAgICAg
ICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiUGFnZVVwIiwgNiwgMikg
JiYgcGFzc2VkOworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcs
ICJQYWdlVXAiLCA1LCAyKSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgnc3NkJywgIlBhZ2VVcCIsIDQsIDEpICYmIHBhc3NlZDsgCisgICAgICAgIHBh
c3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgIlBhZ2VVcCIsIDIsIDEpICYmIHBh
c3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiUGFn
ZVVwIiwgMSwgMSkgJiYgcGFzc2VkOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAg
ICBsb2coJ1BBU1M6IHRlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsKKyAg
ICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdEhvbWVX
aXRoRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisKKyAg
ICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDcsIDEp
ICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2Qn
LCAiSG9tZSIsIDYsIDEpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4
cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDUsIDEpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2Vk
ID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDQsIDEpICYmIHBhc3NlZDsK
KyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDMs
IDEpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdz
c2QnLCAiSG9tZSIsIDIsIDEpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDEsIDEpICYmIHBhc3NlZDsKKyAgICAgICAgcGFz
c2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiSG9tZSIsIDAsIDEpICYmIHBhc3Nl
ZDsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAgICAgbG9nKCdQQVNTOiB0ZXN0SG9t
ZVdpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgnc3NkJywgIkVuZCIsIDcsIDYpICYmIHBhc3NlZDsKKyAgICAgICAgcGFz
c2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiRW5kIiwgNiwgNikgJiYgcGFzc2Vk
OworICAgICAgICBwYXNzZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJFbmQiLCA1
LCA2KSAmJiBwYXNzZWQ7CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgn
c3NkJywgIkVuZCIsIDQsIDYpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCdzc2QnLCAiRW5kIiwgMywgNikgJiYgcGFzc2VkOworICAgICAgICBwYXNz
ZWQgPSBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJFbmQiLCAyLCA2KSAmJiBwYXNzZWQ7
CisgICAgICAgIHBhc3NlZCA9IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgIkVuZCIsIDEs
IDYpICYmIHBhc3NlZDsKKyAgICAgICAgcGFzc2VkID0gc2VuZEtleUFuZEV4cGVjdEluZGV4KCdz
c2QnLCAiRW5kIiwgMCwgNikgJiYgcGFzc2VkOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAg
ICAgICAgICBsb2coJ1BBU1M6IHRlc3RFbmRXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsK
KyAgICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdCgp
CisgICAgeworICAgICAgICB0cnl7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgcGFzc2Vk
ID0gdGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgICAgICBwYXNzZWQg
PSB0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgICAgICBwYXNzZWQgPSB0
ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICAgICAgcGFzc2VkID0gdGVzdEVu
ZE5vRGlzYWJsZWRFbGVtZW50cygpOworCisgICAgICAgICAgICBwYXNzZWQgPSB0ZXN0UGFnZURv
d25XaXRoRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICAgICAgcGFzc2VkID0gdGVzdFBhZ2VV
cFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgICAgICBwYXNzZWQgPSB0ZXN0SG9tZVdp
dGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgICAgICBwYXNzZWQgPSB0ZXN0RW5kV2l0aERp
c2FibGVkRWxlbWVudHMoKTsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAocGFzc2VkKQorICAg
ICAgICAgICAgICAgIGxvZygnXG5QQVNTOiBBTEwgVEVTVFMgU1VDQ0VFREVEJyk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9nKCdcbkZBSUw6IFNPTUUgVEVTVFMgRkFJTEVE
IChTRUUgQUJPVkUpJyk7CisgICAgICAgICAgICBsb2coJycpOworICAgICAgICB9IGNhdGNoIChl
eGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygnXG5GQUlMOiBUaHJldyBleGNlcHRpb246ICcg
KyBleGNlcHRpb24pOworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseQorICAgICAgICBm
b3IgcG9wLXVwICZsdDtzZWxlY3QmZ3Q7IGVsZW1lbnRzIHRoYXQgaGF2ZSBmb2N1cyBidXQgYXJl
IG5vdCBjdXJyZW50bHkgcG9wcGVkLXVwLjwvcD4KKyAgICA8cD5PdXRwdXQgYmVsb3cgaXMgYSBz
ZXJpZXMgb2YgUEFTUyBvciBGQUlMIGxpbmVzIHNob3dpbmcgZXhwZWN0ZWQgYW5kIGFjdHVhbCBz
ZWxlY3Rpb24gaW5kZXhlcywKKyAgICAgICAgZm9sbG93ZWQgYnkgYSBzaW5nbGUgUEFTUyBvciBG
QUlMIGZvciB0aGUgc3RhdHVzIG9mIHRoZSBlbnRpcmUgdGVzdC48cD4KKyAgICA8cD5OT1RFOiBU
aGlzIHRlc3Qgd2lsbCBmYWlsIG9uIE1hYyBPUywgb24gd2hpY2ggdGhlc2Uga2V5cyBhcmUgTk9U
IHN1cHBvc2VkIHRvIGNoYW5nZQorICAgICAgICB0aGUgc2VsZWN0aW9uIG9mIGEgZm9jdXNlZCBw
b3AtdXAuPC9wPgorICAgIDxocj4KKyAgPGZvcm0+CisgICAgICAgIDxzZWxlY3QgbmFtZT0ic2lu
Z2xlc2VsZWN0IiBpZD0ic3MiPgorICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiPjAgPC9vcHRp
b24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4xIDwvb3B0aW9uPgorICAgICAgICAg
ICAgPG9wdGlvbiB2YWx1ZT0iMiI+MiA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjMiPjMgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40IDwvb3B0
aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNSI+NSA8L29wdGlvbj4KKyAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgICAgIDwvc2VsZWN0PgorICAg
ICAgICA8c2VsZWN0IG5hbWU9InNpbmdsZXNlbGVjdHdpdGhkaXNhYmxlZCIgaWQ9InNzZCI+Cisg
ICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIiBkaXNhYmxlZD0idHJ1ZSI+MCA8L29wdGlvbj4K
KyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSIyIj4yIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
MyIgZGlzYWJsZWQ9InRydWUiPjMgPC9vcHRpb24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVl
PSI0Ij40IDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNSI+NSA8L29wdGlv
bj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSI3IiBkaXNhYmxlZCA9ICJ0cnVlIj43IDwvb3B0aW9uPiAgICAgICAg
ICAgIAorICAgICAgICA8L3NlbGVjdD4KKyAgICA8L2Zvcm0+CisgICAgPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1wb3B1cC1wYWdla2V5cy5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFn
ZWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIEhvbWUv
RW5kL1BhZ2VVcC9QYWdlRG93biBrZXlzIHdvcmsgY29ycmVjdGx5IGZvciBwb3AtdXAgPHNlbGVj
dD4gZWxlbWVudHMgdGhhdCBoYXZlIGZvY3VzIGJ1dCBhcmUgbm90IGN1cnJlbnRseSBwb3BwZWQt
dXAuCisKK091dHB1dCBiZWxvdyBpcyBhIHNlcmllcyBvZiBQQVNTIG9yIEZBSUwgbGluZXMgc2hv
d2luZyBleHBlY3RlZCBhbmQgYWN0dWFsIHNlbGVjdGlvbiBpbmRleGVzLCBmb2xsb3dlZCBieSBh
IHNpbmdsZSBQQVNTIG9yIEZBSUwgZm9yIHRoZSBzdGF0dXMgb2YgdGhlIGVudGlyZSB0ZXN0Lgor
CitOT1RFOiBUaGlzIHRlc3Qgd2lsbCBmYWlsIG9uIE1hYyBPUywgb24gd2hpY2ggdGhlc2Uga2V5
cyBhcmUgTk9UIHN1cHBvc2VkIHRvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIG9mIGEgZm9jdXNlZCBw
b3AtdXAuCisKKyAgCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAzIChpcyAwKSBhZnRl
ciBhIFBhZ2VEb3duIGZyb20gaW5kZXggMAorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUg
NCAoaXMgMSkgYWZ0ZXIgYSBQYWdlRG93biBmcm9tIGluZGV4IDEKK0ZBSUw6IHNlbGVjdGVkSW5k
ZXggc2hvdWxkIGJlIDUgKGlzIDIpIGFmdGVyIGEgUGFnZURvd24gZnJvbSBpbmRleCAyCitGQUlM
OiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSA2IChpcyAzKSBhZnRlciBhIFBhZ2VEb3duIGZyb20g
aW5kZXggMworRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgNiAoaXMgNCkgYWZ0ZXIgYSBQ
YWdlRG93biBmcm9tIGluZGV4IDQKK0ZBSUw6IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlIDYgKGlz
IDUpIGFmdGVyIGEgUGFnZURvd24gZnJvbSBpbmRleCA1CitGQUlMOiBzZWxlY3RlZEluZGV4IHNo
b3VsZCBiZSAzIChpcyA2KSBhZnRlciBhIFBhZ2VVcCBmcm9tIGluZGV4IDYKK0ZBSUw6IHNlbGVj
dGVkSW5kZXggc2hvdWxkIGJlIDIgKGlzIDUpIGFmdGVyIGEgUGFnZVVwIGZyb20gaW5kZXggNQor
RkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgMSAoaXMgNCkgYWZ0ZXIgYSBQYWdlVXAgZnJv
bSBpbmRleCA0CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAwIChpcyAzKSBhZnRlciBh
IFBhZ2VVcCBmcm9tIGluZGV4IDMKK0ZBSUw6IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlIDAgKGlz
IDIpIGFmdGVyIGEgUGFnZVVwIGZyb20gaW5kZXggMgorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91
bGQgYmUgMCAoaXMgMSkgYWZ0ZXIgYSBQYWdlVXAgZnJvbSBpbmRleCAxCitGQUlMOiBzZWxlY3Rl
ZEluZGV4IHNob3VsZCBiZSAwIChpcyA2KSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCA2CitGQUlM
OiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAwIChpcyA1KSBhZnRlciBhIEhvbWUgZnJvbSBpbmRl
eCA1CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAwIChpcyA0KSBhZnRlciBhIEhvbWUg
ZnJvbSBpbmRleCA0CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAwIChpcyAzKSBhZnRl
ciBhIEhvbWUgZnJvbSBpbmRleCAzCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAwIChp
cyAyKSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCAyCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3Vs
ZCBiZSAwIChpcyAxKSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCAxCitGQUlMOiBzZWxlY3RlZElu
ZGV4IHNob3VsZCBiZSA2IChpcyA1KSBhZnRlciBhIEVuZCBmcm9tIGluZGV4IDUKK0ZBSUw6IHNl
bGVjdGVkSW5kZXggc2hvdWxkIGJlIDYgKGlzIDQpIGFmdGVyIGEgRW5kIGZyb20gaW5kZXggNAor
RkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgNiAoaXMgMykgYWZ0ZXIgYSBFbmQgZnJvbSBp
bmRleCAzCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSA2IChpcyAyKSBhZnRlciBhIEVu
ZCBmcm9tIGluZGV4IDIKK0ZBSUw6IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlIDYgKGlzIDEpIGFm
dGVyIGEgRW5kIGZyb20gaW5kZXggMQorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgNiAo
aXMgMCkgYWZ0ZXIgYSBFbmQgZnJvbSBpbmRleCAwCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3Vs
ZCBiZSA0IChpcyAxKSBhZnRlciBhIFBhZ2VEb3duIGZyb20gaW5kZXggMQorRkFJTDogc2VsZWN0
ZWRJbmRleCBzaG91bGQgYmUgNSAoaXMgMikgYWZ0ZXIgYSBQYWdlRG93biBmcm9tIGluZGV4IDIK
K0ZBSUw6IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlIDYgKGlzIDQpIGFmdGVyIGEgUGFnZURvd24g
ZnJvbSBpbmRleCA0CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSA2IChpcyA1KSBhZnRl
ciBhIFBhZ2VEb3duIGZyb20gaW5kZXggNQorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUg
MiAoaXMgNikgYWZ0ZXIgYSBQYWdlVXAgZnJvbSBpbmRleCA2CitGQUlMOiBzZWxlY3RlZEluZGV4
IHNob3VsZCBiZSAyIChpcyA1KSBhZnRlciBhIFBhZ2VVcCBmcm9tIGluZGV4IDUKK0ZBSUw6IHNl
bGVjdGVkSW5kZXggc2hvdWxkIGJlIDEgKGlzIDQpIGFmdGVyIGEgUGFnZVVwIGZyb20gaW5kZXgg
NAorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgMSAoaXMgMikgYWZ0ZXIgYSBQYWdlVXAg
ZnJvbSBpbmRleCAyCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAxIChpcyA3KSBhZnRl
ciBhIEhvbWUgZnJvbSBpbmRleCA3CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAxIChp
cyA2KSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCA2CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3Vs
ZCBiZSAxIChpcyA1KSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCA1CitGQUlMOiBzZWxlY3RlZElu
ZGV4IHNob3VsZCBiZSAxIChpcyA0KSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCA0CitGQUlMOiBz
ZWxlY3RlZEluZGV4IHNob3VsZCBiZSAxIChpcyAzKSBhZnRlciBhIEhvbWUgZnJvbSBpbmRleCAz
CitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAxIChpcyAyKSBhZnRlciBhIEhvbWUgZnJv
bSBpbmRleCAyCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAxIChpcyAwKSBhZnRlciBh
IEhvbWUgZnJvbSBpbmRleCAwCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSA2IChpcyA3
KSBhZnRlciBhIEVuZCBmcm9tIGluZGV4IDcKK0ZBSUw6IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJl
IDYgKGlzIDUpIGFmdGVyIGEgRW5kIGZyb20gaW5kZXggNQorRkFJTDogc2VsZWN0ZWRJbmRleCBz
aG91bGQgYmUgNiAoaXMgNCkgYWZ0ZXIgYSBFbmQgZnJvbSBpbmRleCA0CitGQUlMOiBzZWxlY3Rl
ZEluZGV4IHNob3VsZCBiZSA2IChpcyAzKSBhZnRlciBhIEVuZCBmcm9tIGluZGV4IDMKK0ZBSUw6
IHNlbGVjdGVkSW5kZXggc2hvdWxkIGJlIDYgKGlzIDIpIGFmdGVyIGEgRW5kIGZyb20gaW5kZXgg
MgorRkFJTDogc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUgNiAoaXMgMSkgYWZ0ZXIgYSBFbmQgZnJv
bSBpbmRleCAxCitGQUlMOiBzZWxlY3RlZEluZGV4IHNob3VsZCBiZSA2IChpcyAwKSBhZnRlciBh
IEVuZCBmcm9tIGluZGV4IDAKKworRkFJTDogU09NRSBURVNUUyBGQUlMRUQgKFNFRSBBQk9WRSkK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3NlbGVjdC1wb3B1cC1wYWdla2V5cy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="17606"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>