<?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>27658</bug_id>
          
          <creation_ts>2009-07-24 09:09:51 -0700</creation_ts>
          <short_desc>Webkit ignores PgUp/PgDown/Home/End in SELECT tag objects</short_desc>
          <delta_ts>2011-04-06 15:27:30 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Neil Rhodes">nrhodes</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bksening</cc>
    
    <cc>commit-queue</cc>
    
    <cc>honten</cc>
    
    <cc>isherman</cc>
    
    <cc>levin</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134579</commentid>
    <comment_count>0</comment_count>
    <who name="Neil Rhodes">nrhodes</who>
    <bug_when>2009-07-24 09:09:51 -0700</bug_when>
    <thetext>Overview: A SELECT object displaying a list (non-popup) ignores the PgUp/PgDown/Home/End keys. Instead the keys scroll the page.

Steps to Reproduce:

    1) Open badselect.html (attached).

    2) Click on the &quot;General&quot; list item.

    3) Press one of Page Up/Page Down/Home/End

Actual Results: 

    If the window is small enough, the window scrolls.

Expected Results: 

    The Page Up/PageDown/Home/End keys should select &quot;Build config&quot;/&quot;Bookmarks &amp; History&quot;/&quot;Location Bar and Autocomplete&quot;/&quot;Toolbar&quot; respectively.


This is has been forked from:
   Bug 22784: [Chromium] Home and End buttons do not do anything in drop down lists
   https://bugs.webkit.org/show_bug.cgi?id=22784
because that was actually demonstrating two bugs, of which this was one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134580</commentid>
    <comment_count>1</comment_count>
    <who name="Neil Rhodes">nrhodes</who>
    <bug_when>2009-07-24 09:10:15 -0700</bug_when>
    <thetext>I&apos;m working on a patch for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134679</commentid>
    <comment_count>2</comment_count>
      <attachid>33476</attachid>
    <who name="Neil Rhodes">nrhodes</who>
    <bug_when>2009-07-24 16:22:36 -0700</bug_when>
    <thetext>Created attachment 33476
Fixes bug 27658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140228</commentid>
    <comment_count>3</comment_count>
      <attachid>34840</attachid>
    <who name="Neil Rhodes">nrhodes</who>
    <bug_when>2009-08-14 07:34:19 -0700</bug_when>
    <thetext>Created attachment 34840
badselect.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142327</commentid>
    <comment_count>4</comment_count>
      <attachid>33476</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-24 10:33:09 -0700</bug_when>
    <thetext>Comment on attachment 33476
Fixes bug 27658


&gt; WebCore/dom/SelectElement.cpp	(working copy)
&gt; ===================================================================
&gt; +// Returns the index of the next valid list item |skip| items past |listIndex| in direction |direction|.
This isn&apos;t really correct as it could return listIndex or listIndex + 1, etc. even if skip = 10.


&gt; +// returns the index of the next valid item one page away from |startIndex| in direction |direction|.

(Many instances) Make comments looks like sentences. (Start with a capital and end with a period.)


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

I can&apos;t make sense of this function name.  It seems like it should stat with &quot;next&quot;.  Perhaps &quot;nextSelectableListIndexPageAway&quot;.

Also, after having read through this function it is unclear what it is trying to do and if it is correct.  I think it attempts to find a &quot;valid index&quot; that is in this range (startIndex, startIndex + pageSize * direction] but if that fails, it tries to find a valid index (startIndex + pageSize * direction, direction  == SkipForwards ? MAXINT : 0], so that&apos;s what I&apos;ll use as my guide.


&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 index = nextValidIndex(items, indexOnePageAway + oppositeDirection, direction, 1);

Relying on the enum value to be -1, +1 seems like a bad practice here. I know that &quot;nextValidIndex&quot; does but ideally it is only relied on there.


&gt; +    if (index &lt; 0 || index &gt;= listSize ||(!isOptionElement(items[index]) || items[index]-&gt;disabled())) {

Add a space after || here: &quot;||(!isOptionElement&quot;.
Unnecessary () around the last two items.

At a higher level, this isn&apos;t correct because &quot;index&quot; may be valid but not in this range (startIndex, startIndex + pageSize * direction].

Add a test which exposes this issue.


&gt; +int SelectElement::firstSelectableListIndex(SelectElementData&amp; data, Element* element)
&gt; +{
&gt; +    const Vector&lt;Element*&gt;&amp; items = data.listItems(element);
&gt; +    int index = 0;
&gt; +    while (index &gt;= 0 &amp;&amp; (unsigned) index &lt; items.size() &amp;&amp; (!isOptionElement(items[index]) || items[index]-&gt;disabled()))

(Multiple places) Use c++ style casts.


&gt;  void SelectElement::menuListDefaultEventHandler(SelectElementData&amp; data, Element* element, Event* event, HTMLFormElement* htmlForm)
&gt;  {
...
&gt; +        if (endIndex &gt;= 0 &amp;&amp; 

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;)) {

The || should be aligned with the ( from the previous line.


&gt; Index: WebCore/dom/SelectElement.h
&gt; ===================================================================
&gt; +    static int selectableListIndexPageFrom(SelectElementData&amp; data, Element* element, int startIndex, SkipDirection direction);

Can this be moved out of the class and solely be defined within the SelectElement.cpp file?



&gt; Index: LayoutTests/fast/events/select-element.html
&gt; ===================================================================
&gt; +    function log(s)

Ideally use whole words for variables: &quot;s&quot;


&gt; +    function sendKeyAndExpectIndex(selectId, key, initialIndex, expectedIndex) {
...
&gt; +        if (select.selectedIndex != initialIndex) {
&gt; +            log(&quot;can&apos;t set selectedIndex to &quot; + initialIndex + &apos; (is &apos;
&gt; +            + select.selectedIndex + &apos;)&apos;);

Would be nice to align with (

&gt; +            return false;
&gt; +        }
&gt; +        if (window.layoutTestController)
&gt; +            eventSender.keyDown(key);
&gt; +        if (select.selectedIndex != expectedIndex) {
&gt; +            log(&apos;selectedIndex should be &apos; + expectedIndex + &apos; (is &apos; +

In keeping with the moving the &amp;&amp;, etc to the beginning of the next line, move the + to the next line would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291579</commentid>
    <comment_count>5</comment_count>
    <who name="Blake Sening">bksening</who>
    <bug_when>2010-10-08 05:31:16 -0700</bug_when>
    <thetext>Is this still a problem in WebKit?

It seems in the latest nightlies SELECT tags do respond to PgUp/PgDown/Home/End.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291719</commentid>
    <comment_count>6</comment_count>
    <who name="Blake Sening">bksening</who>
    <bug_when>2010-10-08 09:52:55 -0700</bug_when>
    <thetext>Sorry, it still happens with the included reduction &quot;badselect.html&quot;.

Rather, the title of the bug needs to be appended with &quot;... when SIZE attribute is specified&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376646</commentid>
    <comment_count>7</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-30 13:52:19 -0700</bug_when>
    <thetext>Hi, this problem is not taken care of by anybody. So I want to try to fix it.

I have a couple of questions, before I start.

(In reply to comment #4)
&gt; (From update of attachment 33476 [details])
&gt; 
&gt; &gt; WebCore/dom/SelectElement.cpp	(working copy)
&gt; &gt; ===================================================================
&gt; &gt; +// Returns the index of the next valid list item |skip| items past |listIndex| in direction |direction|.
&gt; This isn&apos;t really correct as it could return listIndex or listIndex + 1, etc. even if skip = 10.
Do you mean the function should return more than or equal to listIndex + skip value?

&gt; &gt; +int SelectElement::selectableListIndexPageFrom(SelectElementData&amp; data, Element* element, int startIndex, SkipDirection direction)
&gt; 
&gt; I can&apos;t make sense of this function name.  It seems like it should stat with &quot;next&quot;.  Perhaps &quot;nextSelectableListIndexPageAway&quot;.
&gt; 
&gt; Also, after having read through this function it is unclear what it is trying to do and if it is correct.  I think it attempts to find a &quot;valid index&quot; that is in this range (startIndex, startIndex + pageSize * direction] but if that fails, it tries to find a valid index (startIndex + pageSize * direction, direction  == SkipForwards ? MAXINT : 0], so that&apos;s what I&apos;ll use as my guide.

I think this function operation means
1, Try to find (startIndex + pageSize * direction, direction  == SkipForwards ? MAXINT : 0]
2, And if we cannot find valid index, we have to find (startIndex, startIndex + pageSize * direction]

I guess your saying is opposite, right?

&gt; &gt; +    if (index &lt; 0 || index &gt;= listSize ||(!isOptionElement(items[index]) || items[index]-&gt;disabled())) {
&gt; 
&gt; Add a space after || here: &quot;||(!isOptionElement&quot;.
&gt; Unnecessary () around the last two items.
&gt; 
&gt; At a higher level, this isn&apos;t correct because &quot;index&quot; may be valid but not in this range (startIndex, startIndex + pageSize * direction].
&gt; 
&gt; Add a test which exposes this issue.
If my former guess is right, we don&apos;t have to need the range (startIndex, startIndex + pageSize * direction] check here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376662</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-30 14:14:28 -0700</bug_when>
    <thetext>I&apos;m answering base on just looking at my comments. the context has totally left me by now.

(In reply to comment #7)
&gt; Hi, this problem is not taken care of by anybody. So I want to try to fix it.
&gt; 
&gt; I have a couple of questions, before I start.
&gt; 
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 33476 [details] [details])
&gt; &gt; 
&gt; &gt; &gt; WebCore/dom/SelectElement.cpp	(working copy)
&gt; &gt; &gt; ===================================================================
&gt; &gt; &gt; +// Returns the index of the next valid list item |skip| items past |listIndex| in direction |direction|.
&gt; &gt; This isn&apos;t really correct as it could return listIndex or listIndex + 1, etc. even if skip = 10.
&gt; Do you mean the function should return more than or equal to listIndex + skip value?

I was simply saying that the comment was incorrect.  The comment said that it returned an index that was at least listIndex + skip and that wasn&apos;t correct.



&gt; 
&gt; &gt; &gt; +int SelectElement::selectableListIndexPageFrom(SelectElementData&amp; data, Element* element, int startIndex, SkipDirection direction)
&gt; &gt; 
&gt; &gt; I can&apos;t make sense of this function name.  It seems like it should stat with &quot;next&quot;.  Perhaps &quot;nextSelectableListIndexPageAway&quot;.
&gt; &gt; 
&gt; &gt; Also, after having read through this function it is unclear what it is trying to do and if it is correct.  I think it attempts to find a &quot;valid index&quot; that is in this range (startIndex, startIndex + pageSize * direction] but if that fails, it tries to find a valid index (startIndex + pageSize * direction, direction  == SkipForwards ? MAXINT : 0], so that&apos;s what I&apos;ll use as my guide.
&gt; 
&gt; I think this function operation means
&gt; 1, Try to find (startIndex + pageSize * direction, direction  == SkipForwards ? MAXINT : 0]
&gt; 2, And if we cannot find valid index, we have to find (startIndex, startIndex + pageSize * direction]
&gt; 
&gt; I guess your saying is opposite, right?

It looks like I was saying the opposite. I may have been wrong.


&gt; 
&gt; &gt; &gt; +    if (index &lt; 0 || index &gt;= listSize ||(!isOptionElement(items[index]) || items[index]-&gt;disabled())) {
&gt; &gt; 
&gt; &gt; Add a space after || here: &quot;||(!isOptionElement&quot;.
&gt; &gt; Unnecessary () around the last two items.
&gt; &gt; 
&gt; &gt; At a higher level, this isn&apos;t correct because &quot;index&quot; may be valid but not in this range (startIndex, startIndex + pageSize * direction].
&gt; &gt; 
&gt; &gt; Add a test which exposes this issue.
&gt; If my former guess is right, we don&apos;t have to need the range (startIndex, startIndex + pageSize * direction] check here, right?

I don&apos;t remember. If there is a new patch, I can try to review it and then figure all of this out again. (This isn&apos;t an area I deal with in general, so I don&apos;t have the context for all of this in my memory. I have to read lots of code and figure it out.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376674</commentid>
    <comment_count>9</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-30 14:27:50 -0700</bug_when>
    <thetext>Thank you for your reply.

(In reply to comment #8)
&gt; I was simply saying that the comment was incorrect.  The comment said that it returned an index that was at least listIndex + skip and that wasn&apos;t correct.

Ok, so I will revise the comment.

&gt; I don&apos;t remember. If there is a new patch, I can try to review it and then figure all of this out again. (This isn&apos;t an area I deal with in general, so I don&apos;t have the context for all of this in my memory. I have to read lots of code and figure it out.)

Once I&apos;m ready for the patch, I let you know.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376965</commentid>
    <comment_count>10</comment_count>
      <attachid>87671</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-30 23:45:13 -0700</bug_when>
    <thetext>Created attachment 87671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376967</commentid>
    <comment_count>11</comment_count>
      <attachid>87671</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-30 23:46:54 -0700</bug_when>
    <thetext>Comment on attachment 87671
Patch

Basically, the logic is the same as the original.

But I changed some format problems and applied to the latest source code.

Also I change the test, because it didn&apos;t work.

Please review it.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377377</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-31 12:19:06 -0700</bug_when>
    <thetext>It might be useful to add a test with (possibly disabled) option groups. These are tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377565</commentid>
    <comment_count>13</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-31 17:23:02 -0700</bug_when>
    <thetext>Alexey,

(In reply to comment #12)
&gt; It might be useful to add a test with (possibly disabled) option groups. These are tricky.
Thank you for your comment. But I cannot understand what you mean,  (possibly disabled) option groups.

I thought &lt;option&gt; tag has &quot;disabled&quot; attribute, but don&apos;t know &quot;possible disabled&quot;.

Could you tell me more?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377569</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-31 17:29:41 -0700</bug_when>
    <thetext>I&apos;m asking about &lt;optgroup&gt; elements (which can also be enabled or not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377572</commentid>
    <comment_count>15</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-31 17:37:49 -0700</bug_when>
    <thetext>Got it.

Thanks!!

(In reply to comment #14)
&gt; I&apos;m asking about &lt;optgroup&gt; elements (which can also be enabled or not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377598</commentid>
    <comment_count>16</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-03-31 18:57:09 -0700</bug_when>
    <thetext>David,

Do you have any comment about cpp part?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378002</commentid>
    <comment_count>17</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-01 12:57:50 -0700</bug_when>
    <thetext>David,

Could you review my patch?

Or is there anybody who can review?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378009</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-01 13:07:25 -0700</bug_when>
    <thetext>Could you add optgroup tests while waiting for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378027</commentid>
    <comment_count>19</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-01 13:22:44 -0700</bug_when>
    <thetext>Sure,

(In reply to comment #18)
&gt; Could you add optgroup tests while waiting for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378042</commentid>
    <comment_count>20</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-01 13:38:17 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; David,
&gt; 
&gt; Could you review my patch?
&gt; 
&gt; Or is there anybody who can review?
&gt; 
&gt; Thanks,

I&apos;ve started looking (and a have some misc comments but nothing huge). It takes me longer being an area I&apos;m not as familiar with. If someone else beats me to it, that is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378096</commentid>
    <comment_count>21</comment_count>
      <attachid>87671</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-01 14:43:05 -0700</bug_when>
    <thetext>Comment on attachment 87671
Patch

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

There are a few issues I mentioned above which would be nice to fix up.

Also if you fix any bugs, please consider increasing the test coverage to have caught them. (For example, I think for the PageDown case, the value passed into nextSelectableListIndexPageAway is incorrect. Also it feels like PageDown resulting in selecting an item above the currently selected item is wrong. Ditto for PageUp selecting an item above the current item.)

&gt; Source/WebCore/dom/SelectElement.cpp:78
&gt; +// Returns the closest valid index far |skip| items from |listIndex| in direction |direction|.

How about:

// Returns the 1st valid item |skip| items from |listIndex| in direction |direction| if there is one.
// Otherwise, it returns the valid item closest to that boundary which is past |listIndex| if there is one.
// Otherwise, it returns |listIndex|.
// Valid means that it is enabled and an option element.

&gt; Source/WebCore/dom/SelectElement.cpp:81
&gt; +{

ASSERT(direction == -1 || direction == 1);

&gt; Source/WebCore/dom/SelectElement.cpp:96
&gt; +static int nextSelectableListIndexPageAway(SelectElementData&amp; data, Element* element, int startIndex, SkipDirection direction)

I think startIndex should be startOptionIndex to clarify that this startIndex isn&apos;t the same as the other start indexes.

&gt; Source/WebCore/dom/SelectElement.cpp:97
&gt; +{

ASSERT(direction == -1 || direction == 1);

&gt; Source/WebCore/dom/SelectElement.cpp:100
&gt; +    int pageSize = static_cast&lt;RenderListBox*&gt;(element-&gt;renderer())-&gt;size() - 1; // -1 so we still show context

Use toRenderListBox instead of the cast.

How do you know that the renderer is a RenderListBox?

&gt; Source/WebCore/dom/SelectElement.cpp:104
&gt; +    int indexOnePageAway = SelectElement::optionToListIndex(data, element, max(0, min(listSize - 1, startIndex + direction * pageSize)));

Why is this offset going through this function as opposed to converting the startIndex to a list index and then just doing this:
   return nextValidIndex(items, startListIndex, direction, pageSize);

&gt; Source/WebCore/dom/SelectElement.cpp:107
&gt; +    // It means we try to find the index in (startIndex + page * direction, direction == SkipForward ? MAXINT : 0].

s/page/pageSize/

&gt; Source/WebCore/dom/SelectElement.cpp:108
&gt; +    int index = nextValidIndex(items, indexOnePageAway + (direction == SkipForwards ? -1 : 1), direction, 1);

It seems simpler to not do this &quot;(direction == SkipForwards ? -1 : 1)&quot;

&gt; Source/WebCore/dom/SelectElement.cpp:112
&gt; +        index = nextValidIndex(items, indexOnePageAway, direction == SkipForwards ? SkipBackwards : SkipForwards, 1);

This could actually end up being before startIndex which seems weird.

&gt; Source/WebCore/dom/SelectElement.cpp:161
&gt; +    const Vector&lt;Element*&gt;&amp; items = data.listItems(element);

Consider:

int index = nextValidIndex(items, items.size(), SkipBackwards, MAXINT);
if (static_cast&lt;unsigned&gt;(index) == items.size())
  return -1;
return index;

seems simpler and doesn&apos;t repeat logic. (slightly less efficient but this won&apos;t be used that often and probably not for a list long enough where the efficiency will matter).

&gt; Source/WebCore/dom/SelectElement.cpp:172
&gt; +    const Vector&lt;Element*&gt;&amp; items = data.listItems(element);

return nextValidIndex(items, -1, SkipForwards, MAXINT);

as before.

&gt; Source/WebCore/dom/SelectElement.cpp:174
&gt; +     while (index &gt;= 0 &amp;&amp; static_cast&lt;unsigned&gt;(index) &lt; items.size() &amp;&amp; (!isOptionElement(items[index]) || items[index]-&gt;disabled()))

indenting is messed up here.

&gt; Source/WebCore/dom/SelectElement.cpp:183
&gt;          startIndex = items.size();

Consider rewriting in terms of nextValidIndex

&gt; Source/WebCore/dom/SelectElement.cpp:811
&gt; +                endIndex = nextSelectableListIndexPageAway(data, element, lastSelectedListIndex(data, element), SkipForwards);

Is it correct to pass in lastSelectedListIndex for startOptionIndex given that the function is expect an option index?

&gt; Source/WebCore/dom/SelectElement.cpp:835
&gt; +        if (endIndex &gt;= 0 &amp;&amp; (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;Home&quot; ||  keyIdentifier == &quot;End&quot; || keyIdentifier == &quot;PageDown&quot; || keyIdentifier == &quot;PageUp&quot;)) {

Hmmm this if got a bit ugly and seems fragile.

Consider (I&apos;m not sure if these are better or not or how easy they are to do so use your judgement):
1. use a bool handled to indicate that the endIndex should be set. I think there is another function in this file that does that. OR
2. can endIndex have a value of -1 and only get set to &gt;= 0 if it should be used in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378145</commentid>
    <comment_count>22</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-01 15:44:13 -0700</bug_when>
    <thetext>David,

Thank you for your support!!

(In reply to comment #21)
&gt; (From update of attachment 87671 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87671&amp;action=review
&gt; Also if you fix any bugs, please consider increasing the test coverage to have caught them. (For example, I think for the PageDown case, the value passed into nextSelectableListIndexPageAway is incorrect. Also it feels like PageDown resulting in selecting an item above the currently selected item is wrong. Ditto for PageUp selecting an item above the current item.)

Ok, I try to add more tests and also make sure PageDown/PageUp selecting is correct.

&gt; &gt; Source/WebCore/dom/SelectElement.cpp:100
&gt; &gt; +    int pageSize = static_cast&lt;RenderListBox*&gt;(element-&gt;renderer())-&gt;size() - 1; // -1 so we still show context
&gt; 
&gt; Use toRenderListBox instead of the cast.
&gt; 
&gt; How do you know that the renderer is a RenderListBox?

So do you mean like following?

int pageSize = 0;
if (element-&gt;renderer()-&gt;isListBox())
    pageSize = toRenderListBox(renderer)-&gt;size() - 1; // -1 so we still show context

&gt; &gt; Source/WebCore/dom/SelectElement.cpp:108
&gt; &gt; +    int index = nextValidIndex(items, indexOnePageAway + (direction == SkipForwards ? -1 : 1), direction, 1);
&gt; 
&gt; It seems simpler to not do this &quot;(direction == SkipForwards ? -1 : 1)&quot;

I will do as following,

int offset = direction == SkipForwards ? -1 : 1;
int index = nextValidIndex(items, indexOnePageAway + offset, direction, 1);

&gt; &gt; Source/WebCore/dom/SelectElement.cpp:112
&gt; &gt; +        index = nextValidIndex(items, indexOnePageAway, direction == SkipForwards ? SkipBackwards : SkipForwards, 1);
&gt; 
&gt; This could actually end up being before startIndex which seems weird.

Yes, but when the default selected option is invalid, and all the items specified direction are invalid, we have to move the closest valid option backwards. That&apos;s the purpose.

I can write the test code.

&gt; &gt; Source/WebCore/dom/SelectElement.cpp:811
&gt; &gt; +                endIndex = nextSelectableListIndexPageAway(data, element, lastSelectedListIndex(data, element), SkipForwards);
&gt; 
&gt; Is it correct to pass in lastSelectedListIndex for startOptionIndex given that the function is expect an option index?
If we don&apos;t call optionToListIndex() in nextSelectableListIndexPageAway(), it is Ok. This is my misunderstanding.

So,
1, I don&apos;t change the name |startIndex| as param of nextSelectableListIndexPageAway().
2, Replace optionToListIndex() to nextValidIndex().

What do you think?
 
&gt; &gt; Source/WebCore/dom/SelectElement.cpp:835
&gt; &gt; +        if (endIndex &gt;= 0 &amp;&amp; (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;Home&quot; ||  keyIdentifier == &quot;End&quot; || keyIdentifier == &quot;PageDown&quot; || keyIdentifier == &quot;PageUp&quot;)) {
&gt; 
&gt; Hmmm this if got a bit ugly and seems fragile.
&gt; 
&gt; Consider (I&apos;m not sure if these are better or not or how easy they are to do so use your judgement):
&gt; 1. use a bool handled to indicate that the endIndex should be set. I think there is another function in this file that does that. OR
&gt; 2. can endIndex have a value of -1 and only get set to &gt;= 0 if it should be used in here.
I&apos;ll choose 1, like menuListDefaultEventHandler().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378256</commentid>
    <comment_count>23</comment_count>
      <attachid>87671</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-01 17:58:03 -0700</bug_when>
    <thetext>Comment on attachment 87671
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/SelectElement.cpp:100
&gt;&gt;&gt; +    int pageSize = static_cast&lt;RenderListBox*&gt;(element-&gt;renderer())-&gt;size() - 1; // -1 so we still show context
&gt;&gt; 
&gt;&gt; Use toRenderListBox instead of the cast.
&gt;&gt; 
&gt;&gt; How do you know that the renderer is a RenderListBox?
&gt; 
&gt; So do you mean like following?
&gt; 
&gt; int pageSize = 0;
&gt; if (element-&gt;renderer()-&gt;isListBox())
&gt;     pageSize = toRenderListBox(renderer)-&gt;size() - 1; // -1 so we still show context

Well, that is one way of solving it. If you really have some way of knowing that the renderer will always be a listbox (and it may be), then just say how you know this. (I wasn&apos;t able to figure that out right off but it may be my lack of familiarity with this area of code.)

&gt;&gt;&gt; Source/WebCore/dom/SelectElement.cpp:112
&gt;&gt;&gt; +        index = nextValidIndex(items, indexOnePageAway, direction == SkipForwards ? SkipBackwards : SkipForwards, 1);
&gt;&gt; 
&gt;&gt; This could actually end up being before startIndex which seems weird.
&gt; 
&gt; Yes, but when the default selected option is invalid, and all the items specified direction are invalid, we have to move the closest valid option backwards. That&apos;s the purpose.
&gt; 
&gt; I can write the test code.

ok, just making sure that was the purpose.

But if that is the case, can&apos;t it be written in terms of one nextValidIndex call and get right of a lot of code in here?

For example,  something like this:
   int edgeIndex = (direction == SkipForward) ? 0 : (listSize - 1);
   int skipAmount = pageSize + (direction == SkipForward) ? startListIndex : (edgeIndex - startListIndex);
   return nextValidIndex(items, edgeIndex, direction, skipAmount);

&gt;&gt;&gt; Source/WebCore/dom/SelectElement.cpp:811
&gt;&gt;&gt; +                endIndex = nextSelectableListIndexPageAway(data, element, lastSelectedListIndex(data, element), SkipForwards);
&gt;&gt; 
&gt;&gt; Is it correct to pass in lastSelectedListIndex for startOptionIndex given that the function is expect an option index?
&gt; 
&gt; If we don&apos;t call optionToListIndex() in nextSelectableListIndexPageAway(), it is Ok. This is my misunderstanding.
&gt; 
&gt; So,
&gt; 1, I don&apos;t change the name |startIndex| as param of nextSelectableListIndexPageAway().
&gt; 2, Replace optionToListIndex() to nextValidIndex().
&gt; 
&gt; What do you think?

&gt; If we don&apos;t call optionToListIndex() in nextSelectableListIndexPageAway(), it is Ok.
Is it?

From how, I read optionToListIndex, it looks like the option index is very different from the list index. The option index only counts the number of option items (http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/SelectElement.cpp&amp;q=optionToListIndex&amp;exact_package=chromium&amp;l=362) which is different from the number of items in the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378490</commentid>
    <comment_count>24</comment_count>
      <attachid>87998</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-02 23:33:30 -0700</bug_when>
    <thetext>Created attachment 87998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378491</commentid>
    <comment_count>25</comment_count>
      <attachid>87998</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-02 23:35:10 -0700</bug_when>
    <thetext>Comment on attachment 87998
Patch

Please review my patch.

Added optgroup test.
Fixed some bugs related to passing params for nextSelectableListIndexPageAway() which affects optgroup behavior.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378925</commentid>
    <comment_count>26</comment_count>
      <attachid>87998</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 11:47:06 -0700</bug_when>
    <thetext>Comment on attachment 87998
Patch

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

Nicely done!

We&apos;re in the final stretch and the next patch may very well be the last.

Thanks for getting this into shape and addressing all feedback well!

&gt; LayoutTests/fast/events/select-element.html:165
&gt; +function testPageDownWithDisabledElements() {

Why is there no test in this function start starts at 0 or 7?

&gt; LayoutTests/fast/events/select-element.html:173
&gt; +function testPageUpWithDisabledElements() {

Why is there no test in this function start starts at 0 or 7?

&gt; Source/WebCore/dom/SelectElement.cpp:134
&gt; +    int edgeIndex = (direction== SkipForwards) ? 0 : (items.size() - 1);

Need a space after direction.

&gt; Source/WebCore/dom/SelectElement.cpp:789
&gt;                  endIndex = nextSelectableListIndex(data, element, lastSelectedListIndex(data, element));

For down, the start index is lastSelectedListIndex(data, element)
For up, the start index is optionToListIndex(data, element, selectedIndex(data, element))

Consider pulling this out of the clauses:

if (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;PageDown&quot;) {
    int startIndex = lastSelectedListIndex(data, element)
    handled = true;
    if (keyIdentifier == &quot;Down&quot;)
        endIndex = nextSelectableListIndex(data, element, startIndex);
    else
        endIndex = nextSelectableListIndexPageAway(data, element, startIndex, SkipForwards);    
} else if (keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;PageUp&quot;)  {
    int startIndex = optionToListIndex(data, element, selectedIndex(data, element))
    handled = true;
    ... similar to above...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379044</commentid>
    <comment_count>27</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-04 13:57:17 -0700</bug_when>
    <thetext>David,

Thank you for your review.

I can finish the revise tonight.

Hope the next is the last round;-)

(In reply to comment #26)
&gt; (From update of attachment 87998 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87998&amp;action=review
&gt; 
&gt; Nicely done!
&gt; 
&gt; We&apos;re in the final stretch and the next patch may very well be the last.
&gt; 
&gt; Thanks for getting this into shape and addressing all feedback well!
&gt; 
&gt; &gt; LayoutTests/fast/events/select-element.html:165
&gt; &gt; +function testPageDownWithDisabledElements() {
&gt; 
&gt; Why is there no test in this function start starts at 0 or 7?
&gt; 
&gt; &gt; LayoutTests/fast/events/select-element.html:173
&gt; &gt; +function testPageUpWithDisabledElements() {
&gt; 
&gt; Why is there no test in this function start starts at 0 or 7?
&gt; 
&gt; &gt; Source/WebCore/dom/SelectElement.cpp:134
&gt; &gt; +    int edgeIndex = (direction== SkipForwards) ? 0 : (items.size() - 1);
&gt; 
&gt; Need a space after direction.
&gt; 
&gt; &gt; Source/WebCore/dom/SelectElement.cpp:789
&gt; &gt;                  endIndex = nextSelectableListIndex(data, element, lastSelectedListIndex(data, element));
&gt; 
&gt; For down, the start index is lastSelectedListIndex(data, element)
&gt; For up, the start index is optionToListIndex(data, element, selectedIndex(data, element))
&gt; 
&gt; Consider pulling this out of the clauses:
&gt; 
&gt; if (keyIdentifier == &quot;Down&quot; || keyIdentifier == &quot;PageDown&quot;) {
&gt;     int startIndex = lastSelectedListIndex(data, element)
&gt;     handled = true;
&gt;     if (keyIdentifier == &quot;Down&quot;)
&gt;         endIndex = nextSelectableListIndex(data, element, startIndex);
&gt;     else
&gt;         endIndex = nextSelectableListIndexPageAway(data, element, startIndex, SkipForwards);    
&gt; } else if (keyIdentifier == &quot;Up&quot; || keyIdentifier == &quot;PageUp&quot;)  {
&gt;     int startIndex = optionToListIndex(data, element, selectedIndex(data, element))
&gt;     handled = true;
&gt;     ... similar to above...
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379288</commentid>
    <comment_count>28</comment_count>
      <attachid>88180</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-04 18:51:08 -0700</bug_when>
    <thetext>Created attachment 88180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379289</commentid>
    <comment_count>29</comment_count>
      <attachid>88180</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-04 18:51:37 -0700</bug_when>
    <thetext>Comment on attachment 88180
Patch

Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379311</commentid>
    <comment_count>30</comment_count>
      <attachid>88180</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 21:29:42 -0700</bug_when>
    <thetext>Comment on attachment 88180
Patch

Great! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379391</commentid>
    <comment_count>31</comment_count>
      <attachid>88180</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-05 02:17:39 -0700</bug_when>
    <thetext>Comment on attachment 88180
Patch

Rejecting attachment 88180 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
gkcp/WebCorePrefix.h -c /Projects/CommitQueue/Source/WebCore/rendering/RenderListBox.cpp -o /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/RenderListBox.o

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/SelectElement.o /Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/8335252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379525</commentid>
    <comment_count>32</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-05 07:04:31 -0700</bug_when>
    <thetext>/Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:98: warning: no previous prototype for &apos;int WebCore::nextSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*, int)&apos;
/Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:103: warning: no previous prototype for &apos;int WebCore::previousSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*, int)&apos;
/Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:108: warning: no previous prototype for &apos;int WebCore::firstSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*)&apos;
/Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:117: warning: no previous prototype for &apos;int WebCore::lastSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*)&apos;

You need to prefix these functions with static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379609</commentid>
    <comment_count>33</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 09:01:59 -0700</bug_when>
    <thetext>Yeah, I forgot to add static when I move the functions from private...

I&apos;ll do that.

(In reply to comment #32)
&gt; /Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:98: warning: no previous prototype for &apos;int WebCore::nextSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*, int)&apos;
&gt; /Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:103: warning: no previous prototype for &apos;int WebCore::previousSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*, int)&apos;
&gt; /Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:108: warning: no previous prototype for &apos;int WebCore::firstSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*)&apos;
&gt; /Projects/CommitQueue/Source/WebCore/dom/SelectElement.cpp:117: warning: no previous prototype for &apos;int WebCore::lastSelectableListIndex(WebCore::SelectElementData&amp;, WebCore::Element*)&apos;
&gt; 
&gt; You need to prefix these functions with static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380066</commentid>
    <comment_count>34</comment_count>
      <attachid>88355</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 19:52:23 -0700</bug_when>
    <thetext>Created attachment 88355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380067</commentid>
    <comment_count>35</comment_count>
      <attachid>88355</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 19:52:44 -0700</bug_when>
    <thetext>Comment on attachment 88355
Patch

Commit again please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380073</commentid>
    <comment_count>36</comment_count>
      <attachid>88355</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-05 20:10:17 -0700</bug_when>
    <thetext>Comment on attachment 88355
Patch

This patch is missing lot (like the tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380082</commentid>
    <comment_count>37</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 20:47:21 -0700</bug_when>
    <thetext>Sorry... I try again.

(In reply to comment #36)
&gt; (From update of attachment 88355 [details])
&gt; This patch is missing lot (like the tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380084</commentid>
    <comment_count>38</comment_count>
      <attachid>88359</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 20:50:21 -0700</bug_when>
    <thetext>Created attachment 88359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380085</commentid>
    <comment_count>39</comment_count>
      <attachid>88359</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 20:50:59 -0700</bug_when>
    <thetext>Comment on attachment 88359
Patch

Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380147</commentid>
    <comment_count>40</comment_count>
      <attachid>88359</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-05 23:07:07 -0700</bug_when>
    <thetext>Comment on attachment 88359
Patch

Rejecting attachment 88359 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
........................................................................................................................................................................................................................................................................
fast/forms/listbox-deselect-scroll.html -&gt; failed

Exiting early after 1 failures. 8647 tests run.
207.49s total testing time

8646 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
4 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/8345059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380149</commentid>
    <comment_count>41</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-05 23:09:50 -0700</bug_when>
    <thetext>It seems like failed...

I look into it.

(In reply to comment #40)
&gt; (From update of attachment 88359 [details])
&gt; Rejecting attachment 88359 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;bu...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; ........................................................................................................................................................................................................................................................................
&gt; fast/forms/listbox-deselect-scroll.html -&gt; failed
&gt; 
&gt; Exiting early after 1 failures. 8647 tests run.
&gt; 207.49s total testing time
&gt; 
&gt; 8646 test cases (99%) succeeded
&gt; 1 test case (&lt;1%) had incorrect layout
&gt; 4 test cases (&lt;1%) had stderr output
&gt; 
&gt; Full output: http://queues.webkit.org/results/8345059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380440</commentid>
    <comment_count>42</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-06 09:02:47 -0700</bug_when>
    <thetext>Interestingly, &apos;SelectAll&apos; command in DumpRenderTree doesn&apos;t work well. Manual select all works fine.

The problem is in previousSelectableListIndex and nextSelectableListIndex.

Still I&apos;m looking into it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380665</commentid>
    <comment_count>43</comment_count>
      <attachid>88472</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-06 11:39:41 -0700</bug_when>
    <thetext>Created attachment 88472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380666</commentid>
    <comment_count>44</comment_count>
      <attachid>88472</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-06 11:40:20 -0700</bug_when>
    <thetext>Comment on attachment 88472
Patch

Fixed test failure problem.

Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380716</commentid>
    <comment_count>45</comment_count>
      <attachid>88472</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-06 12:19:24 -0700</bug_when>
    <thetext>Comment on attachment 88472
Patch

So this was the fix:

 103static int previousSelectableListIndex(SelectElementData&amp; data, Element* element, int startIndex)
 104{
 105    if (startIndex == -1)
 106        startIndex = data.listItems(element).size();

OK, that mimics what was there before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380793</commentid>
    <comment_count>46</comment_count>
      <attachid>88472</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 13:52:36 -0700</bug_when>
    <thetext>Comment on attachment 88472
Patch

Clearing flags on attachment: 88472

Committed r83096: &lt;http://trac.webkit.org/changeset/83096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380794</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 13:52:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380906</commentid>
    <comment_count>48</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-06 15:27:30 -0700</bug_when>
    <thetext>David,

Thank you for your support.

Finally I land it;-)

Thanks,

(In reply to comment #47)
&gt; All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33476</attachid>
            <date>2009-07-24 16:22:36 -0700</date>
            <delta_ts>2010-06-10 18:53:50 -0700</delta_ts>
            <desc>Fixes bug 27658</desc>
            <filename>Patch27658.txt</filename>
            <type>text/plain</type>
            <size>27488</size>
            <attacher name="Neil Rhodes">nrhodes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjM2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDctMjQgIE5laWwgUmhvZGVzICA8bnJob2Rlc0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhh
bmRsZSBQYWdlVXAvUGFnZURvd24vSG9tZS9FbmQga2V5cyBpbiBTZWxlY3QgZWxlbWVudHMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjU4CisK
KyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAorCisgICAgICAg
ICogZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFZhbGlkSW5k
ZXgpOgorICAgICAgICBNb3ZlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZmlsZSB0byBiZSB1c2Vk
IGJ5IG90aGVyIHJvdXRpbmVzCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50OjpzZWxl
Y3RhYmxlTGlzdEluZGV4UGFnZUZyb20pOgorICAgICAgICBSZXR1cm5zIGEgc2VsZWN0YWJsZSBp
bmRleCBvbmUgcGFnZSBhd2F5IGZyb20gdGhlIGdpdmVuIGluZGV4CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCk6CisgICAgICAgIEltcGxl
bWVudGVkIHdpdGggbmV4dFZhbGlkSW5kZXgKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1l
bnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleCk6CisgICAgICAgIEltcGxlbWVudGVkIHdp
dGggbmV4dFZhbGlkSW5kZXgKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6OmZpcnN0
U2VsZWN0YWJsZUxpc3RJbmRleCk6CisgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHNlbGVjdGFi
bGUgaW5kZXgKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RhYmxl
TGlzdEluZGV4KToKKyAgICAgICAgUmV0dXJucyB0aGUgbGFzdCBzZWxlY3RhYmxlIGluZGV4Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgUGFnZVVwL1BhZ2VEb3duL0hvbWUvRW5kIHdp
dGggYm90aCBzaW5nbGUgYW5kCisgICAgICAgIG11bHRpcGxlIHNlbGVjdGlvbgorCisgICAgICAg
ICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6
Oik6CisgICAgICAgIERlY2xhcmVzIG5ldyBtZXRob2RzIGFib3ZlLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgTWFrZSBSZW5kZXJMaXN0Qm94OjpzaXpl
IHB1YmxpYyBzbyB0aGF0IFBhZ2VVcC9QYWdlRG93biBiZWhhdmlvciBjYW4KKyAgICAgICAgdXNl
IHRoZSBhY3R1YWwgbGlzdCBzaXplIHJhdGhlciB0aGFuIHRoYXQgc3BlY2lmaWVkIGluIEhUTUwg
KHRoZXkgY2FuCisgICAgICAgIGRpZmZlciBkdWUgdG8gdGhlIG1pbmltdW0gc2l6ZSBpbXBvc2Vk
IGJ5IFJlbmRlckxpc3RCb3gpLgorCiAyMDA5LTA3LTI0ICBKaWFuIExpICA8amlhbmxpQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29y
ZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDQ2MzY3KQorKysgV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywyNyArMTAzLDc3IEBAIHZvaWQgU2VsZWN0RWxl
bWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oU2UKICAgICB9CiB9CiAKLWludCBTZWxlY3RFbGVtZW50
OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUg
bmV4dCB2YWxpZCBsaXN0IGl0ZW0gfHNraXB8IGl0ZW1zIHBhc3QgfGxpc3RJbmRleHwgaW4gZGly
ZWN0aW9uIHxkaXJlY3Rpb258Lgorc3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5kZXgsIFNlbGVjdEVsZW1lbnQ6OlNr
aXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKK3sKKyAgICBpbnQgbGFzdEdvb2RJbmRl
eCA9IGxpc3RJbmRleDsKKyAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7CisgICAgZm9y
IChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBz
aXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7CisgICAgICAgIC0tc2tpcDsKKyAgICAgICAg
aWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSAmJiBpc09wdGlvbkVsZW1lbnQo
bGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7CisgICAgICAgICAgICBsYXN0R29vZEluZGV4ID0gbGlz
dEluZGV4OworICAgICAgICAgICAgaWYgKHNraXAgPD0gMCkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGFzdEdvb2RJbmRleDsKK30KKyAgCisv
LyByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBpdGVtIG9uZSBwYWdlIGF3YXkg
ZnJvbSB8c3RhcnRJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258LgoraW50IFNlbGVjdEVs
ZW1lbnQ6OnNlbGVjdGFibGVMaXN0SW5kZXhQYWdlRnJvbShTZWxlY3RFbGVtZW50RGF0YSYgZGF0
YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRl
bXMoZWxlbWVudCk7Ci0gICAgaW50IGluZGV4ID0gc3RhcnRJbmRleCArIDE7Ci0gICAgd2hpbGUg
KGluZGV4ID49IDAgJiYgKHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAmJiAoIWlzT3B0
aW9uRWxlbWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJsZWQoKSkpCi0g
ICAgICAgICsraW5kZXg7Ci0gICAgaWYgKCh1bnNpZ25lZCkgaW5kZXggPT0gaXRlbXMuc2l6ZSgp
KQorICAgIC8vIGNhbid0IHVzZSBkYXRhLT5zaXplKCkgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMg
YSBtaW5pbXVtIHNpemUKKyAgICBpbnQgcGFnZVNpemUgPSBzdGF0aWNfY2FzdDxSZW5kZXJMaXN0
Qm94Kj4oZWxlbWVudC0+cmVuZGVyZXIoKSktPnNpemUoKSAtIDE7ICAvLyAtMSBzbyB3ZSBzdGls
bCBzaG93IGNvbnRleHQKKyAgICBpbnQgbGlzdFNpemUgPSBpdGVtcy5zaXplKCk7CisgICAgCisg
ICAgLy8gb25lIHBhZ2UgYXdheSwgYnV0IG5vdCBvdXRzaWRlIHZhbGlkIGJvdW5kcworICAgIGlu
dCBpbmRleE9uZVBhZ2VBd2F5ID0gb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgbWF4
KDAsIG1pbihsaXN0U2l6ZSAtIDEsIHN0YXJ0SW5kZXggKyBkaXJlY3Rpb24gKiBwYWdlU2l6ZSkp
KTsKKyAgCisgICAgLy8gdHJ5IG9uZSBiZWxvdyB0aGUgZGVzaXJlZCBpbmRleCBzbyB0aGF0IGlu
ZGV4T25lUGFnZUF3YXkgaXMgdGhlIGZpcnN0IGluZGV4IHRvIGJlIHRlc3RlZAorICAgIFNraXBE
aXJlY3Rpb24gb3Bwb3NpdGVEaXJlY3Rpb24gPSAoZGlyZWN0aW9uID09IFNraXBGb3J3YXJkcykg
PyBTa2lwQmFja3dhcmRzIDogU2tpcEZvcndhcmRzOworICAgIGludCBpbmRleCA9IG5leHRWYWxp
ZEluZGV4KGl0ZW1zLCBpbmRleE9uZVBhZ2VBd2F5ICsgb3Bwb3NpdGVEaXJlY3Rpb24sIGRpcmVj
dGlvbiwgMSk7CisKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGxpc3RTaXplIHx8KCFp
c09wdGlvbkVsZW1lbnQoaXRlbXNbaW5kZXhdKSB8fCBpdGVtc1tpbmRleF0tPmRpc2FibGVkKCkp
KSB7CisgICAgICAgIC8vIGNvdWxkbid0IGZpbmQgdmFsaWQgaW5kZXggaW4gdGhhdCBkaXJlY3Rp
b247IGdvIGJhY2sgdGhlIG90aGVyIHdheQorICAgICAgICBpbmRleCA9IG5leHRWYWxpZEluZGV4
KGl0ZW1zLCBpbmRleE9uZVBhZ2VBd2F5LCBvcHBvc2l0ZURpcmVjdGlvbiwgMSk7CisgICAgfQor
ICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbGlzdFNpemUpCiAgICAgICAgIHJldHVybiBz
dGFydEluZGV4OwogICAgIHJldHVybiBpbmRleDsKIH0KIAoraW50IFNlbGVjdEVsZW1lbnQ6Om5l
eHRTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBl
bGVtZW50LCBpbnQgc3RhcnRJbmRleCkKK3sKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBp
dGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpOworICAgIHJldHVybiBuZXh0VmFsaWRJbmRl
eChpdGVtcywgc3RhcnRJbmRleCwgU2tpcEZvcndhcmRzLCAxKTsKK30KKwogaW50IFNlbGVjdEVs
ZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0
YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCiB7CiAgICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgaXRlbXMgPSBkYXRhLmxpc3RJdGVtcyhlbGVtZW50KTsKICAgICBpZiAoc3Rh
cnRJbmRleCA9PSAtMSkKICAgICAgICAgc3RhcnRJbmRleCA9IGl0ZW1zLnNpemUoKTsKLSAgICBp
bnQgaW5kZXggPSBzdGFydEluZGV4IC0gMTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgoaXRl
bXMsIHN0YXJ0SW5kZXgsIFNraXBCYWNrd2FyZHMsIDEpOworfQorCitpbnQgU2VsZWN0RWxlbWVu
dDo6Zmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0
YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5k
ZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6ZSgpICYmICghaXNPcHRpb25F
bGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxlZCgpKSkKKyAgICAg
ICAgKytpbmRleDsKKyAgICBpZiAoKHVuc2lnbmVkKSBpbmRleCA9PSBpdGVtcy5zaXplKCkpCisg
ICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gaW5kZXg7Cit9CisgIAoraW50IFNlbGVjdEVs
ZW1lbnQ6Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBF
bGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0g
ZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0gaXRlbXMuc2l6ZSgpIC0g
MTsKICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6
ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5k
aXNhYmxlZCgpKSkKICAgICAgICAgLS1pbmRleDsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAg
ICAgIHJldHVybiBzdGFydEluZGV4OwogICAgIHJldHVybiBpbmRleDsKIH0KIApAQCAtNTE3LDI5
ICs1NjcsNiBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc2V0KFNlbGVjdEVsZW1lbnRECiAgICAg
ZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogICAgIAotI2lmICFBUlJPV19LRVlT
X1BPUF9NRU5VCi1lbnVtIFNraXBEaXJlY3Rpb24gewotICAgIFNraXBCYWNrd2FyZHMgPSAtMSwK
LSAgICBTa2lwRm9yd2FyZHMgPSAxCi19OwotCi0vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUg
bmV4dCB2YWxpZCBsaXN0IGl0ZW0gfHNraXB8IGl0ZW1zIHBhc3QgfGxpc3RJbmRleHwgaW4gZGly
ZWN0aW9uIHxkaXJlY3Rpb258Lgotc3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGly
ZWN0aW9uLCBpbnQgc2tpcCkKLXsKLSAgICBpbnQgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsK
LSAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7Ci0gICAgZm9yIChsaXN0SW5kZXggKz0g
ZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXgg
Kz0gZGlyZWN0aW9uKSB7Ci0gICAgICAgIC0tc2tpcDsKLSAgICAgICAgaWYgKCFsaXN0SXRlbXNb
bGlzdEluZGV4XS0+ZGlzYWJsZWQoKSAmJiBpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJ
bmRleF0pKSB7Ci0gICAgICAgICAgICBsYXN0R29vZEluZGV4ID0gbGlzdEluZGV4OwotICAgICAg
ICAgICAgaWYgKHNraXAgPD0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLSAgICByZXR1cm4gbGFzdEdvb2RJbmRleDsKLX0KLSNlbmRpZgotCiB2b2lkIFNlbGVj
dEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYg
ZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0
bWxGb3JtKQogewogI2lmICFBUlJPV19LRVlTX1BPUF9NRU5VCkBAIC03MzUsMTUgKzc2MiwyOSBA
QCB2b2lkIFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRICiAgICAgICAgICAgICAg
ICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBsYXN0
U2VsZWN0ZWRMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCkpOwogICAgICAgICAgICAgZWxzZSBpZiAo
a2V5SWRlbnRpZmllciA9PSAiVXAiKQogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlv
dXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIG9wdGlvblRvTGlzdEluZGV4KGRh
dGEsIGVsZW1lbnQsIHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCkpKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikKKyAgICAgICAgICAgICAgICBl
bmRJbmRleCA9IHNlbGVjdGFibGVMaXN0SW5kZXhQYWdlRnJvbShkYXRhLCBlbGVtZW50LCBsYXN0
U2VsZWN0ZWRMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCksIFNraXBGb3J3YXJkcyk7CisgICAgICAg
ICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlVXAiKQorICAgICAgICAgICAgICAg
IGVuZEluZGV4ID0gc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9tKGRhdGEsIGVsZW1lbnQsIHNl
bGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCksIFNraXBCYWNrd2FyZHMpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJl
bnQgZW5kIGluZGV4CiAgICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpCiAg
ICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBl
bGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpOwogICAgICAgICAgICAgZWxz
ZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKQogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2Vs
ZWN0aW9uRW5kSW5kZXgoKSk7ICAgIAotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
a2V5SWRlbnRpZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRpZmllciA9PSAiVXAiKSB7CisgICAg
ICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJQYWdlRG93biIpCisgICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBzZWxlY3RhYmxlTGlzdEluZGV4UGFnZUZyb20oZGF0YSwgZWxlbWVu
dCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpLCBTa2lwRm9yd2FyZHMpOworICAgICAg
ICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikKKyAgICAgICAgICAgICAg
ICBlbmRJbmRleCA9IHNlbGVjdGFibGVMaXN0SW5kZXhQYWdlRnJvbShkYXRhLCBlbGVtZW50LCBk
YXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCksIFNraXBCYWNrd2FyZHMpOworICAgICAgICB9
CisgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJIb21lIikKKyAgICAgICAgICAgIGVuZElu
ZGV4ID0gZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICBl
bHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJFbmQiKQorICAgICAgICAgICAgZW5kSW5kZXggPSBs
YXN0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50KTsKKyAgICAgIAorICAgICAgICBp
ZiAoZW5kSW5kZXggPj0gMCAmJiAKKwkJICAgICAgICAoa2V5SWRlbnRpZmllciA9PSAiRG93biIg
fHwga2V5SWRlbnRpZmllciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIkhvbWUiCisgICAg
ICAgICAgICAgICAgfHwgIGtleUlkZW50aWZpZXIgPT0gIkVuZCIgfHwga2V5SWRlbnRpZmllciA9
PSAiUGFnZURvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpKSB7CiAgICAgICAgICAg
ICAvLyBTYXZlIHRoZSBzZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcg
c2VsZWN0aW9uIHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBpbW1lZGlhdGVseSBhZnRl
ciBtYWtpbmcgdGhlIG5ldyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlv
bihkYXRhLCBlbGVtZW50KTsKIApJbmRleDogV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gNDYzNjcp
CisrKyBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDExIEBAIGNsYXNzIFN0cmluZzsKIAogY2xhc3MgU2VsZWN0RWxlbWVudCB7CiBwdWJsaWM6
CisgICAgZW51bSBTa2lwRGlyZWN0aW9uIHsKKyAgICAgICAgU2tpcEJhY2t3YXJkcyA9IC0xLAor
ICAgICAgICBTa2lwRm9yd2FyZHMgPSAxCisgICAgfTsKKyAgICAKICAgICB2aXJ0dWFsIGJvb2wg
bXVsdGlwbGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGludCBzaXplKCkgY29uc3QgPSAw
OwpAQCAtNjcsNyArNzIsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIHZvaWQgc2VsZWN0
QWxsKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNhdmVM
YXN0U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOworICAgIHN0YXRpYyBp
bnQgc2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VGcm9tKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBF
bGVtZW50KiBlbGVtZW50LCBpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24p
OwogICAgIHN0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOworICAgIHN0YXRpYyBpbnQgZmlyc3RTZWxl
Y3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOworICAgIHN0YXRp
YyBpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50
Kik7CiAgICAgc3RhdGljIGludCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxl
bWVudERhdGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHNl
dEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCos
IGludCBpbmRleCk7CiAgICAgc3RhdGljIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgo
U2VsZWN0RWxlbWVudERhdGEmLCBpbnQgaW5kZXgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaAkocmV2aXNpb24gNDYzNjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpOwogICAgIGJvb2wg
bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCk7CisgIAorICAgIGludCBzaXplKCkgY29uc3Q7
IC8vIFJldHVybnMgdGhlIG1heCBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW4gYmUgZGlzcGxheWVk
IGF0IGEgdGltZQogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xs
ZWQoYm9vbCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Ny
b2xsKCk7CkBAIC0xMTIsNyArMTE0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBpbnQgaXRlbUhl
aWdodCgpIGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCk7
Ci0gICAgaW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgbnVtVmlzaWJsZUl0ZW1zKCkgY29uc3Q7
CiAgICAgaW50IG51bUl0ZW1zKCkgY29uc3Q7CiAgICAgaW50IGxpc3RIZWlnaHQoKSBjb25zdDsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ2MzY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMjQgIE5laWwgUmhvZGVzICA8bnJo
b2Rlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhhbmRsZSBQYWdlVXAvUGFnZURvd24vSG9tZS9FbmQga2V5cyBpbiBTZWxlY3Qg
ZWxlbWVudHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NjU4CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWw6
IEFkZGVkLgorCiAyMDA5LTA3LTI0ICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IHRoZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBm
b3IgPHNlbGVjdD4gZWxlbWVudHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURv
d24sIGl0IHdpbGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBy
dW4gd2l0aCBydW4td2Via2l0LXRlc3RzLgorCisgIAordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVs
ZW1lbnRzIHBhc3NlZAordGVzdFBhZ2VVcE5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RI
b21lTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cyBw
YXNzZWQKK3Rlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVzdFBhZ2VV
cFdpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVzdEhvbWVXaXRoRGlzYWJsZWRFbGVtZW50
cyBwYXNzZWQKK3Rlc3RFbmRXaXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK3Rlc3RWYXJpb3Vz
U2hpZnRLZXlzTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZAordGVzdFZhcmlvdXNTaGlmdEtleXNX
aXRoRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMzQgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBs
b2cocykKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlh
bEluZGV4LCBleHBlY3RlZEluZGV4KSB7CisgICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzZWxlY3RJZCk7CisgICAgICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCk7
CisgICAgICAgIHNlbGVjdC5mb2N1cygpOworICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9
IGluaXRpYWxJbmRleDsKKyAgICAgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGluaXRp
YWxJbmRleCkgeworICAgICAgICAgICAgbG9nKCJjYW4ndCBzZXQgc2VsZWN0ZWRJbmRleCB0byAi
ICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJworICAgICAgICAgICAgKyBzZWxlY3Quc2VsZWN0ZWRJ
bmRleCArICcpJyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oa2V5KTsKKyAgICAgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4
cGVjdGVkSW5kZXgpIHsKKyAgICAgICAgICAgIGxvZygnc2VsZWN0ZWRJbmRleCBzaG91bGQgYmUg
JyArIGV4cGVjdGVkSW5kZXggKyAnIChpcyAnICsKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCArICcpIGFmdGVyIGEgJyArIGtleSArIAorICAgICAgICAgICAgICAgICcgZnJv
bSBpbmRleCAnICsgaW5pdGlhbEluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
ZXF1YWxBcnJheXMoYTEsIGEyKSB7CisgICAgICAgIGlmIChhMS5sZW5ndGggIT0gYTIubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYTEu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGR1bXBBcnJheShhKSB7CisgICAgICAgIHMgPSAiWyI7
CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBz
ID0gcyArIGFbaV07CisgICAgICAgICAgICBpZiAoaSA8IGEubGVuZ3RoIC0gMSkKKyAgICAgICAg
ICAgICAgICAgcyA9IHMgKyAiLCAiOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzICsgIl0i
OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBnZXRTZWxlY3RlZEluZGljZXMoc2VsZWN0KSB7
CisgICAgICAgIG5vd1NlbGVjdGVkID0gW107CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxl
Y3Qub3B0aW9ucy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGlmIChzZWxlY3Qub3B0aW9uc1tp
XS5zZWxlY3RlZCkKKyAgICAgICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAg
ICAgIHJldHVybiBub3dTZWxlY3RlZDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY2xlYXJT
ZWxlY3Rpb24oc2VsZWN0KSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9u
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHNlbGVjdC5vcHRpb25zW2ldLnNlbGVjdGVkID0g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIGV4cGVjdGVkSW5kaWNlcyBzaG91bGQgYmUgaW4g
c29ydGVkIG9yZGVyCisgICAgZnVuY3Rpb24gc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoc2VsZWN0SWQsIGtleSwgZXhwZWN0ZWRJbmRpY2VzKSB7CisgICAgICAgIHZhciBzZWxlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RJZCk7CisgICAgICAgIHNlbGVjdC5mb2N1
cygpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIFsic2hpZnRLZXkiXSk7CisgICAgICAgIG5vd1Nl
bGVjdGVkID0gZ2V0U2VsZWN0ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgICAgIGlmICghZXF1YWxB
cnJheXMobm93U2VsZWN0ZWQsIGV4cGVjdGVkSW5kaWNlcykpIHsKKyAgICAgICAgICAgIGxvZygn
c2VsZWN0ZWQgaW5kaWNlcyBzaG91bGQgYmUgJyArIGR1bXBBcnJheShleHBlY3RlZEluZGljZXMp
ICsgJyAoaXMgJyArCisgICAgICAgICAgICAgICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcp
IGFmdGVyIGEgJyArIGtleSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFBhZ2VEb3du
Tm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdl
RG93biIsIDAsIDMpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJwYWdlRG93biIsIDEsIDQpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIsIDIsIDUpOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93
biIsIDMsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJwYWdlRG93biIsIDQsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIsIDUsIDYpOworICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlRG93biIs
IDYsIDYpOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RQYWdl
RG93bk5vRGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsKKyAgICAgICAgcmV0dXJuIHBhc3NlZDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJwYWdlVXAiLCA2LCAzKTsKKyAgICAgICAgcGFz
c2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAicGFnZVVwIiwgNSwg
Mik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3Nz
JywgInBhZ2VVcCIsIDQsIDEpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCdzcycsICJwYWdlVXAiLCAzLCAwKTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAicGFnZVVwIiwgMiwgMCk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywgInBhZ2VV
cCIsIDEsIDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzcycsICJwYWdlVXAiLCAwLCAwKTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAg
ICAgICAgbG9nKCd0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAg
ICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0SG9tZU5vRGlz
YWJsZWRFbGVtZW50cygpIHsKKyAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiaG9tZSIsIDYs
IDApOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdz
cycsICJob21lIiwgNSwgMCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoJ3NzJywgImhvbWUiLCA0LCAwKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2Vk
ICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiaG9tZSIsIDMsIDApOworICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJob21lIiwgMiwg
MCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3Nz
JywgImhvbWUiLCAxLCAwKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgnc3MnLCAiaG9tZSIsIDAsIDApOworCisgICAgICAgIGlmIChwYXNzZWQpCisg
ICAgICAgICAgICBsb2coJ3Rlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAg
ICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0RW5kTm9E
aXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJlbmQiLCA2
LCA2KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgn
c3MnLCAiZW5kIiwgNSwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoJ3NzJywgImVuZCIsIDQsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQg
JiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzcycsICJlbmQiLCAzLCA2KTsKKyAgICAgICAgcGFz
c2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3MnLCAiZW5kIiwgMiwgNik7
CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzJywg
ImVuZCIsIDEsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCdzcycsICJlbmQiLCAwLCA2KTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAg
ICAgICAgbG9nKCd0ZXN0RW5kTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICBy
ZXR1cm4gcGFzc2VkOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhEaXNh
YmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBw
YXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFnZURvd24i
LCAxLCA0KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgnc3NkJywgInBhZ2VEb3duIiwgMiwgNSk7IAorICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFnZURvd24iLCA0LCA2KTsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgInBhZ2VEb3du
IiwgNSwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoJ3NzZCcsICJwYWdlRG93biIsIDYsIDYpOworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAg
ICAgICAgICBsb2coJ3Rlc3RQYWdlRG93bldpdGhEaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOwor
ICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0UGFn
ZVVwV2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOwor
CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcs
ICJwYWdlVXAiLCA2LCAyKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgnc3NkJywgInBhZ2VVcCIsIDUsIDIpOworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFnZVVwIiwgNCwgMSk7IAorICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAicGFn
ZVVwIiwgMiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoJ3NzZCcsICJwYWdlVXAiLCAxLCAxKTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAg
ICAgICAgICAgbG9nKCd0ZXN0UGFnZVVwV2l0aERpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7Cisg
ICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RIb21l
V2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworCisg
ICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJo
b21lIiwgNywgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoJ3NzZCcsICJob21lIiwgNiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgNSwgMSk7CisgICAgICAgIHBhc3Nl
ZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgNCwgMSk7
CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcs
ICJob21lIiwgMywgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgMiwgMSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgMSwgMSk7CisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJob21lIiwgMCwg
MSk7CisKKyAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygndGVzdEhvbWVXaXRo
RGlzYWJsZWRFbGVtZW50cyBwYXNzZWQnKTsKKyAgICAgICAgcmV0dXJuIHBhc3NlZDsKKyAgICB9
CisgICAgCisgICAgZnVuY3Rpb24gdGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAg
ICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiZW5kIiwgNywgNik7CisgICAgICAgIHBhc3NlZCA9
IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJlbmQiLCA2LCA2KTsKKyAg
ICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgImVu
ZCIsIDUsIDYpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCdzc2QnLCAiZW5kIiwgNCwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoJ3NzZCcsICJlbmQiLCAzLCA2KTsKKyAgICAgICAgcGFzc2VkID0g
cGFzc2VkICYmIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgnc3NkJywgImVuZCIsIDIsIDYpOworICAg
ICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZEtleUFuZEV4cGVjdEluZGV4KCdzc2QnLCAiZW5k
IiwgMSwgNik7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoJ3NzZCcsICJlbmQiLCAwLCA2KTsKKworICAgICAgICBpZiAocGFzc2VkKQorICAgICAgICAg
ICAgbG9nKCd0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMgcGFzc2VkJyk7CisgICAgICAgIHJl
dHVybiBwYXNzZWQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RWYXJpb3VzU2hpZnRL
ZXlzTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAg
ICAgICAgCisgICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Mn
KTsKKyAgICAgICAgc2VsZWN0LmZvY3VzKCk7CisgICAgICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVj
dCk7CisgICAgICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMDsKKworICAgICAgICBwYXNzZWQg
PSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgInBhZ2VE
b3duIiwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0
LCA1LCA2XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygnc3MnLCAicGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pOwor
ICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoJ3NzJywgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAicGFnZVVwIiwgWzBd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzcycsICJwYWdlVXAiLCBbMF0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYg
c2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgImVuZCIsIFswLCAxLCAyLCAz
LCA0LCA1LCA2XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKTsKKyAg
ICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCdzcycsICJob21lIiwgWzBdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJob21lIiwgWzBdKTsKKyAgICAgICAgCisg
ICAgICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCk7CisgICAgICAgIHNlbGVjdC5zZWxlY3RlZElu
ZGV4ID0gMzsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCdzcycsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSk7CisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAi
cGFnZURvd24iLCBbMywgNCwgNSwgNl0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgInBhZ2VVcCIsIFszXSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygn
c3MnLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJwYWdlVXAiLCBbMCwgMSwg
MiwgM10pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoJ3NzJywgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSk7CisgICAgICAgIHBhc3Nl
ZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3MnLCAiZW5k
IiwgWzMsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzcycsICJlbmQiLCBbMywgNCwgNSwgNl0pOworICAgICAg
ICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3Nz
JywgImhvbWUiLCBbMCwgMSwgMiwgM10pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzJywgImhvbWUiLCBbMCwgMSwgMiwgM10p
OworCisgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICBsb2coJ3Rlc3RWYXJpb3VzU2hp
ZnRLZXlzTm9EaXNhYmxlZEVsZW1lbnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2Vk
OworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNh
YmxlZEVsZW1lbnRzKCkgeworICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAg
ICAgIHNlbGVjdC5mb2N1cygpOworICAgICAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAg
ICAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDE7CisKKyAgICAgICAgcGFzc2VkID0gcGFzc2Vk
ICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZURvd24iLCBb
MSwgMiwgNF0pOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoJ3NzZCcsICJwYWdlRG93biIsIFsxLCAyLCA0LCA1LCA2XSk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygn
c3NkJywgInBhZ2VEb3duIiwgWzEsIDIsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwg
WzEsIDJdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzFdKTsKKyAgICAgICAgcGFzc2VkID0gcGFz
c2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwg
WzFdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBl
Y3RJbmRpY2VzKCdzc2QnLCAiZW5kIiwgWzEsIDIsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2Vk
ID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiZW5k
IiwgWzEsIDIsIDQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiaG9tZSIsIFsxXSk7CisgICAgICAgIHBh
c3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygnc3NkJywg
ImhvbWUiLCBbMV0pOworICAgICAgICAKKyAgICAgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsK
KyAgICAgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSA0OworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoJ3NzZCcsICJwYWdlRG93biIs
IFs0LCA1LCA2XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygnc3NkJywgInBhZ2VEb3duIiwgWzQsIDUsIDZdKTsKKyAgICAgICAg
cGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2Qn
LCAicGFnZVVwIiwgWzIsIDRdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAicGFnZVVwIiwgWzEsIDIsIDRdKTsKKyAg
ICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCdzc2QnLCAicGFnZVVwIiwgWzEsIDIsIDRdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYm
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiZW5kIiwgWzQsIDUsIDZd
KTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCdzc2QnLCAiZW5kIiwgWzQsIDUsIDZdKTsKKyAgICAgICAgcGFzc2VkID0gcGFzc2Vk
ICYmIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCdzc2QnLCAiaG9tZSIsIFsxLCAy
LCA0XSk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhw
ZWN0SW5kaWNlcygnc3NkJywgImhvbWUiLCBbMSwgMiwgNF0pOworCisgICAgICAgIGlmIChwYXNz
ZWQpCisgICAgICAgICAgbG9nKCd0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1l
bnRzIHBhc3NlZCcpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVz
dFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAm
JiB0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAgIHBhc3NlZCA9IHBhc3Nl
ZCAmJiB0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICBwYXNzZWQgPSBwYXNz
ZWQgJiYgdGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cygpOworCisgICAgICAgIHBhc3NlZCA9IHBh
c3NlZCAmJiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICBwYXNz
ZWQgPSBwYXNzZWQgJiYgdGVzdFBhZ2VVcFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAgICAg
IHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0SG9tZVdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7CisgICAg
ICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMoKTsKKyAg
ICAgICAgCisgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiB0ZXN0VmFyaW91c1NoaWZ0S2V5c05v
RGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICBwYXNzZWQgPSBwYXNzZWQgJiYgdGVzdFZhcmlv
dXNTaGlmdEtleXNXaXRoRGlzYWJsZWRFbGVtZW50cygpOworICAgICAgICAKKyAgICAgICAgaWYg
KHBhc3NlZCkKKyAgICAgICAgICAgIGxvZygnU1VDQ0VTUycpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBsb2coJ0ZBSUxVUkUnKTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhl
IEhvbWUvRW5kL1BhZ2VVcC9QYWdlRG93biBrZXlzIHdvcmsgY29ycmVjdGx5Citmb3IgJmx0O3Nl
bGVjdCZndDsgZWxlbWVudHMuICBTaW5jZSBpdCByZXF1aXJlcyA8Q09ERT5ldmVudFNlbmRlci5r
ZXlEb3duPC9DT0RFPiwgaXQgd2lsbCBub3QgcnVuIHNvbG8gaW4gdGhlIHdlYiBicm93c2VyOyBp
dCBtdXN0IGJlIHJ1bgord2l0aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorICAg
IDxocj4KKyAgPGZvcm0+CisgICAgICAgICA8IS0tIFdlIHNwZWNpZnkgYSBzaXplIG9mIDMgYnV0
IHdpbGwgZW5kIHVwIHJlbmRlcmluZyB3aXRoIDQgYmVjYXVzZSB3ZWJraXQgaW1wb3NlcyBhIG1p
bmltdW0gc2l6ZSBvZiA0LiAKKyAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQg
dG8gbWFrZSBzdXJlIHRoZSBjb2RlIGhhbmRsZXMgdGhpcyBjYXNlICAtLT4KKyAgICAgICAgPHNl
bGVjdCBuYW1lPSJzaW5nbGVzZWxlY3QiIGlkPSJzcyIKKyAgICAgICAgICAgICAgICBzaXplPSIz
IiBtdWx0aXBsZT0idHJ1ZSI+CisgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlv
bj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSIyIj4yIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1
ZT0iMyI+MyA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQgPC9vcHRp
b24+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAgICAg
ICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8L29wdGlvbj4KKyAgICAgICAgPC9zZWxlY3Q+CisgICAg
ICAgIDxzZWxlY3QgIG5hbWU9InNpbmdsZXNlbGVjdHdpdGhkaXNhYmxlZCIgaWQ9InNzZCIKKyAg
ICAgICAgICAgICAgICBzaXplPSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iMCIgZGlzYWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSIxIj4xIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
MiI+MiA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0
cnVlIj4zIDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlv
bj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgICAg
ICA8b3B0aW9uIHZhbHVlPSI2Ij42IDwvb3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1
ZT0iNyIgZGlzYWJsZWQgPSAidHJ1ZSI+NyA8L29wdGlvbj4gICAgICAgICAgICAKKyAgICAgICAg
PC9zZWxlY3Q+CisgICAgPC9mb3JtPgorICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="19036"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34840</attachid>
            <date>2009-08-14 07:34:19 -0700</date>
            <delta_ts>2009-08-14 07:34:51 -0700</delta_ts>
            <desc>badselect.html</desc>
            <filename>badselect.html</filename>
            <type>text/html</type>
            <size>2752</size>
            <attacher name="Neil Rhodes">nrhodes</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiI+CjxodG1sPgogIDxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MCI+CiAgPHRpdGxlPjwvdGl0
bGU+CiAgPC9oZWFkPgogIDxib2R5PgogIAogIDwvYnI+PC9icj5Ib21lLCBlbmQsIHBhZ2UgdXAs
IGFuZCBwYWdlIGRvd24gKmRvIG5vdCogd29yayBhcyBleHBlY3RlZCB3aGVuIHNlbGVjdGluZyBv
cHRpb25zIGFuZCB0aGUgd2lkZ2V0IGhhcyBmb2N1cy4gIFByZXNzaW5nIHRoZXNlIGtleXMgd2ls
bCBjYXVzZSB0aGUgcGFnZSB0byBqdW1wLCBhbmQgd2lsbCBub3QgbW92ZSB0aGUgc2VsZWN0aW9u
LjwvYnI+CgogICAgICAgICAgICA8c2VsZWN0IG5hbWU9ImNvbXBvbmVudCIgaWQ9ImNvbXBvbmVu
dCIKICAgICAgICAgICAgICAgICAgICBzaXplPSI1Ij4KICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm9va21hcmtzICZhbXA7IEhpc3RvcnkiPkJvb2ttYXJr
cyAmYW1wOyBIaXN0b3J5CiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9IkJ1aWxkIENvbmZpZyI+QnVpbGQgQ29uZmlnCiAgICAgICAgICAgICAg
ICA8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkRpc2FiaWxpdHkgQWNj
ZXNzIj5EaXNhYmlsaXR5IEFjY2VzcwogICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJFeHRlbnNpb24gQ29tcGF0aWJpbGl0eSI+RXh0ZW5zaW9u
IENvbXBhdGliaWxpdHkKICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iRmlsZSBIYW5kbGluZyI+RmlsZSBIYW5kbGluZwogICAgICAgICAgICAg
ICAgPC9vcHRpb24+CgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VuZXJhbCIgc2Vs
ZWN0ZWQ9InNlbGVjdGVkIj5HZW5lcmFsCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhlbHAgRG9jdW1lbnRhdGlvbiI+SGVscCBEb2N1bWVu
dGF0aW9uCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24g
dmFsdWU9Ikluc3RhbGxlciI+SW5zdGFsbGVyCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAg
ICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IktleWJvYXJkIE5hdmlnYXRpb24iPktleWJvYXJk
IE5hdmlnYXRpb24KICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iTG9jYXRpb24gQmFyIGFuZCBBdXRvY29tcGxldGUiPkxvY2F0aW9uIEJhciBh
bmQgQXV0b2NvbXBsZXRlCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAg
IDxvcHRpb24gdmFsdWU9Ik1lbnVzIj5NZW51cwogICAgICAgICAgICAgICAgPC9vcHRpb24+Cgog
ICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9zdW1tYXJpZXMiPk1pY3Jvc3VtbWFy
aWVzCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9Ik1pZ3JhdGlvbiI+TWlncmF0aW9uCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhZ2UgSW5mbyI+UGFnZSBJbmZvCiAgICAgICAgICAg
ICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBoaXNoaW5nIFBy
b3RlY3Rpb24iPlBoaXNoaW5nIFByb3RlY3Rpb24KICAgICAgICAgICAgICAgIDwvb3B0aW9uPgog
ICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGxhY2VzIj5QbGFjZXMKICAgICAgICAgICAg
ICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUHJlZmVyZW5jZXMi
PlByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KCiAgICAgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJSU1MgRGlzY292ZXJ5IGFuZCBQcmV2aWV3Ij5SU1MgRGlzY292ZXJ5IGFu
ZCBQcmV2aWV3CiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9IlNlYXJjaCI+U2VhcmNoCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlY3VyaXR5Ij5TZWN1cml0eQogICAgICAgICAgICAg
ICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTZXNzaW9uIFJlc3Rv
cmUiPlNlc3Npb24gUmVzdG9yZQogICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAg
ICAgICA8b3B0aW9uIHZhbHVlPSJTaGVsbCBJbnRlZ3JhdGlvbiI+U2hlbGwgSW50ZWdyYXRpb24K
ICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
VGFiYmVkIEJyb3dzZXIiPlRhYmJlZCBCcm93c2VyCiAgICAgICAgICAgICAgICA8L29wdGlvbj4K
CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGVtZSI+VGhlbWUKICAgICAgICAgICAg
ICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9vbGJhcnMiPlRv
b2xiYXJzCiAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgPC9zZWxlY3Q+CiAg
PC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87671</attachid>
            <date>2011-03-30 23:45:13 -0700</date>
            <delta_ts>2011-04-02 23:33:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110328041240.patch</filename>
            <type>text/plain</type>
            <size>33736</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIxOTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NjZiZGFlZGYwYjk3MTBiOTYwZWQz
OGE2MTdiM2ZjMzVkOTgwMmJmLi42ZmJiNjZiOWQ1MjU2YWNiZTRjNWZlMGFlZTFlNTNkOGNhMjQy
YmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMjggIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0yOCAg
WXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LiBDbGVhbiB1cCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgcGx1Z2lucy9lbWJlZC1w
cmVmZXJzLXBsdWdpbnMtZm9yLWltYWdlcy5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOTMzOWY2
MDFlMThjNzdjYTdhYjIzNmE3MDgyNWQyYTU2ZjRmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMDAgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBIb21lL0VuZC9QYWdlVXAvUGFn
ZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVjdD4gZWxlbWVudHMuIFNpbmNlIGl0
IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdpbGwgbm90IHJ1biBzb2xvIGluIHRo
ZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBydW4td2Via2l0LXRlc3RzLgorCisg
IAorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgMCwgMykgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgMSwgNCkg
aXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgMiwg
NSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwg
MywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3du
IiwgNCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VE
b3duIiwgNSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBh
Z2VEb3duIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwg
InBhZ2VVcCIsIDYsIDMpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJwYWdlVXAiLCA1LCAyKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAicGFnZVVwIiwgNCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNz
IiwgInBhZ2VVcCIsIDMsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJz
cyIsICJwYWdlVXAiLCAyLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAicGFnZVVwIiwgMSwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
InNzIiwgInBhZ2VVcCIsIDAsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJob21lIiwgNiwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
InNzIiwgImhvbWUiLCA1LCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAiaG9tZSIsIDQsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJz
cyIsICJob21lIiwgMywgMCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNz
IiwgImhvbWUiLCAyLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAiaG9tZSIsIDEsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJob21lIiwgMCwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwg
ImVuZCIsIDYsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJl
bmQiLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5k
IiwgNCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIs
IDMsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAy
LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMSwg
NikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDAsIDYp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAx
LCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3du
IiwgMiwgNSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdl
RG93biIsIDQsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAi
cGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Nk
IiwgInBhZ2VEb3duIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
InNzZCIsICJwYWdlVXAiLCA2LCAyKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3NkIiwgInBhZ2VVcCIsIDUsIDIpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJwYWdlVXAiLCAyLCAxKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDEsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDcsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDYsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDUsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDQsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDMsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDIsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDEsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiaG9tZSIsIDAsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgNywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzZCIsICJlbmQiLCA2LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgImVuZCIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAiZW5kIiwgNCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJlbmQiLCAzLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3NkIiwgImVuZCIsIDIsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2QiLCAiZW5kIiwgMSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJlbmQiLCAwLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFT
UyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMCwg
MSwgMiwgMywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKSBpcyB0cnVl
CitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBb
MCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VVcCIsIFswXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMCwgMSwgMiwgMywgNCwgNSwg
Nl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
ImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswXSkgaXMgdHJ1ZQorUEFTUyBzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswXSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBb
MywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbM10pIGlzIHRydWUKK1BB
U1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAx
LCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUK
K1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFszLCA0
LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzAsIDEsIDIs
IDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAicGFnZURvd24iLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0LCA1LCA2XSkgaXMgdHJ1
ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3du
IiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBl
Y3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzEsIDJdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzFdKSBpcyB0cnVlCitQ
QVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzFd
KSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAi
ZW5kIiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzc2QiLCAiZW5kIiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkgaXMg
dHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImhvbWUi
LCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlRG93biIsIFs0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzQsIDUsIDZdKSBpcyB0cnVlCitQ
QVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzIs
IDRdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAicGFnZVVwIiwgWzEsIDIsIDRdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzEsIDIsIDRdKSBpcyB0cnVlCitQQVNTIHNl
bmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiZW5kIiwgWzQsIDUsIDZdKSBp
cyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiZW5k
IiwgWzQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRp
Y2VzKCJzc2QiLCAiaG9tZSIsIFsxLCAyLCA0XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImhvbWUiLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTQ4MzMx
ZDMxYTVkOWJkN2E5YTAzMmRlY2E0ZWI4Y2ZmZTk2YWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDI2NSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIEhvbWUvRW5kL1BhZ2VVcC9QYWdlRG93
biBrZXlzIHdvcmsgY29ycmVjdGx5IGZvciAmbHQ7c2VsZWN0Jmd0OyBlbGVtZW50cy4KK1NpbmNl
IGl0IHJlcXVpcmVzIDxDT0RFPmV2ZW50U2VuZGVyLmtleURvd248L0NPREU+LCBpdCB3aWxsIG5v
dCBydW4gc29sbyBpbiB0aGUgd2ViIGJyb3dzZXI7IGl0IG11c3QgYmUgcnVuIHdpdGggPEtCRD5y
dW4td2Via2l0LXRlc3RzPC9LQkQ+LjwvcD4KKzxocj4KKzxmb3JtPgorICAgICA8IS0tIFdlIHNw
ZWNpZnkgYSBzaXplIG9mIDMgYnV0IHdpbGwgZW5kIHVwIHJlbmRlcmluZyB3aXRoIDQgYmVjYXVz
ZSB3ZWJraXQgaW1wb3NlcyBhIG1pbmltdW0gc2l6ZSBvZiA0LgorICAgICBJdCBpcyBpbXBvcnRh
bnQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGhhbmRsZXMgdGhpcyBjYXNlICAtLT4KKyAgICA8c2Vs
ZWN0IG5hbWU9InNpbmdsZXNlbGVjdCIgaWQ9InNzIiBzaXplPSIzIiBtdWx0aXBsZT0idHJ1ZSI+
CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiPjAgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRp
b24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiPjMgPC9vcHRpb24+CisgICAgICAgIDxvcHRp
b24gdmFsdWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjUiPjUgPC9v
cHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgPC9zZWxl
Y3Q+CisgICAgPHNlbGVjdCBuYW1lPSJzaW5nbGVzZWxlY3R3aXRoZGlzYWJsZWQiIGlkPSJzc2Qi
IHNpemU9IjQiIG11bHRpcGxlPSJmYWxzZSI+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiIGRp
c2FibGVkPSJ0cnVlIj4wIDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4xIDwv
b3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIj4yIDwvb3B0aW9uPgorICAgICAgICA8
b3B0aW9uIHZhbHVlPSIzIiBkaXNhYmxlZD0idHJ1ZSI+MyA8L29wdGlvbj4KKyAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNSI+NSA8
L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8L29wdGlvbj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iNyIgZGlzYWJsZWQgPSAidHJ1ZSI+NyA8L29wdGlvbj4KKyAgICA8L3Nl
bGVjdD4KKzwvZm9ybT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7Cit9CisKK2Z1
bmN0aW9uIHNlbmRLZXlBbmRFeHBlY3RJbmRleChzZWxlY3RJZCwga2V5LCBpbml0aWFsSW5kZXgs
IGV4cGVjdGVkSW5kZXgpIHsKKyAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoc2VsZWN0SWQpOworICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCk7CisgICAgc2VsZWN0LmZv
Y3VzKCk7CisgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSBpbml0aWFsSW5kZXg7CisgICAgaWYg
KHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGluaXRpYWxJbmRleCkgeworICAgICAgICBsb2coImNh
bid0IHNldCBzZWxlY3RlZEluZGV4IHRvICIgKyBpbml0aWFsSW5kZXggKyAnIChpcyAnICsgc2Vs
ZWN0LnNlbGVjdGVkSW5kZXggKyAnKScpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oa2V5KTsKKyAgICBpZiAoc2VsZWN0LnNlbGVjdGVkSW5kZXggIT0gZXhwZWN0ZWRJ
bmRleCkgeworICAgICAgICBsb2coJ3NlbGVjdGVkSW5kZXggc2hvdWxkIGJlICcgKyBleHBlY3Rl
ZEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5zZWxlY3RlZEluZGV4ICsgJykgYWZ0ZXIgYSAnICsg
a2V5ICsgJyBmcm9tIGluZGV4ICcgKyBpbml0aWFsSW5kZXgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBlcXVhbEFycmF5cyhh
MSwgYTIpIHsKKyAgICBpZiAoYTEubGVuZ3RoICE9IGEyLmxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGZvciAoaSA9IDA7IGkgPCBhMS5sZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAoYTFbaV0gIT0gYTJbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBkdW1wQXJyYXkoYSkgeworICAgIHMgPSAiWyI7
CisgICAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcyA9IHMgKyBh
W2ldOworICAgICAgICBpZiAoaSA8IGEubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICBzID0gcyAr
ICIsICI7CisgICAgfQorICAgIHJldHVybiBzICsgIl0iOworfQorCitmdW5jdGlvbiBnZXRTZWxl
Y3RlZEluZGljZXMoc2VsZWN0KSB7CisgICAgbm93U2VsZWN0ZWQgPSBbXTsKKyAgICBmb3IgKGkg
PSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAgICAgIGlmIChzZWxlY3Qu
b3B0aW9uc1tpXS5zZWxlY3RlZCkKKyAgICAgICAgICAgICAgbm93U2VsZWN0ZWQucHVzaChpKTsK
KyAgICByZXR1cm4gbm93U2VsZWN0ZWQ7Cit9CisKK2Z1bmN0aW9uIGNsZWFyU2VsZWN0aW9uKHNl
bGVjdCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGkrKykK
KyAgICAgICAgc2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBmYWxzZTsKK30KKworLy8gZXhw
ZWN0ZWRJbmRpY2VzIHNob3VsZCBiZSBpbiBzb3J0ZWQgb3JkZXIKK2Z1bmN0aW9uIHNlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKHNlbGVjdElkLCBrZXksIGV4cGVjdGVkSW5kaWNlcykg
eworICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RJZCk7Cisg
ICAgc2VsZWN0LmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIFsic2hpZnRLZXkiXSk7CisgICAgbm93
U2VsZWN0ZWQgPSBnZXRTZWxlY3RlZEluZGljZXMoc2VsZWN0KTsKKyAgICBpZiAoIWVxdWFsQXJy
YXlzKG5vd1NlbGVjdGVkLCBleHBlY3RlZEluZGljZXMpKSB7CisgICAgICAgIGxvZygnc2VsZWN0
ZWQgaW5kaWNlcyBzaG91bGQgYmUgJyArIGR1bXBBcnJheShleHBlY3RlZEluZGljZXMpICsgJyAo
aXMgJyArCisgICAgICAgICAgICBkdW1wQXJyYXkobm93U2VsZWN0ZWQpICsgJykgYWZ0ZXIgYSAn
ICsga2V5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZnVuY3Rpb24gdGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNo
b3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgMCwgMyknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VE
b3duIiwgMSwgNCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzIiwgInBhZ2VEb3duIiwgMiwgNSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgMywgNiknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgNCwgNikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBh
Z2VEb3duIiwgNSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzIiwgInBhZ2VEb3duIiwgNiwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0
ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDYsIDMpJywgJ3RydWUnKTsKKyAgICBzaG91bGRC
ZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCA1LCAyKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNCwg
MSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwg
InBhZ2VVcCIsIDMsIDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJwYWdlVXAiLCAyLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMSwgMCknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDAsIDApJywg
J3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdEhvbWVOb0Rpc2FibGVkRWxlbWVudHMoKSB7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDYsIDApJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21l
IiwgNSwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
InNzIiwgImhvbWUiLCA0LCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDMsIDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMiwgMCknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAxLCAwKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIs
IDAsIDApJywgJ3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50
cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCA2
LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAiZW5kIiwgNSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzIiwgImVuZCIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtl
eUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAzLCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMiwgNiknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDEsIDYpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQi
LCAwLCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhEaXNhYmxl
ZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIs
ICJwYWdlRG93biIsIDEsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAyLCA1KScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgNCwgNiknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93
biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzc2QiLCAicGFnZURvd24iLCA2LCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQ
YWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNiwgMiknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA1LCAyKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDQs
IDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2Qi
LCAicGFnZVVwIiwgMiwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAxLCAxKScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RIb21lV2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlB
bmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCA3LCAxKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCA2LCAxKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCA1LCAx
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
ImhvbWUiLCA0LCAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3NkIiwgImhvbWUiLCAzLCAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCAyLCAxKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCAxLCAxKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImhvbWUiLCAw
LCAxKScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmRXaXRoRGlzYWJsZWRFbGVtZW50
cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwg
NywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNz
ZCIsICJlbmQiLCA2LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgImVuZCIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgNCwgNiknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAzLCA2KScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDIs
IDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2Qi
LCAiZW5kIiwgMSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJlbmQiLCAwLCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RW
YXJpb3VzU2hpZnRLZXlzTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHZhciBzZWxlY3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3MiKTsKKyAgICBzZWxlY3QuZm9jdXMoKTsKKyAgICBj
bGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMDsKKwor
ICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFn
ZURvd24iLCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzAsIDEsIDIsIDMsIDQs
IDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBl
Y3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3Mi
LCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRX
aXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMF0pJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
InBhZ2VVcCIsIFswXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJlbmQiLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRC
ZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgImhvbWUiLCBbMF0pJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMo
InNzIiwgImhvbWUiLCBbMF0pJywgJ3RydWUnKTsKKworICAgIGNsZWFyU2VsZWN0aW9uKHNlbGVj
dCk7CisgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSAzOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMywgNCwgNSwgNl0p
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbM10p
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEs
IDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBl
Y3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFsz
LCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwg
WzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RWYXJpb3VzU2hpZnRLZXlzV2l0aERpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzc2QnKTsKKyAgICBz
ZWxlY3QuZm9jdXMoKTsKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5z
ZWxlY3RlZEluZGV4ID0gMTsKKworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhw
ZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzEsIDIsIDRdKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURv
d24iLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0LCA1LCA2
XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5k
aWNlcygic3NkIiwgInBhZ2VVcCIsIFsxLCAyXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsxXSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgInBhZ2VVcCIsIFsxXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNo
aWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIsIFsxLCAyLCA0LCA1LCA2XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgImVuZCIsIFsxLCAyLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImhvbWUiLCBbMV0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJob21lIiwgWzFdKScsICd0cnVlJyk7CisKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gNDsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFs0LCA1LCA2XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgInBhZ2VEb3duIiwgWzQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzIsIDRdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzc2QiLCAicGFnZVVwIiwgWzEsIDIsIDRdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZVVwIiwgWzEsIDIsIDRd
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRp
Y2VzKCJzc2QiLCAiZW5kIiwgWzQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiZW5kIiwgWzQsIDUsIDZdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzc2QiLCAiaG9tZSIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImhvbWUiLCBbMSwgMiwgNF0pJywg
J3RydWUnKTsKK30KKwordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0UGFn
ZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpOwor
dGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aERpc2FibGVkRWxl
bWVudHMoKTsKK3Rlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEhvbWVXaXRo
RGlzYWJsZWRFbGVtZW50cygpOwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0
VmFyaW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFZhcmlvdXNTaGlmdEtl
eXNXaXRoRGlzYWJsZWRFbGVtZW50cygpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4gCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDkyYmViMTE2NTMyYmUxOWM0YjVhMWE4YWQ1NTU0NGFhZjU1ZjBmYS4uNTJhNmU1ZGIwM2I4ZThm
OTM3M2Y3NGY0NjdmNGUwMjMwYzRiMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDExLTAzLTI4ICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYmtpdCBpZ25vcmVz
IFBnVXAvUGdEb3duL0hvbWUvRW5kIGluIFNFTEVDVCB0YWcgb2JqZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTgKKworICAgICAgICBUZXN0
OiBmYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBkb20vU2VsZWN0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0VmFsaWRJbmRleCk6IE1vdmVkIGZy
b20gZWxzZXdoZXJlIGluIHRoZSBmaWxlIHRvIGJlIHVzZWQgYnkgb3RoZXIgcm91dGluZXMuCisg
ICAgICAgIChXZWJDb3JlOjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KTogUmV0dXJu
cyBhIHNlbGVjdGFibGUgaW5kZXggb25lIHBhZ2UgYXdheSBmcm9tIHRoZSBnaXZlbiBpbmRleC4K
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4
KTogSW1wbGVtZW50ZWQgd2l0aCBuZXh0VmFsaWRJbmRleC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdEVsZW1lbnQ6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGZpcnN0
IHNlbGVjdGFibGUgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50OjpsYXN0
U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGxhc3Qgc2VsZWN0YWJsZSBpbmRleC4K
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJ
bmRleCk6IEltcGxlbWVudGVkIHdpdGggbmV4dFZhbGlkSW5kZXguCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOiBDb252ZXJ0ZWQg
ZnJvbSBDIGNhc3QgdG8gQysrIGNhc3QuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50
OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6IEFkZHMgc3VwcG9ydCBmb3IgUGFnZVVwL1Bh
Z2VEb3duL0hvbWUvRW5kIHdpdGggYm90aCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdGlvbi4K
KworICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RFbGVtZW50OjopOiBEZWNsYXJlcyBuZXcgbWV0aG9kcyBhYm92ZS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6IE1ha2VzIFJlbmRlckxpc3RCb3g6OnNpemUgcHVibGlj
IHNvIHRoYXQgUGFnZVVwL1BhZ2VEb3duIGJlaGF2aW9yIGNhbiB1c2UgdGhlIGFjdHVhbCBsaXN0
IHNpemUgcmF0aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gSFRNTC4KKyAgICAgICAgVGhleSBj
YW4gZGlmZmVyIGR1ZSB0byB0aGUgbWluaW11bSBzaXplIGltcG9zZWQgYnkgUmVuZGVyTGlzdEJv
eC4KKwogMjAxMS0wMy0yOCAgVGhvbWFzIEtsYXVzbmVyICA8dGtAZ2lnYS5vci5hdD4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50
LmNwcAppbmRleCAxNWM2OWFkYzY0NjVhZjMyYTE3MjY5ZGEyY2QwM2ZhYjBlZmY3OTZjLi43MDUy
MzY5YmYzOWU4Y2FmOWNkNzJjZTZjMDNkZTJlMTFlMzg0OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdEVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw1MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFkVGltZW91dCA9IDEwMDA7CiAKK2Vu
dW0gU2tpcERpcmVjdGlvbiB7CisgICAgU2tpcEJhY2t3YXJkcyA9IC0xLAorICAgIFNraXBGb3J3
YXJkcyA9IDEKK307CisKKy8vIFJldHVybnMgdGhlIGNsb3Nlc3QgdmFsaWQgaW5kZXggZmFyIHxz
a2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KKy8v
IElmIHdlIGNhbm5vdCBmaW5kIHRoZSB2YWxpZCBpbmRleCBmYXIgfHNraXB8IGl0ZW1zLCByZXR1
cm5zIHRoZSBtb3N0IGZhciB2YWxpZCBpbmRleC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgo
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGly
ZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCit7CisgICAgaW50IGxhc3RHb29kSW5kZXggPSBs
aXN0SW5kZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOworICAgIGZvciAobGlz
dEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsg
bGlzdEluZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAtLXNraXA7CisgICAgICAgIGlmICgh
bGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVtZW50KGxpc3RJ
dGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRl
eDsKKyAgICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29kSW5kZXg7Cit9CisKKy8vIFJldHVy
bnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGl0ZW0gb25lIHBhZ2UgYXdheSBmcm9tIHxz
dGFydEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwuCitzdGF0aWMgaW50IG5leHRTZWxl
Y3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQq
IGVsZW1lbnQsIGludCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQp
OworICAgIC8vIENhbid0IHVzZSBkYXRhLT5zaXplKCkgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMg
YSBtaW5pbXVtIHNpemUuCisgICAgaW50IHBhZ2VTaXplID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGlz
dEJveCo+KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGls
bCBzaG93IGNvbnRleHQKKyAgICBpbnQgbGlzdFNpemUgPSBpdGVtcy5zaXplKCk7CisKKyAgICAv
LyBPbmUgcGFnZSBhd2F5LCBidXQgbm90IG91dHNpZGUgdmFsaWQgYm91bmRzLgorICAgIGludCBp
bmRleE9uZVBhZ2VBd2F5ID0gU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwg
ZWxlbWVudCwgbWF4KDAsIG1pbihsaXN0U2l6ZSAtIDEsIHN0YXJ0SW5kZXggKyBkaXJlY3Rpb24g
KiBwYWdlU2l6ZSkpKTsKKworICAgIC8vIFRyeSBvbmUgYmVsb3cgdGhlIGRlc2lyZWQgaW5kZXgg
c28gdGhhdCBpbmRleE9uZVBhZ2VBd2F5IGlzIHRoZSBmaXJzdCBpbmRleCB0byBiZSB0ZXN0ZWQu
CisgICAgLy8gSXQgbWVhbnMgd2UgdHJ5IHRvIGZpbmQgdGhlIGluZGV4IGluIChzdGFydEluZGV4
ICsgcGFnZSAqIGRpcmVjdGlvbiwgZGlyZWN0aW9uID09IFNraXBGb3J3YXJkID8gTUFYSU5UIDog
MF0uCisgICAgaW50IGluZGV4ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGluZGV4T25lUGFnZUF3
YXkgKyAoZGlyZWN0aW9uID09IFNraXBGb3J3YXJkcyA/IC0xIDogMSksIGRpcmVjdGlvbiwgMSk7
CisKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGxpc3RTaXplIHx8ICFpc09wdGlvbkVs
ZW1lbnQoaXRlbXNbaW5kZXhdKSB8fCBpdGVtc1tpbmRleF0tPmRpc2FibGVkKCkpIHsKKyAgICAg
ICAgLy8gQ291bGRuJ3QgZmluZCB2YWxpZCBpbmRleCBpbiB0aGF0IGRpcmVjdGlvbjsgZ28gYmFj
ayB0aGUgb3RoZXIgd2F5LgorICAgICAgICBpbmRleCA9IG5leHRWYWxpZEluZGV4KGl0ZW1zLCBp
bmRleE9uZVBhZ2VBd2F5LCBkaXJlY3Rpb24gPT0gU2tpcEZvcndhcmRzID8gU2tpcEJhY2t3YXJk
cyA6IFNraXBGb3J3YXJkcywgMSk7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gbGlzdFNpemUpCisgICAgICAgIHJldHVybiBzdGFydEluZGV4OworICAgIHJldHVybiBpbmRl
eDsKK30KKwogdm9pZCBTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFkYXRhLnVzZXNNZW51TGlz
dCgpKTsKQEAgLTEwNywyMSArMTUzLDM2IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RT
ZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiBpbnQg
U2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQogewogICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAgaW50
IGluZGV4ID0gc3RhcnRJbmRleCArIDE7Ci0gICAgd2hpbGUgKGluZGV4ID49IDAgJiYgKHVuc2ln
bmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAmJiAoIWlzT3B0aW9uRWxlbWVudChpdGVtc1tpbmRl
eF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJsZWQoKSkpCisgICAgcmV0dXJuIG5leHRWYWxpZElu
ZGV4KGl0ZW1zLCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOworfQorCitpbnQgU2VsZWN0
RWxlbWVudDo6Zmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRh
LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0gMDsKKyAgICB3aGls
ZSAoaW5kZXggPj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDwgaXRlbXMuc2l6
ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5k
aXNhYmxlZCgpKSkKICAgICAgICAgKytpbmRleDsKLSAgICBpZiAoKHVuc2lnbmVkKSBpbmRleCA9
PSBpdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OworICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID09IGl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IC0xOwogICAgIHJldHVybiBpbmRleDsKIH0KIAoraW50IFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxl
Y3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50
KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMo
ZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0gaXRlbXMuc2l6ZSgpIC0gMTsKKyAgICAgd2hpbGUg
KGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8IGl0ZW1zLnNpemUo
KSAmJiAoIWlzT3B0aW9uRWxlbWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlz
YWJsZWQoKSkpCisgICAgICAgICAtLWluZGV4OworICAgICByZXR1cm4gaW5kZXg7Cit9CisKIGlu
dCBTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQogewogICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CiAg
ICAgaWYgKHN0YXJ0SW5kZXggPT0gLTEpCiAgICAgICAgIHN0YXJ0SW5kZXggPSBpdGVtcy5zaXpl
KCk7CiAgICAgaW50IGluZGV4ID0gc3RhcnRJbmRleCAtIDE7Ci0gICAgd2hpbGUgKGluZGV4ID49
IDAgJiYgKHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAmJiAoIWlzT3B0aW9uRWxlbWVu
dChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJsZWQoKSkpCisgICAgd2hpbGUg
KGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8IGl0ZW1zLnNpemUo
KSAmJiAoIWlzT3B0aW9uRWxlbWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlz
YWJsZWQoKSkpCiAgICAgICAgIC0taW5kZXg7CiAgICAgaWYgKGluZGV4ID09IC0xKQogICAgICAg
ICByZXR1cm4gc3RhcnRJbmRleDsKQEAgLTUxNSwyNyArNTc2LDYgQEAgdm9pZCBTZWxlY3RFbGVt
ZW50OjpyZXNldChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKICAg
ICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAgZWxlbWVu
dC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQotICAgIAotZW51bSBTa2lwRGlyZWN0aW9uIHsK
LSAgICBTa2lwQmFja3dhcmRzID0gLTEsCi0gICAgU2tpcEZvcndhcmRzID0gMQotfTsKLQotLy8g
UmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQgdmFsaWQgbGlzdCBpdGVtIHxza2lwfCBpdGVt
cyBwYXN0IHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KLXN0YXRpYyBpbnQg
bmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlz
dEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCi17Ci0gICAgaW50IGxh
c3RHb29kSW5kZXggPSBsaXN0SW5kZXg7Ci0gICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgp
OwotICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlz
dEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgewotICAgICAgICAtLXNraXA7
Ci0gICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRp
b25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgewotICAgICAgICAgICAgbGFzdEdvb2RJ
bmRleCA9IGxpc3RJbmRleDsKLSAgICAgICAgICAgIGlmIChza2lwIDw9IDApCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxhc3RHb29kSW5kZXg7
Ci19CiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBFdmVudCogZXZlbnQsIEhU
TUxGb3JtRWxlbWVudCogaHRtbEZvcm0pCiB7CkBAIC01OTQsOCArNjM0LDggQEAgdm9pZCBTZWxl
Y3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQKICAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxp
c3RJdGVtcywgbGlzdEl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgMSk7CiAgICAgICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRs
ZWQgJiYgbGlzdEluZGV4ID49IDAgJiYgKHVuc2lnbmVkKWxpc3RJbmRleCA8IGxpc3RJdGVtcy5z
aXplKCkpCisKKyAgICAgICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGxpc3RJbmRleCkgPCBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICAg
ICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRh
LCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKIAogICAgICAgICBpZiAoaGFuZGxlZCkKQEAgLTc2Nywy
NiArODA3LDM4IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRs
ZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqCiAgICAgICAgICAgICAgICAgZW5k
SW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBsYXN0U2VsZWN0
ZWRMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCkpOwogICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRl
bnRpZmllciA9PSAiVXAiKQogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlvdXNTZWxl
Y3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIG9wdGlvblRvTGlzdEluZGV4KGRhdGEsIGVs
ZW1lbnQsIHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCkpKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikKKyAgICAgICAgICAgICAgICBlbmRJbmRl
eCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgbGFzdFNl
bGVjdGVkTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpLCBTa2lwRm9yd2FyZHMpOworICAgICAgICAg
ICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikKKyAgICAgICAgICAgICAgICBl
bmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwg
c2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSwgU2tpcEJhY2t3YXJkcyk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBpbmRleCBiYXNlZCBvbiB0aGUgY3Vy
cmVudCBlbmQgaW5kZXgKICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikK
ICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEs
IGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7CiAgICAgICAgICAgICBl
bHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXgg
PSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVT
ZWxlY3Rpb25FbmRJbmRleCgpKTsgICAgCisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2
aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rp
b25FbmRJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBh
Z2VEb3duIikKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdElu
ZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgp
LCBTa2lwRm9yd2FyZHMpOworICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAi
UGFnZVVwIikKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdElu
ZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgp
LCBTa2lwQmFja3dhcmRzKTsKICAgICAgICAgfQorICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9
PSAiSG9tZSIpCisgICAgICAgICAgICBlbmRJbmRleCA9IGZpcnN0U2VsZWN0YWJsZUxpc3RJbmRl
eChkYXRhLCBlbGVtZW50KTsKKyAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5k
IikKKyAgICAgICAgICAgIGVuZEluZGV4ID0gbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwg
ZWxlbWVudCk7CiAKICAgICAgICAgaWYgKGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1l
bnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNl
bGVjdGlvbiBtb3ZlcyB0byB0aGUgYm91bmRhcnkuCiAgICAgICAgICAgICBpZiAoa2V5SWRlbnRp
ZmllciA9PSAiTGVmdCIgfHwga2V5SWRlbnRpZmllciA9PSAiUmlnaHQiIHx8ICgoa2V5SWRlbnRp
ZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRpZmllciA9PSAiVXAiKSAmJiBlbmRJbmRleCA9PSBk
YXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIgfHwga2V5SWRlbnRpZmllciA9
PSAiVXAiKSB7CisgICAgICAgIGlmIChlbmRJbmRleCA+PSAwICYmIChrZXlJZGVudGlmaWVyID09
ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJVcCIgfHwga2V5SWRlbnRpZmllciA9PSAiSG9t
ZSIgfHwgIGtleUlkZW50aWZpZXIgPT0gIkVuZCIgfHwga2V5SWRlbnRpZmllciA9PSAiUGFnZURv
d24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpKSB7CiAgICAgICAgICAgICAvLyBTYXZl
IHRoZSBzZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9u
IHdoZW4gZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcg
dGhlIG5ldyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbihkYXRhLCBl
bGVtZW50KTsKIAotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRl
bXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmICh1bnNpZ25lZCkgZW5kSW5kZXggPCBsaXN0
SXRlbXMuc2l6ZSgpKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3RJdGVtcywgIWxp
c3RJdGVtcy5zaXplKCkgfHwgKGVuZEluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGVuZEluZGV4KSA8IGxpc3RJdGVtcy5zaXplKCkpKTsKICAgICAgICAgICAgIHNldEFjdGl2ZVNl
bGVjdGlvbkVuZEluZGV4KGRhdGEsIGVuZEluZGV4KTsKLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBib29sIHNlbGVjdE5ld0l0ZW0gPSAhZGF0YS5tdWx0aXBsZSgpIHx8IHN0YXRpY19jYXN0
PEtleWJvYXJkRXZlbnQqPihldmVudCktPnNoaWZ0S2V5KCkgfHwgIWlzU3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkKGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpOwogICAgICAgICAgICAgaWYg
KHNlbGVjdE5ld0l0ZW0pCiAgICAgICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25T
dGF0ZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCmluZGV4IDIyMmExYmJjMWMy
YTBjOWZhNjQ3OWZiMWRjMjIwYzFkNWJjNGNiNTMuLmY1MTUxZjFkMjk2ZmExZGRlZjY5YTA4ZGE3
ZWQ4YjdmYWQ5ODIyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNjUsNiAr
NjUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmFsaWRpdHkoKSA9IDA7
CiAKKyAgICBzdGF0aWMgaW50IG9wdGlvblRvTGlzdEluZGV4KGNvbnN0IFNlbGVjdEVsZW1lbnRE
YXRhJiwgY29uc3QgRWxlbWVudCosIGludCBvcHRpb25JbmRleCk7CisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5TZWxlY3RFbGVtZW50KCkgeyB9CiAKQEAgLTczLDYgKzc1LDggQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIHNlbGVjdEFsbChTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1l
bnQqKTsKICAgICBzdGF0aWMgdm9pZCBzYXZlTGFzdFNlbGVjdGlvbihTZWxlY3RFbGVtZW50RGF0
YSYsIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgaW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KFNl
bGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBzdGFydEluZGV4KTsKKyAgICBzdGF0aWMg
aW50IGZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQq
KTsKKyAgICBzdGF0aWMgaW50IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnRE
YXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyBpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdElu
ZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBzdGFydEluZGV4KTsKICAgICBz
dGF0aWMgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChTZWxlY3RFbGVtZW50RGF0
YSYsIEVsZW1lbnQqLCBpbnQgaW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHNldEFjdGl2ZVNlbGVj
dGlvbkVuZEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgaW50IGluZGV4KTsKQEAgLTg0LDcgKzg4
LDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHJlY2FsY0xpc3RJdGVtcyhTZWxlY3RF
bGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqLCBib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzID0g
dHJ1ZSk7CiAgICAgc3RhdGljIGludCBzZWxlY3RlZEluZGV4KGNvbnN0IFNlbGVjdEVsZW1lbnRE
YXRhJiwgY29uc3QgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNldFNlbGVjdGVkSW5kZXgo
U2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2Vs
ZWN0ID0gdHJ1ZSwgYm9vbCBmaXJlT25DaGFuZ2VOb3cgPSBmYWxzZSwgYm9vbCB1c2VyRHJpdmVu
Q2hhbmdlID0gdHJ1ZSk7Ci0gICAgc3RhdGljIGludCBvcHRpb25Ub0xpc3RJbmRleChjb25zdCBT
ZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqLCBpbnQgb3B0aW9uSW5kZXgpOwogICAg
IHN0YXRpYyBpbnQgbGlzdFRvT3B0aW9uSW5kZXgoY29uc3QgU2VsZWN0RWxlbWVudERhdGEmLCBj
b25zdCBFbGVtZW50KiwgaW50IGxpc3RJbmRleCk7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hG
b2N1c0V2ZW50KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQmx1ckV2ZW50KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMGUyY2ZkNjhiMzhmNjA3MDcy
YThmMWQyM2NmMzQxNDU5ZWU3ZjcyNi4uNjEwZjU1ZTg4ZWRmZDIwNjg4MTVjZGJlNjJjNzFmNTI1
N2IwZmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC01
Myw2ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIGludCBzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9p
bnQmKTsgLy8gUmV0dXJucyB0aGUgbmV3IGluZGV4IG9yIC0xIGlmIG5vIHNjcm9sbCBvY2N1cnJl
ZAogCisgICAgaW50IHNpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KIApA
QCAtMTI1LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgaW50IGl0ZW1IZWlnaHQoKSBj
b25zdDsKICAgICB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgpOwotICAgIGlu
dCBzaXplKCkgY29uc3Q7CiAgICAgaW50IG51bVZpc2libGVJdGVtcygpIGNvbnN0OwogICAgIGlu
dCBudW1JdGVtcygpIGNvbnN0OwogICAgIGludCBsaXN0SGVpZ2h0KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87998</attachid>
            <date>2011-04-02 23:33:30 -0700</date>
            <delta_ts>2011-04-04 18:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110402233328.patch</filename>
            <type>text/plain</type>
            <size>36124</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ3NGYwZDJjN2U2YzdlY2QxMTY1
M2M3ZTNlNDVkZDY5OTM1MjkwLi5iN2Y0ZGVlZGMwMTMxMTEyOWIwOTk4OWViZGI3MDMxMGRmNWVi
M2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZGluZyBmYXN0L2RvbS9I
VE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbCB0byBtYWMtd2syIFNraXBwZWQgbGlzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkZTUwYWJkMDhlNWZmN2I2NWUzZjNjNTQyYzEzMGIwNDFlMzVhMDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTQgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVj
dD4gZWxlbWVudHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdp
bGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBy
dW4td2Via2l0LXRlc3RzLgorCisgICAgCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAicGFnZURvd24iLCAwLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZURvd24iLCAyLCA1KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAicGFnZURvd24iLCAzLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3MiLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA2LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNiwgMykgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDUsIDIpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCA0LCAxKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMywgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDIsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAxLCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMCwgMCkgaXMgdHJ1ZQorUEFT
UyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgNCwgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAiZW5kIiwgMCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJwYWdlRG93biIsIDEsIDQpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAyLCA1KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgNCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA2LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDYsIDIpIGlzIHRydWUKK1BB
U1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNSwgMikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA0LCAxKSBpcyB0cnVl
CitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDIsIDEpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgMSwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNywgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNiwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNSwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNCwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMywgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMiwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMSwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMCwgMSkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCA3LCA2KSBpcyB0
cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDYsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgNSwgNikgaXMgdHJ1
ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCA0LCA2KSBpcyB0cnVl
CitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDMsIDYpIGlzIHRydWUK
K1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMiwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAxLCA2KSBpcyB0cnVlCitQ
QVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDAsIDYpIGlzIHRydWUKK1BB
U1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzAs
IDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMCwgMSwg
MiwgMywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdElu
ZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKSBpcyB0cnVlCitQ
QVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMF0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgImVu
ZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKSBpcyB0
cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwg
WzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIs
ICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRp
Y2VzKCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMywgNCwgNSwgNl0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBh
Z2VVcCIsIFszXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNl
cygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pIGlzIHRy
dWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIs
IFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5k
aWNlcygic3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywgNCwgNSwgNl0pIGlzIHRydWUK
K1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgImhvbWUiLCBbMCwg
MSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMo
InNzIiwgImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0XSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwg
WzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mg
c2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMl0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJw
YWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pIGlzIHRydWUKK1BB
U1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwg
NCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMo
InNzZCIsICJob21lIiwgWzFdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBl
Y3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzQsIDUsIDZdKSBpcyB0cnVl
CitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24i
LCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BB
U1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwg
MiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEsIDIsIDRdKSBpcyB0
cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIs
IFsxLCAyLCA0XSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJw
YWdlRG93biIsIDAsIDMpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ci
LCAicGFnZURvd24iLCAxLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3NnIiwgInBhZ2VEb3duIiwgMiwgNCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDMsIDUpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDYsIDYpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNiwgNCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA1LCAzKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDQsIDIpIGlzIHRydWUKK1BB
U1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMywgMSkgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAyLCAwKSBpcyB0cnVl
CitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDEsIDApIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMCwgMCkgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3MzZhOGQxMDc5MGY5Yjg3ZjAxZDFkZTY1MDJiY2RiNDg5YzhlNTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1sCkBAIC0wLDAg
KzEsMzAyIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9tZS9FbmQvUGFnZVVw
L1BhZ2VEb3duIGtleXMgd29yayBjb3JyZWN0bHkgZm9yICZsdDtzZWxlY3QmZ3Q7IGVsZW1lbnRz
LgorU2luY2UgaXQgcmVxdWlyZXMgPENPREU+ZXZlbnRTZW5kZXIua2V5RG93bjwvQ09ERT4sIGl0
IHdpbGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0
aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorPGhyPgorPGZvcm0+CisgICAgIDwh
LS0gV2Ugc3BlY2lmeSBhIHNpemUgb2YgMyBidXQgd2lsbCBlbmQgdXAgcmVuZGVyaW5nIHdpdGgg
NCBiZWNhdXNlIHdlYmtpdCBpbXBvc2VzIGEgbWluaW11bSBzaXplIG9mIDQuCisgICAgIEl0IGlz
IGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgaGFuZGxlcyB0aGlzIGNhc2UgIC0tPgor
ICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0IiBpZD0ic3MiIHNpemU9IjMiIG11bHRpcGxl
PSJ0cnVlIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlvbj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiI+
MiA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+MyA8L29wdGlvbj4KKyAgICAg
ICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0i
NSI+NSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8L29wdGlvbj4KKyAg
ICA8L3NlbGVjdD4KKyAgICA8c2VsZWN0IG5hbWU9InNpbmdsZXNlbGVjdHdpdGhkaXNhYmxlZCIg
aWQ9InNzZCIgc2l6ZT0iNCIgbXVsdGlwbGU9ImZhbHNlIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1
ZT0iMCIgZGlzYWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9
IjEiPjEgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRpb24+Cisg
ICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0cnVlIj4zIDwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVl
PSI1Ij41IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42IDwvb3B0aW9uPgor
ICAgICAgICA8b3B0aW9uIHZhbHVlPSI3IiBkaXNhYmxlZCA9ICJ0cnVlIj43IDwvb3B0aW9uPgor
ICAgIDwvc2VsZWN0PgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0d2l0aGdyb3VwIiBp
ZD0ic3NnIiBzaXplPSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICA8b3B0Z3JvdXAgbGFi
ZWw9ImdwMCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj4wIDwvb3B0aW9uPgorICAg
ICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9IjIiPjIgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAgIDxv
cHRncm91cCBsYWJlbD0iZ3AxIj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiPjMgPC9v
cHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQg
PC9vcHRpb24+CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AyIj4KKyAgICAgICAgICAgIDxv
cHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAg
IDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+Cis8L2Zvcm0+CisK
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2
IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworfQorCitmdW5jdGlvbiBzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlhbEluZGV4LCBleHBlY3RlZEluZGV4KSB7
CisgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdElkKTsKKyAg
ICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5mb2N1cygpOworICAgIHNlbGVj
dC5zZWxlY3RlZEluZGV4ID0gaW5pdGlhbEluZGV4OworICAgIGlmIChzZWxlY3Quc2VsZWN0ZWRJ
bmRleCAhPSBpbml0aWFsSW5kZXgpIHsKKyAgICAgICAgbG9nKCJjYW4ndCBzZXQgc2VsZWN0ZWRJ
bmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5zZWxlY3RlZEluZGV4
ICsgJyknKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSk7Cisg
ICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4cGVjdGVkSW5kZXgpIHsKKyAgICAgICAg
bG9nKCdzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAnICsgZXhwZWN0ZWRJbmRleCArICcgKGlzICcg
KyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpIGFmdGVyIGEgJyArIGtleSArICcgZnJvbSBpbmRl
eCAnICsgaW5pdGlhbEluZGV4KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXF1YWxBcnJheXMoYTEsIGEyKSB7CisgICAgaWYg
KGExLmxlbmd0aCAhPSBhMi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgYTEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGExW2ldICE9IGEyW2ld
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZnVuY3Rpb24gZHVtcEFycmF5KGEpIHsKKyAgICBzID0gIlsiOworICAgIGZvciAoaSA9IDA7
IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHMgPSBzICsgYVtpXTsKKyAgICAgICAgaWYg
KGkgPCBhLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgcyA9IHMgKyAiLCAiOworICAgIH0KKyAg
ICByZXR1cm4gcyArICJdIjsKK30KKworZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJbmRpY2VzKHNlbGVj
dCkgeworICAgIG5vd1NlbGVjdGVkID0gW107CisgICAgZm9yIChpID0gMDsgaSA8IHNlbGVjdC5v
cHRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoc2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0
ZWQpCisgICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAgcmV0dXJuIG5vd1Nl
bGVjdGVkOworfQorCitmdW5jdGlvbiBjbGVhclNlbGVjdGlvbihzZWxlY3QpIHsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAgICAgIHNlbGVjdC5v
cHRpb25zW2ldLnNlbGVjdGVkID0gZmFsc2U7Cit9CisKKy8vIGV4cGVjdGVkSW5kaWNlcyBzaG91
bGQgYmUgaW4gc29ydGVkIG9yZGVyCitmdW5jdGlvbiBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcyhzZWxlY3RJZCwga2V5LCBleHBlY3RlZEluZGljZXMpIHsKKyAgICB2YXIgc2VsZWN0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOworICAgIHNlbGVjdC5mb2N1cygp
OworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oa2V5LCBbInNoaWZ0S2V5Il0pOworICAgIG5vd1NlbGVjdGVkID0gZ2V0U2Vs
ZWN0ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgaWYgKCFlcXVhbEFycmF5cyhub3dTZWxlY3RlZCwg
ZXhwZWN0ZWRJbmRpY2VzKSkgeworICAgICAgICBsb2coJ3NlbGVjdGVkIGluZGljZXMgc2hvdWxk
IGJlICcgKyBkdW1wQXJyYXkoZXhwZWN0ZWRJbmRpY2VzKSArICcgKGlzICcgKworICAgICAgICAg
ICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcpIGFmdGVyIGEgJyArIGtleSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRl
c3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDAsIDMpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDEsIDQpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93
biIsIDIsIDUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJwYWdlRG93biIsIDMsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtl
eUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDUsIDYpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdl
RG93biIsIDYsIDYpJywgJ3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdFBhZ2VVcE5vRGlzYWJs
ZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJwYWdlVXAiLCA2LCAzKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3MiLCAicGFnZVVwIiwgNSwgMiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDQsIDEpJywgJ3RydWUnKTsKKyAg
ICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAzLCAwKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFn
ZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzIiwgInBhZ2VVcCIsIDEsIDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtl
eUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAwLCAwKScsICd0cnVlJyk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUsIDApJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgNCwg
MCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwg
ImhvbWUiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAiaG9tZSIsIDIsIDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtl
eUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAwKScsICd0cnVlJyk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMoKSB7CisgICAgc2hvdWxk
QmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNiknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDUsIDYpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQi
LCA0LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMCwgNiknLCAndHJ1ZScp
OworfQorCitmdW5jdGlvbiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVtZW50cygpIHsKKyAg
ICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAxLCA0
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
InBhZ2VEb3duIiwgMiwgNSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRC
ZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA1LCA2KScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3du
IiwgNiwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0UGFnZVVwV2l0aERpc2FibGVk
RWxlbWVudHMoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
InBhZ2VVcCIsIDYsIDIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNSwgMiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA0LCAxKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDIsIDEp
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAi
cGFnZVVwIiwgMSwgMSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0SG9tZVdpdGhEaXNh
YmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNz
ZCIsICJob21lIiwgNywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzZCIsICJob21lIiwgNiwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNSwgMSknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNCwgMSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgo
InNzZCIsICJob21lIiwgMiwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMSwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMCwgMSknLCAndHJ1ZScpOwor
fQorCitmdW5jdGlvbiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMoKSB7CisgICAgc2hvdWxk
QmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDcsIDYpJywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgNiwgNikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJl
bmQiLCA1LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3NkIiwgImVuZCIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAyLCA2KScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDEsIDYpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5k
IiwgMCwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c05v
RGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNzIik7CisgICAgc2VsZWN0LmZvY3VzKCk7CisgICAgY2xlYXJTZWxlY3Rpb24oc2Vs
ZWN0KTsKKyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDA7CisKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzAsIDEsIDIs
IDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAi
cGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRC
ZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAx
LCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhw
ZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
J3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMF0pJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMo
InNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEs
IDIsIDMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzBdKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzBd
KScsICd0cnVlJyk7CisKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5z
ZWxlY3RlZEluZGV4ID0gMzsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93
biIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzNdKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAi
LCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAi
cGFnZVVwIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRo
U2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywgNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
IiwgImVuZCIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswLCAxLCAyLCAzXSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3MiLCAiaG9tZSIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0
VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHZhciBzZWxlY3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAgc2VsZWN0LmZvY3VzKCk7Cisg
ICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDE7
CisKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIs
ICJwYWdlRG93biIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzEsIDIsIDQsIDUs
IDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAg
ICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdl
VXAiLCBbMSwgMl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBb
MV0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdElu
ZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwg
MiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkn
LCAndHJ1ZScpOworCisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9IDQ7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIs
IFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsyLCA0XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIs
IFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIs
IFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImhvbWUiLCBb
MSwgMiwgNF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEsIDIsIDRdKScsICd0cnVlJyk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RQYWdlRG93bldpdGhHcm91cCgpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAwLCAzKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgMSwgMyknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdl
RG93biIsIDIsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2ciLCAicGFnZURvd24iLCAzLCA1KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNCwgNiknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDUs
IDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ci
LCAicGFnZURvd24iLCA2LCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlVXBX
aXRoR3JvdXAoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwg
InBhZ2VVcCIsIDYsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNSwgMyknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA0LCAyKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDMsIDEp
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAi
cGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZyIsICJwYWdlVXAiLCAxLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDAsIDApJywgJ3RydWUnKTsKK30K
KwordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0UGFnZVVwTm9EaXNhYmxl
ZEVsZW1lbnRzKCk7Cit0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEVuZE5vRGlz
YWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aERpc2FibGVkRWxlbWVudHMoKTsKK3Rl
c3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEhvbWVXaXRoRGlzYWJsZWRFbGVt
ZW50cygpOwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0VmFyaW91c1NoaWZ0
S2V5c05vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFZhcmlvdXNTaGlmdEtleXNXaXRoRGlzYWJs
ZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aEdyb3VwKCk7Cit0ZXN0UGFnZVVwV2l0aEdy
b3VwKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PiAKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMmIxNTM1ZTkyNTRkY2Y2ZThk
NjcyZTc4MWQ3MTU2OGMxYWNkNTE2Li4yYTYxZjBjYzU3OWJhNGJlZDY5MDJhNTcwMmRmZGFiOTFl
ZWQwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRh
a2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9F
bmQgaW4gU0VMRUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzY1OAorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NlbGVj
dC1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogTW92ZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhl
IGZpbGUgdG8gYmUgdXNlZCBieSBvdGhlciByb3V0aW5lcy4KKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBSZXR1cm5zIGEgc2VsZWN0YWJsZSBpbmRl
eCBvbmUgcGFnZSBhd2F5IGZyb20gdGhlIGdpdmVuIGluZGV4LgorICAgICAgICAoV2ViQ29yZTo6
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgpOiBJbXBsZW1lbnRlZCB3aXRoIG5leHRWYWxpZEluZGV4
LgorICAgICAgICBBbmQgY29udmVydGVkIHRvIGEgbm9ybWFsIHN0YXRpYyBmdW5jdGlvbiBmcm9t
IGEgcHJpdmF0ZSBmdW5jdGlvbiBvZiBTZWxlY3RFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6
cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KTogSW1wbGVtZW50ZWQgd2l0aCBuZXh0VmFsaWRJ
bmRleC4KKyAgICAgICAgQW5kIGNvbnZlcnRlZCB0byBhIG5vcm1hbCBzdGF0aWMgZnVuY3Rpb24g
ZnJvbSBhIHByaXZhdGUgZnVuY3Rpb24gb2YgU2VsZWN0RWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGZpcnN0IHNlbGVjdGFi
bGUgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpsYXN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJl
dHVybnMgdGhlIGxhc3Qgc2VsZWN0YWJsZSBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6IENvbnZlcnRlZCBmcm9tIEMg
Y2FzdCB0byBDKysgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Omxpc3RC
b3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkcyBzdXBwb3J0IGZvciBQYWdlVXAvUGFnZURvd24v
SG9tZS9FbmQgd2l0aCBib3RoIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0aW9uLgorCisgICAg
ICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1l
bnQ6Oik6IFJlbW92ZSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGFuZCBwcmV2aW91c1NlbGVj
dGFibGVMaXN0SW5kZXgoKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6
IE1ha2VzIFJlbmRlckxpc3RCb3g6OnNpemUgcHVibGljIHNvIHRoYXQgUGFnZVVwL1BhZ2VEb3du
IGJlaGF2aW9yIGNhbiB1c2UgdGhlIGFjdHVhbCBsaXN0IHNpemUgcmF0aGVyIHRoYW4gdGhhdCBz
cGVjaWZpZWQgaW4gSFRNTC4KKyAgICAgICAgVGhleSBjYW4gZGlmZmVyIGR1ZSB0byB0aGUgbWlu
aW11bSBzaXplIGltcG9zZWQgYnkgUmVuZGVyTGlzdEJveC4KKwogMjAxMS0wMy0zMCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBjb3JyZWN0aW9uIGFmdGVyIHI4MjQ5Ni4gKFBhcnQgMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RF
bGVtZW50LmNwcAppbmRleCAxNWM2OWFkYzY0NjVhZjMyYTE3MjY5ZGEyY2QwM2ZhYjBlZmY3OTZj
Li5jYTBiMTE5OTkzYTM4YjRiMTNiODE2ZjQyZjJlMTdkMTZjMDIzZjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3MiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFkVGltZW91dCA9IDEwMDA7
CiAKK2VudW0gU2tpcERpcmVjdGlvbiB7CisgICAgU2tpcEJhY2t3YXJkcyA9IC0xLAorICAgIFNr
aXBGb3J3YXJkcyA9IDEKK307CisKKy8vIFJldHVybnMgdGhlIDFzdCB2YWxpZCBpdGVtIHxza2lw
fCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufCBpZiB0aGVy
ZSBpcyBvbmUuCisvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZhbGlkIGl0ZW0gY2xvc2Vz
dCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRleHwgaWYgdGhlcmUgaXMg
b25lLgorLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8LgorLy8gVmFsaWQgbWVh
bnMgdGhhdCBpdCBpcyBlbmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVudC4KK3N0YXRpYyBpbnQg
bmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlz
dEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCit7CisgICAgQVNTRVJU
KGRpcmVjdGlvbiA9PSAtMSB8fCBkaXJlY3Rpb24gPT0gMSk7CisgICAgaW50IGxhc3RHb29kSW5k
ZXggPSBsaXN0SW5kZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOworICAgIGZv
ciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwg
c2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAtLXNraXA7CisgICAgICAg
IGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVtZW50
KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxp
c3RJbmRleDsKKyAgICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29kSW5kZXg7Cit9CisKK2lu
dCBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4
KGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpLCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOwor
fQorCitpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBk
YXRhLCBFbGVtZW50KiBlbGVtZW50LCBpbnQgc3RhcnRJbmRleCkKK3sKKyAgICByZXR1cm4gbmV4
dFZhbGlkSW5kZXgoZGF0YS5saXN0SXRlbXMoZWxlbWVudCksIHN0YXJ0SW5kZXgsIFNraXBCYWNr
d2FyZHMsIDEpOworfQorCitpbnQgZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1l
bnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0g
bmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgSU5UX01B
WCk7CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPT0gaXRlbXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGluZGV4OworfQorCitpbnQgbGFzdFNl
bGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQp
LCAtMSwgU2tpcEZvcndhcmRzLCBJTlRfTUFYKTsKK30KKworLy8gUmV0dXJucyB0aGUgaW5kZXgg
b2YgdGhlIG5leHQgdmFsaWQgaXRlbSBvbmUgcGFnZSBhd2F5IGZyb20gfHN0YXJ0SW5kZXh8IGlu
IGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KK3N0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXhQYWdlQXdheShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50
IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgLy8gQ2Fu
J3QgdXNlIGRhdGEtPnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6
ZS4KKyAgICBpbnQgcGFnZVNpemUgPSAwOworICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpLT5p
c0xpc3RCb3goKSkKKyAgICAgICAgcGFnZVNpemUgPSB0b1JlbmRlckxpc3RCb3goZWxlbWVudC0+
cmVuZGVyZXIoKSktPnNpemUoKSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dAor
CisgICAgLy8gT25lIHBhZ2UgYXdheSwgYnV0IG5vdCBvdXRzaWRlIHZhbGlkIGJvdW5kcy4KKyAg
ICAvLyBJZiB0aGVyZSBpcyBhIHZhbGlkIG9wdGlvbiBpdGVtIG9uZSBwYWdlIGF3YXksIHRoZSBp
bmRleCBpcyBjaG9zZW4uCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhhY3Qgb25lIHBhZ2UgYXdh
eSB2YWxpZCBvcHRpb24sIHJldHVybnMgc3RhcnRJbmRleCBvciB0aGUgbW9zdCBmYXIgaW5kZXgu
CisgICAgaW50IGVkZ2VJbmRleCA9IChkaXJlY3Rpb249PSBTa2lwRm9yd2FyZHMpID8gMCA6IChp
dGVtcy5zaXplKCkgLSAxKTsKKyAgICBpbnQgc2tpcEFtb3VudCA9IHBhZ2VTaXplICsgKChkaXJl
Y3Rpb24gPT0gU2tpcEZvcndhcmRzKSA/IHN0YXJ0SW5kZXggOiAoZWRnZUluZGV4IC0gc3RhcnRJ
bmRleCkpOworICAgIHJldHVybiBuZXh0VmFsaWRJbmRleChpdGVtcywgZWRnZUluZGV4LCBkaXJl
Y3Rpb24sIHNraXBBbW91bnQpOworfQorCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNlbGVjdEFsbChT
ZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQo
IWRhdGEudXNlc01lbnVMaXN0KCkpOwpAQCAtMTA0LDMwICsxNzAsNiBAQCB2b2lkIFNlbGVjdEVs
ZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50
KiBlbGVtZW50KQogICAgIH0KIH0KIAotaW50IFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxl
TGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBpbnQg
c3RhcnRJbmRleCkKLXsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGRhdGEu
bGlzdEl0ZW1zKGVsZW1lbnQpOwotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXggKyAxOwotICAg
IHdoaWxlIChpbmRleCA+PSAwICYmICh1bnNpZ25lZCkgaW5kZXggPCBpdGVtcy5zaXplKCkgJiYg
KCFpc09wdGlvbkVsZW1lbnQoaXRlbXNbaW5kZXhdKSB8fCBpdGVtc1tpbmRleF0tPmRpc2FibGVk
KCkpKQotICAgICAgICArK2luZGV4OwotICAgIGlmICgodW5zaWduZWQpIGluZGV4ID09IGl0ZW1z
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXJ0SW5kZXg7Ci0gICAgcmV0dXJuIGluZGV4Owot
fQotCi1pbnQgU2VsZWN0RWxlbWVudDo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVj
dEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBpbnQgc3RhcnRJbmRleCkKLXsK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1l
bnQpOwotICAgIGlmIChzdGFydEluZGV4ID09IC0xKQotICAgICAgICBzdGFydEluZGV4ID0gaXRl
bXMuc2l6ZSgpOwotICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXggLSAxOwotICAgIHdoaWxlIChp
bmRleCA+PSAwICYmICh1bnNpZ25lZCkgaW5kZXggPCBpdGVtcy5zaXplKCkgJiYgKCFpc09wdGlv
bkVsZW1lbnQoaXRlbXNbaW5kZXhdKSB8fCBpdGVtc1tpbmRleF0tPmRpc2FibGVkKCkpKQotICAg
ICAgICAtLWluZGV4OwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHN0YXJ0
SW5kZXg7Ci0gICAgcmV0dXJuIGluZGV4OwotfQotCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldEFj
dGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50
KiBlbGVtZW50LCBpbnQgaW5kZXgpCiB7CiAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25BbmNo
b3JJbmRleChpbmRleCk7CkBAIC01MTUsMjcgKzU1Nyw2IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6
cmVzZXQoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgc2V0
T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogICAgIGVsZW1lbnQtPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KLSAgICAKLWVudW0gU2tpcERpcmVjdGlvbiB7Ci0gICAg
U2tpcEJhY2t3YXJkcyA9IC0xLAotICAgIFNraXBGb3J3YXJkcyA9IDEKLX07Ci0KLS8vIFJldHVy
bnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGxpc3QgaXRlbSB8c2tpcHwgaXRlbXMgcGFz
dCB8bGlzdEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwuCi1zdGF0aWMgaW50IG5leHRW
YWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50IGxpc3RJbmRl
eCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24sIGludCBza2lwKQotewotICAgIGludCBsYXN0R29v
ZEluZGV4ID0gbGlzdEluZGV4OwotICAgIGludCBzaXplID0gbGlzdEl0ZW1zLnNpemUoKTsKLSAg
ICBmb3IgKGxpc3RJbmRleCArPSBkaXJlY3Rpb247IGxpc3RJbmRleCA+PSAwICYmIGxpc3RJbmRl
eCA8IHNpemU7IGxpc3RJbmRleCArPSBkaXJlY3Rpb24pIHsKLSAgICAgICAgLS1za2lwOwotICAg
ICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5kaXNhYmxlZCgpICYmIGlzT3B0aW9uRWxl
bWVudChsaXN0SXRlbXNbbGlzdEluZGV4XSkpIHsKLSAgICAgICAgICAgIGxhc3RHb29kSW5kZXgg
PSBsaXN0SW5kZXg7Ci0gICAgICAgICAgICBpZiAoc2tpcCA8PSAwKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsYXN0R29vZEluZGV4OwotfQog
CiB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RF
bGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50LCBIVE1MRm9y
bUVsZW1lbnQqIGh0bWxGb3JtKQogewpAQCAtNTk0LDggKzYxNSw4IEBAIHZvaWQgU2VsZWN0RWxl
bWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRh
LCBFbGVtZW50CiAgICAgICAgICAgICBsaXN0SW5kZXggPSBuZXh0VmFsaWRJbmRleChsaXN0SXRl
bXMsIGxpc3RJdGVtcy5zaXplKCksIFNraXBCYWNrd2FyZHMsIDEpOwogICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVkICYm
IGxpc3RJbmRleCA+PSAwICYmICh1bnNpZ25lZClsaXN0SW5kZXggPCBsaXN0SXRlbXMuc2l6ZSgp
KQorCisgICAgICAgIGlmIChoYW5kbGVkICYmIGxpc3RJbmRleCA+PSAwICYmIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsaXN0SW5kZXgpIDwgbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgICAgIHNl
dFNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCwgbGlzdFRvT3B0aW9uSW5kZXgoZGF0YSwgZWxl
bWVudCwgbGlzdEluZGV4KSk7CiAKICAgICAgICAgaWYgKGhhbmRsZWQpCkBAIC03NjAsMTkgKzc4
MSw0NSBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5rZXlJZGVudGlmaWVyKCk7CiAKLSAgICAgICAgaW50IGVuZEluZGV4ID0g
MDsgICAgICAgIAorICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgaW50IGVu
ZEluZGV4ID0gMDsKICAgICAgICAgaWYgKGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSA8
IDApIHsKICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGVuZCBpbmRleAotICAgICAgICAg
ICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iKQorICAgICAgICAgICAgaWYgKGtleUlkZW50
aWZpZXIgPT0gIkRvd24iKSB7CiAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0
YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBsYXN0U2VsZWN0ZWRMaXN0SW5kZXgoZGF0YSwg
ZWxlbWVudCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKQor
ICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChr
ZXlJZGVudGlmaWVyID09ICJVcCIpIHsKICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IHByZXZp
b3VzU2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBvcHRpb25Ub0xpc3RJbmRleChk
YXRhLCBlbGVtZW50LCBzZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQpKSk7CisgICAgICAgICAg
ICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZp
ZXIgPT0gIlBhZ2VEb3duIikgeworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVj
dGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRhLCBlbGVtZW50LCBsYXN0U2VsZWN0ZWRMaXN0SW5k
ZXgoZGF0YSwgZWxlbWVudCksIFNraXBGb3J3YXJkcyk7CisgICAgICAgICAgICAgICAgaGFuZGxl
ZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VV
cCIpIHsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4
UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwg
c2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSksIFNraXBCYWNrd2FyZHMpOworICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJlbnQgZW5k
IGluZGV4Ci0gICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpCisgICAgICAg
ICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpIHsKICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZl
U2VsZWN0aW9uRW5kSW5kZXgoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVy
ID09ICJVcCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVM
aXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsg
ICAgCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikgeworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2Vs
ZWN0aW9uRW5kSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikgeworICAgICAg
ICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRh
LCBlbGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCksIFNraXBGb3J3YXJkcyk7
CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9
IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleCgpLCBTa2lwQmFja3dhcmRzKTsKKyAgICAgICAgICAgICAgICBo
YW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoa2V5
SWRlbnRpZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGVuZEluZGV4ID0gZmlyc3RTZWxl
Y3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRy
dWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5kIikgeworICAgICAg
ICAgICAgZW5kSW5kZXggPSBsYXN0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50KTsK
KyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlz
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQpA
QCAtNzgwLDEzICs4MjcsMTMgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2
ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCoKICAgICAgICAgICAg
IGlmIChrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIg
fHwgKChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJVcCIpICYm
IGVuZEluZGV4ID09IGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBr
ZXlJZGVudGlmaWVyID09ICJVcCIpIHsKKyAgICAgICAgaWYgKGVuZEluZGV4ID49IDAgJiYgaGFu
ZGxlZCkgewogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBj
b21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVu
dHMgaW1tZWRpYXRlbHkgYWZ0ZXIgbWFraW5nIHRoZSBuZXcgc2VsZWN0aW9uLgogICAgICAgICAg
ICAgc2F2ZUxhc3RTZWxlY3Rpb24oZGF0YSwgZWxlbWVudCk7CiAKLSAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQobGlzdEl0ZW1zLCAhbGlzdEl0ZW1zLnNpemUoKSB8fCAoZW5kSW5kZXggPj0gMCAm
JiAodW5zaWduZWQpIGVuZEluZGV4IDwgbGlzdEl0ZW1zLnNpemUoKSkpOworICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+
PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRJbmRleCkgPCBsaXN0SXRlbXMuc2l6ZSgp
KSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChkYXRhLCBlbmRJbmRl
eCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYm9vbCBzZWxlY3ROZXdJdGVtID0gIWRh
dGEubXVsdGlwbGUoKSB8fCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5zaGlm
dEtleSgpIHx8ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpKTsKICAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKQogICAgICAgICAgICAg
ICAgIGRhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuaAppbmRleCAyMjJhMWJiYzFjMmEwYzlmYTY0NzlmYjFkYzIyMGMxZDViYzRjYjUz
Li5kZDA3M2EyNGU3MzVmMmUzMjBiYTMyMGFmOTRhZTBjMjY2NTM2Zjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RFbGVtZW50LmgKQEAgLTcyLDggKzcyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rh
dGljIHZvaWQgc2VsZWN0QWxsKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0
YXRpYyB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCop
OwotICAgIHN0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwotICAgIHN0YXRpYyBpbnQgcHJldmlvdXNT
ZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBzdGFy
dEluZGV4KTsKICAgICBzdGF0aWMgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChT
ZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBpbnQgaW5kZXgpOwogICAgIHN0YXRpYyB2b2lk
IHNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgaW50IGluZGV4
KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnRE
YXRhJiwgRWxlbWVudCosIGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMGUyY2ZkNjhiMzhmNjA3MDcyYThmMWQy
M2NmMzQxNDU5ZWU3ZjcyNi4uNjEwZjU1ZTg4ZWRmZDIwNjg4MTVjZGJlNjJjNzFmNTI1N2IwZmRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC01Myw2ICs1
Myw4IEBAIHB1YmxpYzoKIAogICAgIGludCBzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmKTsg
Ly8gUmV0dXJucyB0aGUgbmV3IGluZGV4IG9yIC0xIGlmIG5vIHNjcm9sbCBvY2N1cnJlZAogCisg
ICAgaW50IHNpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KIApAQCAtMTI1
LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgaW50IGl0ZW1IZWlnaHQoKSBjb25zdDsK
ICAgICB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgpOwotICAgIGludCBzaXpl
KCkgY29uc3Q7CiAgICAgaW50IG51bVZpc2libGVJdGVtcygpIGNvbnN0OwogICAgIGludCBudW1J
dGVtcygpIGNvbnN0OwogICAgIGludCBsaXN0SGVpZ2h0KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88180</attachid>
            <date>2011-04-04 18:51:08 -0700</date>
            <delta_ts>2011-04-05 19:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110404185106.patch</filename>
            <type>text/plain</type>
            <size>36945</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ3NGYwZDJjN2U2YzdlY2QxMTY1
M2M3ZTNlNDVkZDY5OTM1MjkwLi5iN2Y0ZGVlZGMwMTMxMTEyOWIwOTk4OWViZGI3MDMxMGRmNWVi
M2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZGluZyBmYXN0L2RvbS9I
VE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbCB0byBtYWMtd2syIFNraXBwZWQgbGlzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljMzE2MzUxN2E1MGVmZjYyN2QwMmRkMGFhOTVjNWVjN2M5MDY3ZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVj
dD4gZWxlbWVudHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdp
bGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBy
dW4td2Via2l0LXRlc3RzLgorCisgICAgCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAicGFnZURvd24iLCAwLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZURvd24iLCAyLCA1KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAicGFnZURvd24iLCAzLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3MiLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA2LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNiwgMykgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDUsIDIpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCA0LCAxKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMywgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDIsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAxLCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMCwgMCkgaXMgdHJ1ZQorUEFT
UyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgNCwgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAiZW5kIiwgMCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJwYWdlRG93biIsIDAsIDQpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgMiwgNSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDQsIDYpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgNiwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDcsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA2LCAyKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAy
LCAxKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIs
IDEsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVw
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQi
LCA3LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIs
IDYsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwg
NSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCA0
LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDMs
IDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMiwg
NikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAxLCA2
KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDAsIDYp
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBh
Z2VEb3duIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMg
dHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURv
d24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBd
KSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQs
IDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzcyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBb
MywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VVcCIsIFszXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwg
MiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
IiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywgNCwgNSwg
Nl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
ImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0
XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwg
InBhZ2VEb3duIiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0pIGlz
IHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdl
VXAiLCBbMSwgMl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJl
bmQiLCBbMSwgMiwgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkgaXMgdHJ1ZQorUEFTUyBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzQsIDUs
IDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAicGFnZURvd24iLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMiwgNF0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJw
YWdlVXAiLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUK
K1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEs
IDIsIDRdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
c2QiLCAiaG9tZSIsIFsxLCAyLCA0XSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDAsIDMpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAxLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgMiwgNCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDMsIDUpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNSwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDYsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNiwgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA1LCAzKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDQsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMywg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAy
LCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIs
IDEsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVw
IiwgMCwgMCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgwNGZhMTQ2OTRhMDYyNjFiNWVjZTJjZGViNzRlNTAxNTA1YWY4YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5o
dG1sCkBAIC0wLDAgKzEsMzA2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9t
ZS9FbmQvUGFnZVVwL1BhZ2VEb3duIGtleXMgd29yayBjb3JyZWN0bHkgZm9yICZsdDtzZWxlY3Qm
Z3Q7IGVsZW1lbnRzLgorU2luY2UgaXQgcmVxdWlyZXMgPENPREU+ZXZlbnRTZW5kZXIua2V5RG93
bjwvQ09ERT4sIGl0IHdpbGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVz
dCBiZSBydW4gd2l0aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorPGhyPgorPGZv
cm0+CisgICAgIDwhLS0gV2Ugc3BlY2lmeSBhIHNpemUgb2YgMyBidXQgd2lsbCBlbmQgdXAgcmVu
ZGVyaW5nIHdpdGggNCBiZWNhdXNlIHdlYmtpdCBpbXBvc2VzIGEgbWluaW11bSBzaXplIG9mIDQu
CisgICAgIEl0IGlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgaGFuZGxlcyB0aGlz
IGNhc2UgIC0tPgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0IiBpZD0ic3MiIHNpemU9
IjMiIG11bHRpcGxlPSJ0cnVlIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlv
bj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlv
biB2YWx1ZT0iMiI+MiA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+MyA8L29w
dGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iNSI+NSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8
L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8c2VsZWN0IG5hbWU9InNpbmdsZXNlbGVjdHdp
dGhkaXNhYmxlZCIgaWQ9InNzZCIgc2l6ZT0iNCIgbXVsdGlwbGU9ImZhbHNlIj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iMCIgZGlzYWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgIDxv
cHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIg
PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0cnVlIj4zIDwv
b3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40IDwvb3B0aW9uPgorICAgICAgICA8
b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42
IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI3IiBkaXNhYmxlZCA9ICJ0cnVlIj43
IDwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0
d2l0aGdyb3VwIiBpZD0ic3NnIiBzaXplPSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICA8
b3B0Z3JvdXAgbGFiZWw9ImdwMCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj4wIDwv
b3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAg
ICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+
CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AxIj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjMiPjMgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AyIj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3Jv
dXA+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+
Cis8L2Zvcm0+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworfQorCitmdW5jdGlv
biBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlhbEluZGV4LCBleHBl
Y3RlZEluZGV4KSB7CisgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNl
bGVjdElkKTsKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5mb2N1cygp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gaW5pdGlhbEluZGV4OworICAgIGlmIChzZWxl
Y3Quc2VsZWN0ZWRJbmRleCAhPSBpbml0aWFsSW5kZXgpIHsKKyAgICAgICAgbG9nKCJjYW4ndCBz
ZXQgc2VsZWN0ZWRJbmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5z
ZWxlY3RlZEluZGV4ICsgJyknKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKGtleSk7CisgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4cGVjdGVkSW5kZXgp
IHsKKyAgICAgICAgbG9nKCdzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAnICsgZXhwZWN0ZWRJbmRl
eCArICcgKGlzICcgKyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpIGFmdGVyIGEgJyArIGtleSAr
ICcgZnJvbSBpbmRleCAnICsgaW5pdGlhbEluZGV4KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXF1YWxBcnJheXMoYTEsIGEy
KSB7CisgICAgaWYgKGExLmxlbmd0aCAhPSBhMi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYTEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGEx
W2ldICE9IGEyW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZHVtcEFycmF5KGEpIHsKKyAgICBzID0gIlsiOworICAg
IGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHMgPSBzICsgYVtpXTsK
KyAgICAgICAgaWYgKGkgPCBhLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgcyA9IHMgKyAiLCAi
OworICAgIH0KKyAgICByZXR1cm4gcyArICJdIjsKK30KKworZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJ
bmRpY2VzKHNlbGVjdCkgeworICAgIG5vd1NlbGVjdGVkID0gW107CisgICAgZm9yIChpID0gMDsg
aSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoc2VsZWN0Lm9wdGlv
bnNbaV0uc2VsZWN0ZWQpCisgICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAg
cmV0dXJuIG5vd1NlbGVjdGVkOworfQorCitmdW5jdGlvbiBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAg
ICAgIHNlbGVjdC5vcHRpb25zW2ldLnNlbGVjdGVkID0gZmFsc2U7Cit9CisKKy8vIGV4cGVjdGVk
SW5kaWNlcyBzaG91bGQgYmUgaW4gc29ydGVkIG9yZGVyCitmdW5jdGlvbiBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcyhzZWxlY3RJZCwga2V5LCBleHBlY3RlZEluZGljZXMpIHsKKyAg
ICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOworICAgIHNl
bGVjdC5mb2N1cygpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBbInNoaWZ0S2V5Il0pOworICAgIG5vd1NlbGVj
dGVkID0gZ2V0U2VsZWN0ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgaWYgKCFlcXVhbEFycmF5cyhu
b3dTZWxlY3RlZCwgZXhwZWN0ZWRJbmRpY2VzKSkgeworICAgICAgICBsb2coJ3NlbGVjdGVkIGlu
ZGljZXMgc2hvdWxkIGJlICcgKyBkdW1wQXJyYXkoZXhwZWN0ZWRJbmRpY2VzKSArICcgKGlzICcg
KworICAgICAgICAgICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcpIGFmdGVyIGEgJyArIGtl
eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIHRlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRC
ZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDAsIDMpJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIs
IDEsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJz
cyIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDMsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDQsIDYpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93
biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdFBh
Z2VVcE5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJwYWdlVXAiLCA2LCAzKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNSwgMiknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDQsIDEpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdl
VXAiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDEsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAwLCAwKScsICd0cnVl
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNo
b3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUs
IDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJob21lIiwgNCwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAw
KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVu
ZCIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJlbmQiLCA0LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMCwg
NiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVt
ZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFn
ZURvd24iLCAwLCA0KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3NkIiwgInBhZ2VEb3duIiwgMSwgNCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA0
LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Nk
IiwgInBhZ2VEb3duIiwgNSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA3LCA2KScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpIHsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywg
NCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIs
ICJwYWdlVXAiLCA2LCAyKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAyLCAx
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
InBhZ2VVcCIsIDEsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZVVwIiwgMCwgMSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0
ZXN0SG9tZVdpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNiwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNSwgMSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJo
b21lIiwgNCwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJob21lIiwgMywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMiwgMSknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMSwgMSknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMCwg
MSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMo
KSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDcs
IDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2Qi
LCAiZW5kIiwgNiwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJlbmQiLCA1LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAyLCA2
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
ImVuZCIsIDEsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2QiLCAiZW5kIiwgMCwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0VmFy
aW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICB2YXIgc2VsZWN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNzIik7CisgICAgc2VsZWN0LmZvY3VzKCk7CisgICAgY2xl
YXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDA7CisKKyAg
ICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VE
b3duIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1
LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
InBhZ2VVcCIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3Mi
LCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
J3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzBdKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKScsICd0cnVlJyk7CisKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMzsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzNdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAy
LCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywg
NCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFsw
LCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworfQor
CitmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAgc2Vs
ZWN0LmZvY3VzKCk7CisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9IDE7CisKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3du
IiwgWzEsIDIsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0p
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlVXAiLCBbMV0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlm
dEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAiaG9tZSIsIFsxXSknLCAndHJ1ZScpOworCisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsK
KyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDQ7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlRG93biIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsyLCA0XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNl
cygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgImhvbWUiLCBbMSwgMiwgNF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEsIDIsIDRdKScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhHcm91cCgpIHsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAwLCAzKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VE
b3duIiwgMSwgMyknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDIsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAzLCA1KScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNCwg
NiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIs
ICJwYWdlRG93biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA2LCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RQYWdlVXBXaXRoR3JvdXAoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDYsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNSwgMyknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA0LCAy
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwg
InBhZ2VVcCIsIDMsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAxLCAwKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDAsIDAp
JywgJ3RydWUnKTsKK30KKwordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0
UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygp
OwordGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aERpc2FibGVk
RWxlbWVudHMoKTsKK3Rlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEhvbWVX
aXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7Cit0
ZXN0VmFyaW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFZhcmlvdXNTaGlm
dEtleXNXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aEdyb3VwKCk7Cit0
ZXN0UGFnZVVwV2l0aEdyb3VwKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PiAKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMmIx
NTM1ZTkyNTRkY2Y2ZThkNjcyZTc4MWQ3MTU2OGMxYWNkNTE2Li4yYTYxZjBjYzU3OWJhNGJlZDY5
MDJhNTcwMmRmZGFiOTFlZWQwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEt
MDQtMDIgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdV
cC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VMRUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1OAorCisgICAgICAgIFRlc3Q6IGZh
c3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogTW92ZWQgZnJvbSBl
bHNld2hlcmUgaW4gdGhlIGZpbGUgdG8gYmUgdXNlZCBieSBvdGhlciByb3V0aW5lcy4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBSZXR1cm5zIGEg
c2VsZWN0YWJsZSBpbmRleCBvbmUgcGFnZSBhd2F5IGZyb20gdGhlIGdpdmVuIGluZGV4LgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgpOiBJbXBsZW1lbnRlZCB3aXRo
IG5leHRWYWxpZEluZGV4LgorICAgICAgICBBbmQgY29udmVydGVkIHRvIGEgbm9ybWFsIHN0YXRp
YyBmdW5jdGlvbiBmcm9tIGEgcHJpdmF0ZSBmdW5jdGlvbiBvZiBTZWxlY3RFbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KTogSW1wbGVtZW50ZWQg
d2l0aCBuZXh0VmFsaWRJbmRleC4KKyAgICAgICAgQW5kIGNvbnZlcnRlZCB0byBhIG5vcm1hbCBz
dGF0aWMgZnVuY3Rpb24gZnJvbSBhIHByaXZhdGUgZnVuY3Rpb24gb2YgU2VsZWN0RWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhl
IGZpcnN0IHNlbGVjdGFibGUgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpsYXN0U2VsZWN0YWJs
ZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGxhc3Qgc2VsZWN0YWJsZSBpbmRleC4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6IENv
bnZlcnRlZCBmcm9tIEMgY2FzdCB0byBDKysgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkcyBzdXBwb3J0IGZvciBQ
YWdlVXAvUGFnZURvd24vSG9tZS9FbmQgd2l0aCBib3RoIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2Vs
ZWN0aW9uLgorCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdEVsZW1lbnQ6Oik6IFJlbW92ZSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGFu
ZCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoKS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94Lmg6IE1ha2VzIFJlbmRlckxpc3RCb3g6OnNpemUgcHVibGljIHNvIHRoYXQg
UGFnZVVwL1BhZ2VEb3duIGJlaGF2aW9yIGNhbiB1c2UgdGhlIGFjdHVhbCBsaXN0IHNpemUgcmF0
aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gSFRNTC4KKyAgICAgICAgVGhleSBjYW4gZGlmZmVy
IGR1ZSB0byB0aGUgbWluaW11bSBzaXplIGltcG9zZWQgYnkgUmVuZGVyTGlzdEJveC4KKwogMjAx
MS0wMy0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBjb3JyZWN0aW9uIGFmdGVyIHI4MjQ5Ni4gKFBhcnQgMykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAppbmRleCAxNWM2OWFkYzY0NjVhZjMyYTE3MjY5ZGEy
Y2QwM2ZhYjBlZmY3OTZjLi45NmI3OGZmOWE5M2E5YWQ3ODI3YTk0ODVjZWZjNDQ1YWUzMzk1MmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3MiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFk
VGltZW91dCA9IDEwMDA7CiAKK2VudW0gU2tpcERpcmVjdGlvbiB7CisgICAgU2tpcEJhY2t3YXJk
cyA9IC0xLAorICAgIFNraXBGb3J3YXJkcyA9IDEKK307CisKKy8vIFJldHVybnMgdGhlIDFzdCB2
YWxpZCBpdGVtIHxza2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGly
ZWN0aW9ufCBpZiB0aGVyZSBpcyBvbmUuCisvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZh
bGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRl
eHwgaWYgdGhlcmUgaXMgb25lLgorLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8
LgorLy8gVmFsaWQgbWVhbnMgdGhhdCBpdCBpcyBlbmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVu
dC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlz
dEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXAp
Cit7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAtMSB8fCBkaXJlY3Rpb24gPT0gMSk7CisgICAg
aW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMu
c2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAg
JiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAt
LXNraXA7CisgICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYg
aXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFz
dEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29k
SW5kZXg7Cit9CisKK2ludCBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0
YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCit7CisgICAgcmV0dXJu
IG5leHRWYWxpZEluZGV4KGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpLCBzdGFydEluZGV4LCBTa2lw
Rm9yd2FyZHMsIDEpOworfQorCitpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVj
dEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBpbnQgc3RhcnRJbmRleCkKK3sK
KyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgoZGF0YS5saXN0SXRlbXMoZWxlbWVudCksIHN0YXJ0
SW5kZXgsIFNraXBCYWNrd2FyZHMsIDEpOworfQorCitpbnQgZmlyc3RTZWxlY3RhYmxlTGlzdElu
ZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Cisg
ICAgaW50IGluZGV4ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tpcEJh
Y2t3YXJkcywgSU5UX01BWCk7CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkg
PT0gaXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGluZGV4Owor
fQorCitpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEs
IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGRhdGEubGlz
dEl0ZW1zKGVsZW1lbnQpLCAtMSwgU2tpcEZvcndhcmRzLCBJTlRfTUFYKTsKK30KKworLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQgdmFsaWQgaXRlbSBvbmUgcGFnZSBhd2F5IGZyb20g
fHN0YXJ0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KK3N0YXRpYyBpbnQgbmV4dFNl
bGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVu
dCk7CisgICAgLy8gQ2FuJ3QgdXNlIGRhdGEtPnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNl
cyBhIG1pbmltdW0gc2l6ZS4KKyAgICBpbnQgcGFnZVNpemUgPSAwOworICAgIGlmIChlbGVtZW50
LT5yZW5kZXJlcigpLT5pc0xpc3RCb3goKSkKKyAgICAgICAgcGFnZVNpemUgPSB0b1JlbmRlckxp
c3RCb3goZWxlbWVudC0+cmVuZGVyZXIoKSktPnNpemUoKSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxs
IHNob3cgY29udGV4dAorCisgICAgLy8gT25lIHBhZ2UgYXdheSwgYnV0IG5vdCBvdXRzaWRlIHZh
bGlkIGJvdW5kcy4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIHZhbGlkIG9wdGlvbiBpdGVtIG9uZSBw
YWdlIGF3YXksIHRoZSBpbmRleCBpcyBjaG9zZW4uCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhh
Y3Qgb25lIHBhZ2UgYXdheSB2YWxpZCBvcHRpb24sIHJldHVybnMgc3RhcnRJbmRleCBvciB0aGUg
bW9zdCBmYXIgaW5kZXguCisgICAgaW50IGVkZ2VJbmRleCA9IChkaXJlY3Rpb24gPT0gU2tpcEZv
cndhcmRzKSA/IDAgOiAoaXRlbXMuc2l6ZSgpIC0gMSk7CisgICAgaW50IHNraXBBbW91bnQgPSBw
YWdlU2l6ZSArICgoZGlyZWN0aW9uID09IFNraXBGb3J3YXJkcykgPyBzdGFydEluZGV4IDogKGVk
Z2VJbmRleCAtIHN0YXJ0SW5kZXgpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgoaXRlbXMs
IGVkZ2VJbmRleCwgZGlyZWN0aW9uLCBza2lwQW1vdW50KTsKK30KKwogdm9pZCBTZWxlY3RFbGVt
ZW50OjpzZWxlY3RBbGwoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQp
CiB7CiAgICAgQVNTRVJUKCFkYXRhLnVzZXNNZW51TGlzdCgpKTsKQEAgLTEwNCwzMCArMTcwLDYg
QEAgdm9pZCBTZWxlY3RFbGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbihTZWxlY3RFbGVtZW50RGF0
YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKICAgICB9CiB9CiAKLWludCBTZWxlY3RFbGVtZW50
OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCi17Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgaXRlbXMgPSBkYXRhLmxpc3RJdGVtcyhlbGVtZW50KTsKLSAgICBpbnQgaW5kZXggPSBzdGFy
dEluZGV4ICsgMTsKLSAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwg
aXRlbXMuc2l6ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNb
aW5kZXhdLT5kaXNhYmxlZCgpKSkKLSAgICAgICAgKytpbmRleDsKLSAgICBpZiAoKHVuc2lnbmVk
KSBpbmRleCA9PSBpdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAg
IHJldHVybiBpbmRleDsKLX0KLQotaW50IFNlbGVjdEVsZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJs
ZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50
IHN0YXJ0SW5kZXgpCi17Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBkYXRh
Lmxpc3RJdGVtcyhlbGVtZW50KTsKLSAgICBpZiAoc3RhcnRJbmRleCA9PSAtMSkKLSAgICAgICAg
c3RhcnRJbmRleCA9IGl0ZW1zLnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4IC0g
MTsKLSAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6
ZSgpICYmICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5k
aXNhYmxlZCgpKSkKLSAgICAgICAgLS1pbmRleDsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAg
ICAgIHJldHVybiBzdGFydEluZGV4OwotICAgIHJldHVybiBpbmRleDsKLX0KLQogdm9pZCBTZWxl
Y3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChTZWxlY3RFbGVtZW50RGF0
YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50IGluZGV4KQogewogICAgIGRhdGEuc2V0QWN0
aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoaW5kZXgpOwpAQCAtNTE1LDI3ICs1NTcsNiBAQCB2b2lk
IFNlbGVjdEVsZW1lbnQ6OnJlc2V0KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBl
bGVtZW50KQogICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihkYXRhLCBlbGVtZW50KTsK
ICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9Ci0gICAgCi1lbnVtIFNraXBE
aXJlY3Rpb24gewotICAgIFNraXBCYWNrd2FyZHMgPSAtMSwKLSAgICBTa2lwRm9yd2FyZHMgPSAx
Ci19OwotCi0vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBsaXN0IGl0ZW0g
fHNraXB8IGl0ZW1zIHBhc3QgfGxpc3RJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258Lgot
c3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRl
bXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKLXsK
LSAgICBpbnQgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKLSAgICBpbnQgc2l6ZSA9IGxpc3RJ
dGVtcy5zaXplKCk7Ci0gICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXgg
Pj0gMCAmJiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7Ci0gICAg
ICAgIC0tc2tpcDsKLSAgICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQo
KSAmJiBpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7Ci0gICAgICAgICAg
ICBsYXN0R29vZEluZGV4ID0gbGlzdEluZGV4OwotICAgICAgICAgICAgaWYgKHNraXAgPD0gMCkK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbGFz
dEdvb2RJbmRleDsKLX0KIAogdm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVu
dEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50
KiBldmVudCwgSFRNTEZvcm1FbGVtZW50KiBodG1sRm9ybSkKIHsKQEAgLTU5NCw4ICs2MTUsOCBA
QCB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RF
bGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudAogICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZh
bGlkSW5kZXgobGlzdEl0ZW1zLCBsaXN0SXRlbXMuc2l6ZSgpLCBTa2lwQmFja3dhcmRzLCAxKTsK
ICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaGFuZGxlZCAmJiBsaXN0SW5kZXggPj0gMCAmJiAodW5zaWduZWQpbGlzdEluZGV4IDwg
bGlzdEl0ZW1zLnNpemUoKSkKKworICAgICAgICBpZiAoaGFuZGxlZCAmJiBsaXN0SW5kZXggPj0g
MCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGlzdEluZGV4KSA8IGxpc3RJdGVtcy5zaXplKCkp
CiAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlv
bkluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RJbmRleCkpOwogCiAgICAgICAgIGlmIChoYW5kbGVk
KQpAQCAtNzYwLDE5ICs3ODEsNDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVs
dEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCoKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyID0gc3RhdGlj
X2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+a2V5SWRlbnRpZmllcigpOwogCi0gICAgICAg
IGludCBlbmRJbmRleCA9IDA7ICAgICAgICAKKyAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7
CisgICAgICAgIGludCBlbmRJbmRleCA9IDA7CiAgICAgICAgIGlmIChkYXRhLmFjdGl2ZVNlbGVj
dGlvbkVuZEluZGV4KCkgPCAwKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBlbmQg
aW5kZXgKLSAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikKLSAgICAgICAg
ICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQs
IGxhc3RTZWxlY3RlZExpc3RJbmRleChkYXRhLCBlbGVtZW50KSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBw
cmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgb3B0aW9uVG9MaXN0SW5k
ZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSkpOworICAgICAg
ICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlBh
Z2VEb3duIikgeworICAgICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0gbGFzdFNlbGVjdGVk
TGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikKKyAgICAgICAg
ICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVt
ZW50LCBzdGFydEluZGV4KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRhLCBlbGVt
ZW50LCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMpOworICAgICAgICAgICAgfSBlbHNlIGlmIChr
ZXlJZGVudGlmaWVyID09ICJVcCIgfHwga2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikgeworICAg
ICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxl
bWVudCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikK
KyAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5k
ZXgoZGF0YSwgZWxlbWVudCwgc3RhcnRJbmRleCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3
YXkoZGF0YSwgZWxlbWVudCwgc3RhcnRJbmRleCwgU2tpcEJhY2t3YXJkcyk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBpbmRleCBi
YXNlZCBvbiB0aGUgY3VycmVudCBlbmQgaW5kZXgKLSAgICAgICAgICAgIGlmIChrZXlJZGVudGlm
aWVyID09ICJEb3duIikKKyAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikg
ewogICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0
YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikKLSAgICAgICAgICAgICAgICBlbmRJbmRl
eCA9IHByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2
ZVNlbGVjdGlvbkVuZEluZGV4KCkpOyAgICAKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKSB7CisgICAg
ICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwg
ZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9
PSAiUGFnZURvd24iKSB7CisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleFBhZ2VBd2F5KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5k
SW5kZXgoKSwgU2tpcEZvcndhcmRzKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikgeworICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShk
YXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCksIFNraXBCYWNrd2Fy
ZHMpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJIb21lIikgeworICAgICAgICAg
ICAgZW5kSW5kZXggPSBmaXJzdFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCk7Cisg
ICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlm
aWVyID09ICJFbmQiKSB7CisgICAgICAgICAgICBlbmRJbmRleCA9IGxhc3RTZWxlY3RhYmxlTGlz
dEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCkBAIC03ODAsMTMgKzgyOSwxMyBAQCB2b2lkIFNlbGVjdEVs
ZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRh
LCBFbGVtZW50KgogICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkxlZnQiIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlJpZ2h0IiB8fCAoKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlVwIikgJiYgZW5kSW5kZXggPT0gZGF0YS5hY3RpdmVTZWxlY3Rpb25F
bmRJbmRleCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGtleUlk
ZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlVwIikgeworICAgICAgICBp
ZiAoZW5kSW5kZXggPj0gMCAmJiBoYW5kbGVkKSB7CiAgICAgICAgICAgICAvLyBTYXZlIHRoZSBz
ZWxlY3Rpb24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdoZW4g
ZGlzcGF0Y2hpbmcgY2hhbmdlIGV2ZW50cyBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIG5l
dyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbihkYXRhLCBlbGVtZW50
KTsKIAotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6
ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmICh1bnNpZ25lZCkgZW5kSW5kZXggPCBsaXN0SXRlbXMu
c2l6ZSgpKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3RJdGVtcywgIWxpc3RJdGVt
cy5zaXplKCkgfHwgKGVuZEluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZElu
ZGV4KSA8IGxpc3RJdGVtcy5zaXplKCkpKTsKICAgICAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlv
bkVuZEluZGV4KGRhdGEsIGVuZEluZGV4KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBi
b29sIHNlbGVjdE5ld0l0ZW0gPSAhZGF0YS5tdWx0aXBsZSgpIHx8IHN0YXRpY19jYXN0PEtleWJv
YXJkRXZlbnQqPihldmVudCktPnNoaWZ0S2V5KCkgfHwgIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFi
bGVkKGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpOwogICAgICAgICAgICAgaWYgKHNlbGVj
dE5ld0l0ZW0pCiAgICAgICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCmluZGV4IDIyMmExYmJjMWMyYTBjOWZh
NjQ3OWZiMWRjMjIwYzFkNWJjNGNiNTMuLmRkMDczYTI0ZTczNWYyZTMyMGJhMzIwYWY5NGFlMGMy
NjY1MzZmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNzIsOCArNzIsNiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RBbGwoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2F2ZUxhc3RTZWxlY3Rpb24oU2VsZWN0
RWxlbWVudERhdGEmLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIGludCBuZXh0U2VsZWN0YWJsZUxp
c3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBpbnQgc3RhcnRJbmRleCk7Ci0g
ICAgc3RhdGljIGludCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHNldEFjdGl2
ZVNlbGVjdGlvbkFuY2hvckluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBp
bmRleCk7CiAgICAgc3RhdGljIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoU2VsZWN0
RWxlbWVudERhdGEmLCBpbnQgaW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUxpc3RCb3hT
ZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgYm9vbCBkZXNlbGVjdE90aGVy
T3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCAw
ZTJjZmQ2OGIzOGY2MDcwNzJhOGYxZDIzY2YzNDE0NTllZTdmNzI2Li42MTBmNTVlODhlZGZkMjA2
ODgxNWNkYmU2MmM3MWY1MjU3YjBmZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogCiAgICAgaW50IHNjcm9sbFRv
d2FyZChjb25zdCBJbnRQb2ludCYpOyAvLyBSZXR1cm5zIHRoZSBuZXcgaW5kZXggb3IgLTEgaWYg
bm8gc2Nyb2xsIG9jY3VycmVkCiAKKyAgICBpbnQgc2l6ZSgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJMaXN0Qm94IjsgfQogCkBAIC0xMjUsNyArMTI3LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBp
bnQgaXRlbUhlaWdodCgpIGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxp
c3RJbmRleCk7Ci0gICAgaW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgbnVtVmlzaWJsZUl0ZW1z
KCkgY29uc3Q7CiAgICAgaW50IG51bUl0ZW1zKCkgY29uc3Q7CiAgICAgaW50IGxpc3RIZWlnaHQo
KSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88355</attachid>
            <date>2011-04-05 19:52:23 -0700</date>
            <delta_ts>2011-04-05 20:50:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110405195221.patch</filename>
            <type>text/plain</type>
            <size>14757</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ3NGYwZDJjN2U2YzdlY2QxMTY1
M2M3ZTNlNDVkZDY5OTM1MjkwLi5iN2Y0ZGVlZGMwMTMxMTEyOWIwOTk4OWViZGI3MDMxMGRmNWVi
M2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZGluZyBmYXN0L2RvbS9I
VE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbCB0byBtYWMtd2syIFNraXBwZWQgbGlzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGYyYjE1MzVlOTI1NGRjZjZlOGQ2NzJlNzgxZDcxNTY4YzFhY2Q1MTYuLjJhNjFm
MGNjNTc5YmE0YmVkNjkwMmE1NzAyZGZkYWI5MWVlZDBkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAxMS0wNC0wMiAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJr
aXQgaWdub3JlcyBQZ1VwL1BnRG93bi9Ib21lL0VuZCBpbiBTRUxFQ1QgdGFnIG9iamVjdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjU4CisKKyAg
ICAgICAgVGVzdDogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAorCisgICAgICAgICog
ZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFZhbGlkSW5kZXgp
OiBNb3ZlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZmlsZSB0byBiZSB1c2VkIGJ5IG90aGVyIHJv
dXRpbmVzLgorICAgICAgICAoV2ViQ29yZTo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdh
eSk6IFJldHVybnMgYSBzZWxlY3RhYmxlIGluZGV4IG9uZSBwYWdlIGF3YXkgZnJvbSB0aGUgZ2l2
ZW4gaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCk6IElt
cGxlbWVudGVkIHdpdGggbmV4dFZhbGlkSW5kZXguCisgICAgICAgIEFuZCBjb252ZXJ0ZWQgdG8g
YSBub3JtYWwgc3RhdGljIGZ1bmN0aW9uIGZyb20gYSBwcml2YXRlIGZ1bmN0aW9uIG9mIFNlbGVj
dEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgp
OiBJbXBsZW1lbnRlZCB3aXRoIG5leHRWYWxpZEluZGV4LgorICAgICAgICBBbmQgY29udmVydGVk
IHRvIGEgbm9ybWFsIHN0YXRpYyBmdW5jdGlvbiBmcm9tIGEgcHJpdmF0ZSBmdW5jdGlvbiBvZiBT
ZWxlY3RFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4
KTogUmV0dXJucyB0aGUgZmlyc3Qgc2VsZWN0YWJsZSBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6
Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KTogUmV0dXJucyB0aGUgbGFzdCBzZWxlY3RhYmxlIGlu
ZGV4LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZl
bnRIYW5kbGVyKTogQ29udmVydGVkIGZyb20gQyBjYXN0IHRvIEMrKyBjYXN0LgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIpOiBBZGRz
IHN1cHBvcnQgZm9yIFBhZ2VVcC9QYWdlRG93bi9Ib21lL0VuZCB3aXRoIGJvdGggc2luZ2xlIGFu
ZCBtdWx0aXBsZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6KTogUmVtb3ZlIG5leHRTZWxlY3RhYmxl
TGlzdEluZGV4KCkgYW5kIHByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleCgpLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDogTWFrZXMgUmVuZGVyTGlzdEJveDo6c2l6ZSBw
dWJsaWMgc28gdGhhdCBQYWdlVXAvUGFnZURvd24gYmVoYXZpb3IgY2FuIHVzZSB0aGUgYWN0dWFs
IGxpc3Qgc2l6ZSByYXRoZXIgdGhhbiB0aGF0IHNwZWNpZmllZCBpbiBIVE1MLgorICAgICAgICBU
aGV5IGNhbiBkaWZmZXIgZHVlIHRvIHRoZSBtaW5pbXVtIHNpemUgaW1wb3NlZCBieSBSZW5kZXJM
aXN0Qm94LgorCiAyMDExLTAzLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGNvcnJlY3Rpb24gYWZ0ZXIgcjgyNDk2LiAo
UGFydCAzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDE1YzY5YWRjNjQ2
NWFmMzJhMTcyNjlkYTJjZDAzZmFiMGVmZjc5NmMuLmEwOTkwY2Y2MDYwNmEwZjg0ODc2YzE5MGUw
MTUyOWUwMWZmNjU1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKQEAgLTcw
LDYgKzcwLDcyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IERPTVRpbWVT
dGFtcCB0eXBlQWhlYWRUaW1lb3V0ID0gMTAwMDsKIAorZW51bSBTa2lwRGlyZWN0aW9uIHsKKyAg
ICBTa2lwQmFja3dhcmRzID0gLTEsCisgICAgU2tpcEZvcndhcmRzID0gMQorfTsKKworLy8gUmV0
dXJucyB0aGUgMXN0IHZhbGlkIGl0ZW0gfHNraXB8IGl0ZW1zIGZyb20gfGxpc3RJbmRleHwgaW4g
ZGlyZWN0aW9uIHxkaXJlY3Rpb258IGlmIHRoZXJlIGlzIG9uZS4KKy8vIE90aGVyd2lzZSwgaXQg
cmV0dXJucyB0aGUgdmFsaWQgaXRlbSBjbG9zZXN0IHRvIHRoYXQgYm91bmRhcnkgd2hpY2ggaXMg
cGFzdCB8bGlzdEluZGV4fCBpZiB0aGVyZSBpcyBvbmUuCisvLyBPdGhlcndpc2UsIGl0IHJldHVy
bnMgfGxpc3RJbmRleHwuCisvLyBWYWxpZCBtZWFucyB0aGF0IGl0IGlzIGVuYWJsZWQgYW5kIGFu
IG9wdGlvbiBlbGVtZW50Lgorc3RhdGljIGludCBuZXh0VmFsaWRJbmRleChjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0
aW9uLCBpbnQgc2tpcCkKK3sKKyAgICBBU1NFUlQoZGlyZWN0aW9uID09IC0xIHx8IGRpcmVjdGlv
biA9PSAxKTsKKyAgICBpbnQgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAgICBpbnQgc2l6
ZSA9IGxpc3RJdGVtcy5zaXplKCk7CisgICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBs
aXN0SW5kZXggPj0gMCAmJiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9u
KSB7CisgICAgICAgIC0tc2tpcDsKKyAgICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+
ZGlzYWJsZWQoKSAmJiBpc09wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7Cisg
ICAgICAgICAgICBsYXN0R29vZEluZGV4ID0gbGlzdEluZGV4OworICAgICAgICAgICAgaWYgKHNr
aXAgPD0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gbGFzdEdvb2RJbmRleDsKK30KKworc3RhdGljIGludCBuZXh0U2VsZWN0YWJsZUxpc3RJ
bmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0YXJ0
SW5kZXgpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGRhdGEubGlzdEl0ZW1zKGVsZW1l
bnQpLCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOworfQorCitzdGF0aWMgaW50IHByZXZp
b3VzU2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCog
ZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGRh
dGEubGlzdEl0ZW1zKGVsZW1lbnQpLCBzdGFydEluZGV4LCBTa2lwQmFja3dhcmRzLCAxKTsKK30K
Kworc3RhdGljIGludCBmaXJzdFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
aXRlbXMgPSBkYXRhLmxpc3RJdGVtcyhlbGVtZW50KTsKKyAgICBpbnQgaW5kZXggPSBuZXh0VmFs
aWRJbmRleChpdGVtcywgaXRlbXMuc2l6ZSgpLCBTa2lwQmFja3dhcmRzLCBJTlRfTUFYKTsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA9PSBpdGVtcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3N0YXRpYyBpbnQgbGFzdFNl
bGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQp
LCAtMSwgU2tpcEZvcndhcmRzLCBJTlRfTUFYKTsKK30KKworLy8gUmV0dXJucyB0aGUgaW5kZXgg
b2YgdGhlIG5leHQgdmFsaWQgaXRlbSBvbmUgcGFnZSBhd2F5IGZyb20gfHN0YXJ0SW5kZXh8IGlu
IGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KK3N0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXhQYWdlQXdheShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50
IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgLy8gQ2Fu
J3QgdXNlIGRhdGEtPnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmltdW0gc2l6
ZS4KKyAgICBpbnQgcGFnZVNpemUgPSAwOworICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpLT5p
c0xpc3RCb3goKSkKKyAgICAgICAgcGFnZVNpemUgPSB0b1JlbmRlckxpc3RCb3goZWxlbWVudC0+
cmVuZGVyZXIoKSktPnNpemUoKSAtIDE7IC8vIC0xIHNvIHdlIHN0aWxsIHNob3cgY29udGV4dAor
CisgICAgLy8gT25lIHBhZ2UgYXdheSwgYnV0IG5vdCBvdXRzaWRlIHZhbGlkIGJvdW5kcy4KKyAg
ICAvLyBJZiB0aGVyZSBpcyBhIHZhbGlkIG9wdGlvbiBpdGVtIG9uZSBwYWdlIGF3YXksIHRoZSBp
bmRleCBpcyBjaG9zZW4uCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhhY3Qgb25lIHBhZ2UgYXdh
eSB2YWxpZCBvcHRpb24sIHJldHVybnMgc3RhcnRJbmRleCBvciB0aGUgbW9zdCBmYXIgaW5kZXgu
CisgICAgaW50IGVkZ2VJbmRleCA9IChkaXJlY3Rpb24gPT0gU2tpcEZvcndhcmRzKSA/IDAgOiAo
aXRlbXMuc2l6ZSgpIC0gMSk7CisgICAgaW50IHNraXBBbW91bnQgPSBwYWdlU2l6ZSArICgoZGly
ZWN0aW9uID09IFNraXBGb3J3YXJkcykgPyBzdGFydEluZGV4IDogKGVkZ2VJbmRleCAtIHN0YXJ0
SW5kZXgpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGVkZ2VJbmRleCwgZGly
ZWN0aW9uLCBza2lwQW1vdW50KTsKK30KKwogdm9pZCBTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwo
U2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJU
KCFkYXRhLnVzZXNNZW51TGlzdCgpKTsKQEAgLTEwNCwzMCArMTcwLDYgQEAgdm9pZCBTZWxlY3RF
bGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCkKICAgICB9CiB9CiAKLWludCBTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50
IHN0YXJ0SW5kZXgpCi17Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBkYXRh
Lmxpc3RJdGVtcyhlbGVtZW50KTsKLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4ICsgMTsKLSAg
ICB3aGlsZSAoaW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6ZSgpICYm
ICghaXNPcHRpb25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxl
ZCgpKSkKLSAgICAgICAgKytpbmRleDsKLSAgICBpZiAoKHVuc2lnbmVkKSBpbmRleCA9PSBpdGVt
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBzdGFydEluZGV4OwotICAgIHJldHVybiBpbmRleDsK
LX0KLQotaW50IFNlbGVjdEVsZW1lbnQ6OnByZXZpb3VzU2VsZWN0YWJsZUxpc3RJbmRleChTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgaW50IHN0YXJ0SW5kZXgpCi17
Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBkYXRhLmxpc3RJdGVtcyhlbGVt
ZW50KTsKLSAgICBpZiAoc3RhcnRJbmRleCA9PSAtMSkKLSAgICAgICAgc3RhcnRJbmRleCA9IGl0
ZW1zLnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4IC0gMTsKLSAgICB3aGlsZSAo
aW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGluZGV4IDwgaXRlbXMuc2l6ZSgpICYmICghaXNPcHRp
b25FbGVtZW50KGl0ZW1zW2luZGV4XSkgfHwgaXRlbXNbaW5kZXhdLT5kaXNhYmxlZCgpKSkKLSAg
ICAgICAgLS1pbmRleDsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBzdGFy
dEluZGV4OwotICAgIHJldHVybiBpbmRleDsKLX0KLQogdm9pZCBTZWxlY3RFbGVtZW50OjpzZXRB
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVu
dCogZWxlbWVudCwgaW50IGluZGV4KQogewogICAgIGRhdGEuc2V0QWN0aXZlU2VsZWN0aW9uQW5j
aG9ySW5kZXgoaW5kZXgpOwpAQCAtNTE1LDI3ICs1NTcsNiBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6
OnJlc2V0KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogICAgIHNl
dE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihkYXRhLCBlbGVtZW50KTsKICAgICBlbGVtZW50LT5z
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9Ci0gICAgCi1lbnVtIFNraXBEaXJlY3Rpb24gewotICAg
IFNraXBCYWNrd2FyZHMgPSAtMSwKLSAgICBTa2lwRm9yd2FyZHMgPSAxCi19OwotCi0vLyBSZXR1
cm5zIHRoZSBpbmRleCBvZiB0aGUgbmV4dCB2YWxpZCBsaXN0IGl0ZW0gfHNraXB8IGl0ZW1zIHBh
c3QgfGxpc3RJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258Lgotc3RhdGljIGludCBuZXh0
VmFsaWRJbmRleChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMsIGludCBsaXN0SW5k
ZXgsIFNraXBEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQgc2tpcCkKLXsKLSAgICBpbnQgbGFzdEdv
b2RJbmRleCA9IGxpc3RJbmRleDsKLSAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5zaXplKCk7Ci0g
ICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAmJiBsaXN0SW5k
ZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7Ci0gICAgICAgIC0tc2tpcDsKLSAg
ICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+ZGlzYWJsZWQoKSAmJiBpc09wdGlvbkVs
ZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7Ci0gICAgICAgICAgICBsYXN0R29vZEluZGV4
ID0gbGlzdEluZGV4OwotICAgICAgICAgICAgaWYgKHNraXAgPD0gMCkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbGFzdEdvb2RJbmRleDsKLX0K
IAogdm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0
RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiBldmVudCwgSFRNTEZv
cm1FbGVtZW50KiBodG1sRm9ybSkKIHsKQEAgLTU5NCw4ICs2MTUsOCBAQCB2b2lkIFNlbGVjdEVs
ZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0
YSwgRWxlbWVudAogICAgICAgICAgICAgbGlzdEluZGV4ID0gbmV4dFZhbGlkSW5kZXgobGlzdEl0
ZW1zLCBsaXN0SXRlbXMuc2l6ZSgpLCBTa2lwQmFja3dhcmRzLCAxKTsKICAgICAgICAgICAgIGhh
bmRsZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaGFuZGxlZCAm
JiBsaXN0SW5kZXggPj0gMCAmJiAodW5zaWduZWQpbGlzdEluZGV4IDwgbGlzdEl0ZW1zLnNpemUo
KSkKKworICAgICAgICBpZiAoaGFuZGxlZCAmJiBsaXN0SW5kZXggPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGlzdEluZGV4KSA8IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgICAgICBz
ZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4KGRhdGEsIGVs
ZW1lbnQsIGxpc3RJbmRleCkpOwogCiAgICAgICAgIGlmIChoYW5kbGVkKQpAQCAtNzYwLDE5ICs3
ODEsNDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihT
ZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCoKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRF
dmVudCo+KGV2ZW50KS0+a2V5SWRlbnRpZmllcigpOwogCi0gICAgICAgIGludCBlbmRJbmRleCA9
IDA7ICAgICAgICAKKyAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgIGludCBl
bmRJbmRleCA9IDA7CiAgICAgICAgIGlmIChkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCkg
PCAwKSB7CiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBlbmQgaW5kZXgKLSAgICAgICAg
ICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikKLSAgICAgICAgICAgICAgICBlbmRJbmRl
eCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGxhc3RTZWxlY3RlZExp
c3RJbmRleChkYXRhLCBlbGVtZW50KSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlm
aWVyID09ICJVcCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFi
bGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVu
dCwgc2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50KSkpOworICAgICAgICAgICAgaWYgKGtleUlk
ZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikgeworICAg
ICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0gbGFzdFNlbGVjdGVkTGlzdEluZGV4KGRhdGEs
IGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikKKyAgICAgICAgICAgICAgICAgICAgZW5k
SW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBzdGFydEluZGV4
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRhLCBlbGVtZW50LCBzdGFydEluZGV4
LCBTa2lwRm9yd2FyZHMpOworICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09
ICJVcCIgfHwga2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikgeworICAgICAgICAgICAgICAgIGlu
dCBzdGFydEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc2VsZWN0ZWRJ
bmRleChkYXRhLCBlbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikKKyAgICAgICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVu
dCwgc3RhcnRJbmRleCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVu
dCwgc3RhcnRJbmRleCwgU2tpcEJhY2t3YXJkcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBpbmRleCBiYXNlZCBvbiB0aGUgY3Vy
cmVudCBlbmQgaW5kZXgKLSAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikK
KyAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIikgewogICAgICAgICAgICAg
ICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0
YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGtleUlk
ZW50aWZpZXIgPT0gIlVwIikKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IHByZXZpb3VzU2Vs
ZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4KCkpOyAgICAKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKSB7CisgICAgICAgICAgICAgICAgZW5k
SW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZURvd24iKSB7
CisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VB
d2F5KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSwgU2tpcEZv
cndhcmRzKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiUGFnZVVwIikgeworICAgICAgICAgICAgICAgIGVu
ZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRhLCBlbGVtZW50LCBk
YXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCksIFNraXBCYWNrd2FyZHMpOworICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmIChrZXlJZGVudGlmaWVyID09ICJIb21lIikgeworICAgICAgICAgICAgZW5kSW5kZXggPSBm
aXJzdFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCk7CisgICAgICAgICAgICBoYW5k
bGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJFbmQiKSB7
CisgICAgICAgICAgICBlbmRJbmRleCA9IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVs
ZW1lbnQpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSkpCkBAIC03ODAsMTMgKzgyOSwxMyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hE
ZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KgogICAg
ICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkxlZnQiIHx8IGtleUlkZW50aWZpZXIgPT0g
IlJpZ2h0IiB8fCAoKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtleUlkZW50aWZpZXIgPT0g
IlVwIikgJiYgZW5kSW5kZXggPT0gZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRv
d24iIHx8IGtleUlkZW50aWZpZXIgPT0gIlVwIikgeworICAgICAgICBpZiAoZW5kSW5kZXggPj0g
MCAmJiBoYW5kbGVkKSB7CiAgICAgICAgICAgICAvLyBTYXZlIHRoZSBzZWxlY3Rpb24gc28gaXQg
Y2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdoZW4gZGlzcGF0Y2hpbmcgY2hh
bmdlIGV2ZW50cyBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIG5ldyBzZWxlY3Rpb24uCiAg
ICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbihkYXRhLCBlbGVtZW50KTsKIAotICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRl
eCA+PSAwICYmICh1bnNpZ25lZCkgZW5kSW5kZXggPCBsaXN0SXRlbXMuc2l6ZSgpKSk7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3RJdGVtcywgIWxpc3RJdGVtcy5zaXplKCkgfHwgKGVu
ZEluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZEluZGV4KSA8IGxpc3RJdGVt
cy5zaXplKCkpKTsKICAgICAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KGRhdGEs
IGVuZEluZGV4KTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBib29sIHNlbGVjdE5ld0l0
ZW0gPSAhZGF0YS5tdWx0aXBsZSgpIHx8IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCktPnNoaWZ0S2V5KCkgfHwgIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCkpOwogICAgICAgICAgICAgaWYgKHNlbGVjdE5ld0l0ZW0pCiAgICAg
ICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0RWxlbWVudC5oCmluZGV4IDIyMmExYmJjMWMyYTBjOWZhNjQ3OWZiMWRjMjIwYzFk
NWJjNGNiNTMuLmRkMDczYTI0ZTczNWYyZTMyMGJhMzIwYWY5NGFlMGMyNjY1MzZmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNzIsOCArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBzdGF0aWMgdm9pZCBzZWxlY3RBbGwoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7
CiAgICAgc3RhdGljIHZvaWQgc2F2ZUxhc3RTZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmLCBF
bGVtZW50Kik7Ci0gICAgc3RhdGljIGludCBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChTZWxlY3RF
bGVtZW50RGF0YSYsIEVsZW1lbnQqLCBpbnQgc3RhcnRJbmRleCk7Ci0gICAgc3RhdGljIGludCBw
cmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kiwg
aW50IHN0YXJ0SW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hv
ckluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBpbmRleCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBp
bnQgaW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oU2VsZWN0
RWxlbWVudERhdGEmLCBFbGVtZW50KiwgYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCAwZTJjZmQ2OGIzOGY2MDcw
NzJhOGYxZDIzY2YzNDE0NTllZTdmNzI2Li42MTBmNTVlODhlZGZkMjA2ODgxNWNkYmU2MmM3MWY1
MjU3YjBmZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAg
LTUzLDYgKzUzLDggQEAgcHVibGljOgogCiAgICAgaW50IHNjcm9sbFRvd2FyZChjb25zdCBJbnRQ
b2ludCYpOyAvLyBSZXR1cm5zIHRoZSBuZXcgaW5kZXggb3IgLTEgaWYgbm8gc2Nyb2xsIG9jY3Vy
cmVkCiAKKyAgICBpbnQgc2l6ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94IjsgfQog
CkBAIC0xMjUsNyArMTI3LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBpbnQgaXRlbUhlaWdodCgp
IGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCk7Ci0gICAg
aW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgbnVtVmlzaWJsZUl0ZW1zKCkgY29uc3Q7CiAgICAg
aW50IG51bUl0ZW1zKCkgY29uc3Q7CiAgICAgaW50IGxpc3RIZWlnaHQoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88359</attachid>
            <date>2011-04-05 20:50:21 -0700</date>
            <delta_ts>2011-04-06 11:39:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110405205019.patch</filename>
            <type>text/plain</type>
            <size>36973</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ3NGYwZDJjN2U2YzdlY2QxMTY1
M2M3ZTNlNDVkZDY5OTM1MjkwLi5iN2Y0ZGVlZGMwMTMxMTEyOWIwOTk4OWViZGI3MDMxMGRmNWVi
M2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZGluZyBmYXN0L2RvbS9I
VE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbCB0byBtYWMtd2syIFNraXBwZWQgbGlzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljMzE2MzUxN2E1MGVmZjYyN2QwMmRkMGFhOTVjNWVjN2M5MDY3ZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVj
dD4gZWxlbWVudHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdp
bGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBy
dW4td2Via2l0LXRlc3RzLgorCisgICAgCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAicGFnZURvd24iLCAwLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZURvd24iLCAyLCA1KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAicGFnZURvd24iLCAzLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3MiLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA2LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNiwgMykgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDUsIDIpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCA0LCAxKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMywgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDIsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAxLCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMCwgMCkgaXMgdHJ1ZQorUEFT
UyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgNCwgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAiZW5kIiwgMCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJwYWdlRG93biIsIDAsIDQpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgMiwgNSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDQsIDYpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgNiwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDcsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA2LCAyKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAy
LCAxKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIs
IDEsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVw
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQi
LCA3LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIs
IDYsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwg
NSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCA0
LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDMs
IDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMiwg
NikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAxLCA2
KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDAsIDYp
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBh
Z2VEb3duIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMg
dHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURv
d24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBd
KSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQs
IDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzcyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBb
MywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VVcCIsIFszXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwg
MiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
IiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywgNCwgNSwg
Nl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
ImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0
XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwg
InBhZ2VEb3duIiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0pIGlz
IHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdl
VXAiLCBbMSwgMl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJl
bmQiLCBbMSwgMiwgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkgaXMgdHJ1ZQorUEFTUyBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzQsIDUs
IDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAicGFnZURvd24iLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMiwgNF0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJw
YWdlVXAiLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUK
K1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEs
IDIsIDRdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
c2QiLCAiaG9tZSIsIFsxLCAyLCA0XSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDAsIDMpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAxLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgMiwgNCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDMsIDUpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNSwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDYsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNiwgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA1LCAzKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDQsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMywg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAy
LCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIs
IDEsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVw
IiwgMCwgMCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgwNGZhMTQ2OTRhMDYyNjFiNWVjZTJjZGViNzRlNTAxNTA1YWY4YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5o
dG1sCkBAIC0wLDAgKzEsMzA2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9t
ZS9FbmQvUGFnZVVwL1BhZ2VEb3duIGtleXMgd29yayBjb3JyZWN0bHkgZm9yICZsdDtzZWxlY3Qm
Z3Q7IGVsZW1lbnRzLgorU2luY2UgaXQgcmVxdWlyZXMgPENPREU+ZXZlbnRTZW5kZXIua2V5RG93
bjwvQ09ERT4sIGl0IHdpbGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVz
dCBiZSBydW4gd2l0aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorPGhyPgorPGZv
cm0+CisgICAgIDwhLS0gV2Ugc3BlY2lmeSBhIHNpemUgb2YgMyBidXQgd2lsbCBlbmQgdXAgcmVu
ZGVyaW5nIHdpdGggNCBiZWNhdXNlIHdlYmtpdCBpbXBvc2VzIGEgbWluaW11bSBzaXplIG9mIDQu
CisgICAgIEl0IGlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgaGFuZGxlcyB0aGlz
IGNhc2UgIC0tPgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0IiBpZD0ic3MiIHNpemU9
IjMiIG11bHRpcGxlPSJ0cnVlIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlv
bj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlv
biB2YWx1ZT0iMiI+MiA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+MyA8L29w
dGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iNSI+NSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8
L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8c2VsZWN0IG5hbWU9InNpbmdsZXNlbGVjdHdp
dGhkaXNhYmxlZCIgaWQ9InNzZCIgc2l6ZT0iNCIgbXVsdGlwbGU9ImZhbHNlIj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iMCIgZGlzYWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgIDxv
cHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIg
PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0cnVlIj4zIDwv
b3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40IDwvb3B0aW9uPgorICAgICAgICA8
b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42
IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI3IiBkaXNhYmxlZCA9ICJ0cnVlIj43
IDwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0
d2l0aGdyb3VwIiBpZD0ic3NnIiBzaXplPSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICA8
b3B0Z3JvdXAgbGFiZWw9ImdwMCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj4wIDwv
b3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAg
ICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+
CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AxIj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjMiPjMgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AyIj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3Jv
dXA+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+
Cis8L2Zvcm0+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworfQorCitmdW5jdGlv
biBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlhbEluZGV4LCBleHBl
Y3RlZEluZGV4KSB7CisgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNl
bGVjdElkKTsKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5mb2N1cygp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gaW5pdGlhbEluZGV4OworICAgIGlmIChzZWxl
Y3Quc2VsZWN0ZWRJbmRleCAhPSBpbml0aWFsSW5kZXgpIHsKKyAgICAgICAgbG9nKCJjYW4ndCBz
ZXQgc2VsZWN0ZWRJbmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5z
ZWxlY3RlZEluZGV4ICsgJyknKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKGtleSk7CisgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4cGVjdGVkSW5kZXgp
IHsKKyAgICAgICAgbG9nKCdzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAnICsgZXhwZWN0ZWRJbmRl
eCArICcgKGlzICcgKyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpIGFmdGVyIGEgJyArIGtleSAr
ICcgZnJvbSBpbmRleCAnICsgaW5pdGlhbEluZGV4KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXF1YWxBcnJheXMoYTEsIGEy
KSB7CisgICAgaWYgKGExLmxlbmd0aCAhPSBhMi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYTEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGEx
W2ldICE9IGEyW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZHVtcEFycmF5KGEpIHsKKyAgICBzID0gIlsiOworICAg
IGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHMgPSBzICsgYVtpXTsK
KyAgICAgICAgaWYgKGkgPCBhLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgcyA9IHMgKyAiLCAi
OworICAgIH0KKyAgICByZXR1cm4gcyArICJdIjsKK30KKworZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJ
bmRpY2VzKHNlbGVjdCkgeworICAgIG5vd1NlbGVjdGVkID0gW107CisgICAgZm9yIChpID0gMDsg
aSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoc2VsZWN0Lm9wdGlv
bnNbaV0uc2VsZWN0ZWQpCisgICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAg
cmV0dXJuIG5vd1NlbGVjdGVkOworfQorCitmdW5jdGlvbiBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAg
ICAgIHNlbGVjdC5vcHRpb25zW2ldLnNlbGVjdGVkID0gZmFsc2U7Cit9CisKKy8vIGV4cGVjdGVk
SW5kaWNlcyBzaG91bGQgYmUgaW4gc29ydGVkIG9yZGVyCitmdW5jdGlvbiBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcyhzZWxlY3RJZCwga2V5LCBleHBlY3RlZEluZGljZXMpIHsKKyAg
ICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOworICAgIHNl
bGVjdC5mb2N1cygpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBbInNoaWZ0S2V5Il0pOworICAgIG5vd1NlbGVj
dGVkID0gZ2V0U2VsZWN0ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgaWYgKCFlcXVhbEFycmF5cyhu
b3dTZWxlY3RlZCwgZXhwZWN0ZWRJbmRpY2VzKSkgeworICAgICAgICBsb2coJ3NlbGVjdGVkIGlu
ZGljZXMgc2hvdWxkIGJlICcgKyBkdW1wQXJyYXkoZXhwZWN0ZWRJbmRpY2VzKSArICcgKGlzICcg
KworICAgICAgICAgICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcpIGFmdGVyIGEgJyArIGtl
eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIHRlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRC
ZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDAsIDMpJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIs
IDEsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJz
cyIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDMsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDQsIDYpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93
biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdFBh
Z2VVcE5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJwYWdlVXAiLCA2LCAzKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNSwgMiknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDQsIDEpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdl
VXAiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDEsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAwLCAwKScsICd0cnVl
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNo
b3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUs
IDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJob21lIiwgNCwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAw
KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVu
ZCIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJlbmQiLCA0LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMCwg
NiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVt
ZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFn
ZURvd24iLCAwLCA0KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3NkIiwgInBhZ2VEb3duIiwgMSwgNCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA0
LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Nk
IiwgInBhZ2VEb3duIiwgNSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA3LCA2KScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpIHsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywg
NCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIs
ICJwYWdlVXAiLCA2LCAyKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAyLCAx
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
InBhZ2VVcCIsIDEsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZVVwIiwgMCwgMSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0
ZXN0SG9tZVdpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNiwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNSwgMSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJo
b21lIiwgNCwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJob21lIiwgMywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMiwgMSknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMSwgMSknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMCwg
MSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMo
KSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDcs
IDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2Qi
LCAiZW5kIiwgNiwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJlbmQiLCA1LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAyLCA2
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
ImVuZCIsIDEsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2QiLCAiZW5kIiwgMCwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0VmFy
aW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICB2YXIgc2VsZWN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNzIik7CisgICAgc2VsZWN0LmZvY3VzKCk7CisgICAgY2xl
YXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDA7CisKKyAg
ICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VE
b3duIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1
LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
InBhZ2VVcCIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3Mi
LCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
J3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzBdKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKScsICd0cnVlJyk7CisKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMzsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzNdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAy
LCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywg
NCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFsw
LCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworfQor
CitmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAgc2Vs
ZWN0LmZvY3VzKCk7CisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9IDE7CisKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3du
IiwgWzEsIDIsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0p
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlVXAiLCBbMV0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlm
dEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAiaG9tZSIsIFsxXSknLCAndHJ1ZScpOworCisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsK
KyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDQ7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlRG93biIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsyLCA0XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNl
cygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgImhvbWUiLCBbMSwgMiwgNF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEsIDIsIDRdKScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhHcm91cCgpIHsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAwLCAzKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VE
b3duIiwgMSwgMyknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDIsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAzLCA1KScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNCwg
NiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIs
ICJwYWdlRG93biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA2LCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RQYWdlVXBXaXRoR3JvdXAoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDYsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNSwgMyknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA0LCAy
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwg
InBhZ2VVcCIsIDMsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAxLCAwKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDAsIDAp
JywgJ3RydWUnKTsKK30KKwordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0
UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygp
OwordGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aERpc2FibGVk
RWxlbWVudHMoKTsKK3Rlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEhvbWVX
aXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7Cit0
ZXN0VmFyaW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFZhcmlvdXNTaGlm
dEtleXNXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aEdyb3VwKCk7Cit0
ZXN0UGFnZVVwV2l0aEdyb3VwKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PiAKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMmIx
NTM1ZTkyNTRkY2Y2ZThkNjcyZTc4MWQ3MTU2OGMxYWNkNTE2Li4yYTYxZjBjYzU3OWJhNGJlZDY5
MDJhNTcwMmRmZGFiOTFlZWQwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEt
MDQtMDIgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdV
cC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VMRUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1OAorCisgICAgICAgIFRlc3Q6IGZh
c3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogTW92ZWQgZnJvbSBl
bHNld2hlcmUgaW4gdGhlIGZpbGUgdG8gYmUgdXNlZCBieSBvdGhlciByb3V0aW5lcy4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBSZXR1cm5zIGEg
c2VsZWN0YWJsZSBpbmRleCBvbmUgcGFnZSBhd2F5IGZyb20gdGhlIGdpdmVuIGluZGV4LgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgpOiBJbXBsZW1lbnRlZCB3aXRo
IG5leHRWYWxpZEluZGV4LgorICAgICAgICBBbmQgY29udmVydGVkIHRvIGEgbm9ybWFsIHN0YXRp
YyBmdW5jdGlvbiBmcm9tIGEgcHJpdmF0ZSBmdW5jdGlvbiBvZiBTZWxlY3RFbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KTogSW1wbGVtZW50ZWQg
d2l0aCBuZXh0VmFsaWRJbmRleC4KKyAgICAgICAgQW5kIGNvbnZlcnRlZCB0byBhIG5vcm1hbCBz
dGF0aWMgZnVuY3Rpb24gZnJvbSBhIHByaXZhdGUgZnVuY3Rpb24gb2YgU2VsZWN0RWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhl
IGZpcnN0IHNlbGVjdGFibGUgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpsYXN0U2VsZWN0YWJs
ZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGxhc3Qgc2VsZWN0YWJsZSBpbmRleC4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6IENv
bnZlcnRlZCBmcm9tIEMgY2FzdCB0byBDKysgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkcyBzdXBwb3J0IGZvciBQ
YWdlVXAvUGFnZURvd24vSG9tZS9FbmQgd2l0aCBib3RoIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2Vs
ZWN0aW9uLgorCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdEVsZW1lbnQ6Oik6IFJlbW92ZSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGFu
ZCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoKS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94Lmg6IE1ha2VzIFJlbmRlckxpc3RCb3g6OnNpemUgcHVibGljIHNvIHRoYXQg
UGFnZVVwL1BhZ2VEb3duIGJlaGF2aW9yIGNhbiB1c2UgdGhlIGFjdHVhbCBsaXN0IHNpemUgcmF0
aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gSFRNTC4KKyAgICAgICAgVGhleSBjYW4gZGlmZmVy
IGR1ZSB0byB0aGUgbWluaW11bSBzaXplIGltcG9zZWQgYnkgUmVuZGVyTGlzdEJveC4KKwogMjAx
MS0wMy0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBjb3JyZWN0aW9uIGFmdGVyIHI4MjQ5Ni4gKFBhcnQgMykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAppbmRleCAxNWM2OWFkYzY0NjVhZjMyYTE3MjY5ZGEy
Y2QwM2ZhYjBlZmY3OTZjLi5hMDk5MGNmNjA2MDZhMGY4NDg3NmMxOTBlMDE1MjllMDFmZjY1NTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3MiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFk
VGltZW91dCA9IDEwMDA7CiAKK2VudW0gU2tpcERpcmVjdGlvbiB7CisgICAgU2tpcEJhY2t3YXJk
cyA9IC0xLAorICAgIFNraXBGb3J3YXJkcyA9IDEKK307CisKKy8vIFJldHVybnMgdGhlIDFzdCB2
YWxpZCBpdGVtIHxza2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGly
ZWN0aW9ufCBpZiB0aGVyZSBpcyBvbmUuCisvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZh
bGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRl
eHwgaWYgdGhlcmUgaXMgb25lLgorLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8
LgorLy8gVmFsaWQgbWVhbnMgdGhhdCBpdCBpcyBlbmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVu
dC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlz
dEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXAp
Cit7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAtMSB8fCBkaXJlY3Rpb24gPT0gMSk7CisgICAg
aW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMu
c2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAg
JiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAt
LXNraXA7CisgICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYg
aXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFz
dEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29k
SW5kZXg7Cit9CisKK3N0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxl
bWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQoreworICAg
IHJldHVybiBuZXh0VmFsaWRJbmRleChkYXRhLmxpc3RJdGVtcyhlbGVtZW50KSwgc3RhcnRJbmRl
eCwgU2tpcEZvcndhcmRzLCAxKTsKK30KKworc3RhdGljIGludCBwcmV2aW91c1NlbGVjdGFibGVM
aXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBz
dGFydEluZGV4KQoreworICAgIHJldHVybiBuZXh0VmFsaWRJbmRleChkYXRhLmxpc3RJdGVtcyhl
bGVtZW50KSwgc3RhcnRJbmRleCwgU2tpcEJhY2t3YXJkcywgMSk7Cit9CisKK3N0YXRpYyBpbnQg
Zmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50
KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5s
aXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMs
IGl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgSU5UX01BWCk7CisgICAgaWYgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbmRleCkgPT0gaXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gLTE7
CisgICAgcmV0dXJuIGluZGV4OworfQorCitzdGF0aWMgaW50IGxhc3RTZWxlY3RhYmxlTGlzdElu
ZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJl
dHVybiBuZXh0VmFsaWRJbmRleChkYXRhLmxpc3RJdGVtcyhlbGVtZW50KSwgLTEsIFNraXBGb3J3
YXJkcywgSU5UX01BWCk7Cit9CisKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IHZh
bGlkIGl0ZW0gb25lIHBhZ2UgYXdheSBmcm9tIHxzdGFydEluZGV4fCBpbiBkaXJlY3Rpb24gfGRp
cmVjdGlvbnwuCitzdGF0aWMgaW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoU2Vs
ZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4LCBT
a2lwRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBp
dGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpOworICAgIC8vIENhbid0IHVzZSBkYXRhLT5z
aXplKCkgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMgYSBtaW5pbXVtIHNpemUuCisgICAgaW50IHBh
Z2VTaXplID0gMDsKKyAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNMaXN0Qm94KCkpCisg
ICAgICAgIHBhZ2VTaXplID0gdG9SZW5kZXJMaXN0Qm94KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5z
aXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGlsbCBzaG93IGNvbnRleHQKKworICAgIC8vIE9uZSBw
YWdlIGF3YXksIGJ1dCBub3Qgb3V0c2lkZSB2YWxpZCBib3VuZHMuCisgICAgLy8gSWYgdGhlcmUg
aXMgYSB2YWxpZCBvcHRpb24gaXRlbSBvbmUgcGFnZSBhd2F5LCB0aGUgaW5kZXggaXMgY2hvc2Vu
LgorICAgIC8vIElmIHRoZXJlIGlzIG5vIGV4YWN0IG9uZSBwYWdlIGF3YXkgdmFsaWQgb3B0aW9u
LCByZXR1cm5zIHN0YXJ0SW5kZXggb3IgdGhlIG1vc3QgZmFyIGluZGV4LgorICAgIGludCBlZGdl
SW5kZXggPSAoZGlyZWN0aW9uID09IFNraXBGb3J3YXJkcykgPyAwIDogKGl0ZW1zLnNpemUoKSAt
IDEpOworICAgIGludCBza2lwQW1vdW50ID0gcGFnZVNpemUgKyAoKGRpcmVjdGlvbiA9PSBTa2lw
Rm9yd2FyZHMpID8gc3RhcnRJbmRleCA6IChlZGdlSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAg
cmV0dXJuIG5leHRWYWxpZEluZGV4KGl0ZW1zLCBlZGdlSW5kZXgsIGRpcmVjdGlvbiwgc2tpcEFt
b3VudCk7Cit9CisKIHZvaWQgU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKFNlbGVjdEVsZW1lbnRE
YXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVCghZGF0YS51c2VzTWVu
dUxpc3QoKSk7CkBAIC0xMDQsMzAgKzE3MCw2IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2F2ZUxh
c3RTZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgfQogfQogCi1pbnQgU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2Vs
ZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQot
ewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxl
bWVudCk7Ci0gICAgaW50IGluZGV4ID0gc3RhcnRJbmRleCArIDE7Ci0gICAgd2hpbGUgKGluZGV4
ID49IDAgJiYgKHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAmJiAoIWlzT3B0aW9uRWxl
bWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJsZWQoKSkpCi0gICAgICAg
ICsraW5kZXg7Ci0gICAgaWYgKCh1bnNpZ25lZCkgaW5kZXggPT0gaXRlbXMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICByZXR1cm4gaW5kZXg7Ci19Ci0KLWludCBTZWxl
Y3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQotewotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAgaWYg
KHN0YXJ0SW5kZXggPT0gLTEpCi0gICAgICAgIHN0YXJ0SW5kZXggPSBpdGVtcy5zaXplKCk7Ci0g
ICAgaW50IGluZGV4ID0gc3RhcnRJbmRleCAtIDE7Ci0gICAgd2hpbGUgKGluZGV4ID49IDAgJiYg
KHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAmJiAoIWlzT3B0aW9uRWxlbWVudChpdGVt
c1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJsZWQoKSkpCi0gICAgICAgIC0taW5kZXg7
Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICBy
ZXR1cm4gaW5kZXg7Ci19Ci0KIHZvaWQgU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGlu
dCBpbmRleCkKIHsKICAgICBkYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGluZGV4
KTsKQEAgLTUxNSwyNyArNTU3LDYgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpyZXNldChTZWxlY3RF
bGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKICAgICBzZXRPcHRpb25zQ2hhbmdl
ZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQotICAgIAotZW51bSBTa2lwRGlyZWN0aW9uIHsKLSAgICBTa2lwQmFja3dhcmRz
ID0gLTEsCi0gICAgU2tpcEZvcndhcmRzID0gMQotfTsKLQotLy8gUmV0dXJucyB0aGUgaW5kZXgg
b2YgdGhlIG5leHQgdmFsaWQgbGlzdCBpdGVtIHxza2lwfCBpdGVtcyBwYXN0IHxsaXN0SW5kZXh8
IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KLXN0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0
aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCi17Ci0gICAgaW50IGxhc3RHb29kSW5kZXggPSBsaXN0
SW5kZXg7Ci0gICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOwotICAgIGZvciAobGlzdElu
ZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlz
dEluZGV4ICs9IGRpcmVjdGlvbikgewotICAgICAgICAtLXNraXA7Ci0gICAgICAgIGlmICghbGlz
dEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYgaXNPcHRpb25FbGVtZW50KGxpc3RJdGVt
c1tsaXN0SW5kZXhdKSkgewotICAgICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsK
LSAgICAgICAgICAgIGlmIChza2lwIDw9IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxhc3RHb29kSW5kZXg7Ci19CiAKIHZvaWQgU2VsZWN0
RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBk
YXRhLCBFbGVtZW50KiBlbGVtZW50LCBFdmVudCogZXZlbnQsIEhUTUxGb3JtRWxlbWVudCogaHRt
bEZvcm0pCiB7CkBAIC01OTQsOCArNjE1LDggQEAgdm9pZCBTZWxlY3RFbGVtZW50OjptZW51TGlz
dERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQKICAg
ICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcywgbGlzdEl0ZW1z
LnNpemUoKSwgU2tpcEJhY2t3YXJkcywgMSk7CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49
IDAgJiYgKHVuc2lnbmVkKWxpc3RJbmRleCA8IGxpc3RJdGVtcy5zaXplKCkpCisKKyAgICAgICAg
aWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxp
c3RJbmRleCkgPCBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRl
eChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50LCBsaXN0SW5k
ZXgpKTsKIAogICAgICAgICBpZiAoaGFuZGxlZCkKQEAgLTc2MCwxOSArNzgxLDQ3IEBAIHZvaWQg
U2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERh
dGEmIGRhdGEsIEVsZW1lbnQqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbnN0IFN0
cmluZyYga2V5SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCkt
PmtleUlkZW50aWZpZXIoKTsKIAotICAgICAgICBpbnQgZW5kSW5kZXggPSAwOyAgICAgICAgCisg
ICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICBpbnQgZW5kSW5kZXggPSAwOwog
ICAgICAgICBpZiAoZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpIDwgMCkgewogICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5kIGluZGV4Ci0gICAgICAgICAgICBpZiAoa2V5SWRl
bnRpZmllciA9PSAiRG93biIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0
YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBsYXN0U2VsZWN0ZWRMaXN0SW5kZXgoZGF0YSwg
ZWxlbWVudCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiKQot
ICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRh
dGEsIGVsZW1lbnQsIG9wdGlvblRvTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIHNlbGVjdGVkSW5k
ZXgoZGF0YSwgZWxlbWVudCkpKTsKKyAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJE
b3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJQYWdlRG93biIpIHsKKyAgICAgICAgICAgICAgICBp
bnQgc3RhcnRJbmRleCA9IGxhc3RTZWxlY3RlZExpc3RJbmRleChkYXRhLCBlbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5SWRl
bnRpZmllciA9PSAiRG93biIpCisgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNl
bGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgc3RhcnRJbmRleCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxl
TGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgc3RhcnRJbmRleCwgU2tpcEZvcndhcmRz
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiVXAiIHx8IGtleUlk
ZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9
IG9wdGlvblRvTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxl
bWVudCkpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCisgICAgICAgICAgICAgICAgICAgIGVuZEluZGV4
ID0gcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIHN0YXJ0SW5kZXgp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBu
ZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGRhdGEsIGVsZW1lbnQsIHN0YXJ0SW5kZXgs
IFNraXBCYWNrd2FyZHMpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQgb24gdGhlIGN1cnJlbnQgZW5kIGluZGV4
Ci0gICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpCisgICAgICAgICAgICBp
ZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpIHsKICAgICAgICAgICAgICAgICBlbmRJbmRleCA9
IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0
aW9uRW5kSW5kZXgoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09ICJV
cCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5k
ZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpKTsgICAgCisg
ICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtl
eUlkZW50aWZpZXIgPT0gIlVwIikgeworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlv
dXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9u
RW5kSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VEb3duIikgeworICAgICAgICAgICAg
ICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShkYXRhLCBlbGVt
ZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KCksIFNraXBGb3J3YXJkcyk7CisgICAg
ICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlk
ZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRT
ZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleCgpLCBTa2lwQmFja3dhcmRzKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoa2V5SWRlbnRp
ZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGVuZEluZGV4ID0gZmlyc3RTZWxlY3RhYmxl
TGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSAiRW5kIikgeworICAgICAgICAgICAg
ZW5kSW5kZXggPSBsYXN0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50KTsKKyAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzU3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQpAQCAtNzgw
LDEzICs4MjksMTMgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFu
ZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCoKICAgICAgICAgICAgIGlmIChr
ZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIgfHwgKChr
ZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJVcCIpICYmIGVuZElu
ZGV4ID09IGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVu
dGlmaWVyID09ICJVcCIpIHsKKyAgICAgICAgaWYgKGVuZEluZGV4ID49IDAgJiYgaGFuZGxlZCkg
ewogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJl
ZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3BhdGNoaW5nIGNoYW5nZSBldmVudHMgaW1t
ZWRpYXRlbHkgYWZ0ZXIgbWFraW5nIHRoZSBuZXcgc2VsZWN0aW9uLgogICAgICAgICAgICAgc2F2
ZUxhc3RTZWxlY3Rpb24oZGF0YSwgZWxlbWVudCk7CiAKLSAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQobGlzdEl0ZW1zLCAhbGlzdEl0ZW1zLnNpemUoKSB8fCAoZW5kSW5kZXggPj0gMCAmJiAodW5z
aWduZWQpIGVuZEluZGV4IDwgbGlzdEl0ZW1zLnNpemUoKSkpOworICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6ZSgpIHx8IChlbmRJbmRleCA+PSAwICYm
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRJbmRleCkgPCBsaXN0SXRlbXMuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChkYXRhLCBlbmRJbmRleCk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgYm9vbCBzZWxlY3ROZXdJdGVtID0gIWRhdGEubXVs
dGlwbGUoKSB8fCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5zaGlmdEtleSgp
IHx8ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFt
ZSgpKTsKICAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJdGVtKQogICAgICAgICAgICAgICAgIGRh
dGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1l
bnQuaAppbmRleCAyMjJhMWJiYzFjMmEwYzlmYTY0NzlmYjFkYzIyMGMxZDViYzRjYjUzLi5kZDA3
M2EyNGU3MzVmMmUzMjBiYTMyMGFmOTRhZTBjMjY2NTM2Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxl
Y3RFbGVtZW50LmgKQEAgLTcyLDggKzcyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIHZv
aWQgc2VsZWN0QWxsKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2
b2lkIHNhdmVMYXN0U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwotICAg
IHN0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmLCBF
bGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwotICAgIHN0YXRpYyBpbnQgcHJldmlvdXNTZWxlY3Rh
YmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGludCBzdGFydEluZGV4
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChTZWxlY3RF
bGVtZW50RGF0YSYsIEVsZW1lbnQqLCBpbnQgaW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHNldEFj
dGl2ZVNlbGVjdGlvbkVuZEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwgaW50IGluZGV4KTsKICAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKFNlbGVjdEVsZW1lbnREYXRhJiwg
RWxlbWVudCosIGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMGUyY2ZkNjhiMzhmNjA3MDcyYThmMWQyM2NmMzQx
NDU5ZWU3ZjcyNi4uNjEwZjU1ZTg4ZWRmZDIwNjg4MTVjZGJlNjJjNzFmNTI1N2IwZmRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC01Myw2ICs1Myw4IEBA
IHB1YmxpYzoKIAogICAgIGludCBzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmKTsgLy8gUmV0
dXJucyB0aGUgbmV3IGluZGV4IG9yIC0xIGlmIG5vIHNjcm9sbCBvY2N1cnJlZAogCisgICAgaW50
IHNpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KIApAQCAtMTI1LDcgKzEy
Nyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgaW50IGl0ZW1IZWlnaHQoKSBjb25zdDsKICAgICB2
b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgpOwotICAgIGludCBzaXplKCkgY29u
c3Q7CiAgICAgaW50IG51bVZpc2libGVJdGVtcygpIGNvbnN0OwogICAgIGludCBudW1JdGVtcygp
IGNvbnN0OwogICAgIGludCBsaXN0SGVpZ2h0KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88472</attachid>
            <date>2011-04-06 11:39:41 -0700</date>
            <delta_ts>2011-04-06 13:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-27658-20110406113939.patch</filename>
            <type>text/plain</type>
            <size>37054</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ3NGYwZDJjN2U2YzdlY2QxMTY1
M2M3ZTNlNDVkZDY5OTM1MjkwLi5iN2Y0ZGVlZGMwMTMxMTEyOWIwOTk4OWViZGI3MDMxMGRmNWVi
M2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMDIgIE5hb2tpIFRha2FubyAgPHRh
a2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdVcC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VM
RUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzY1OAorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZCB0byBjaGVjayBQZ1VwL1BnRG93bi9Ib21lL0VuZCBrZXlzIGFyZSB3
b3JraW5nIGNvcnJlY3RseSBpbiBTRUxFQ1QgdGFnLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Nl
bGVjdC1lbGVtZW50Lmh0bWw6IEFkZGVkIGZvciBleHBlY3RhdGlvbi4KKwogMjAxMS0wMy0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZGluZyBmYXN0L2RvbS9I
VE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbCB0byBtYWMtd2syIFNraXBwZWQgbGlzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljMzE2MzUxN2E1MGVmZjYyN2QwMmRkMGFhOTVjNWVjN2M5MDY3ZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTggQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRo
ZSBIb21lL0VuZC9QYWdlVXAvUGFnZURvd24ga2V5cyB3b3JrIGNvcnJlY3RseSBmb3IgPHNlbGVj
dD4gZWxlbWVudHMuIFNpbmNlIGl0IHJlcXVpcmVzIGV2ZW50U2VuZGVyLmtleURvd24sIGl0IHdp
bGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVzdCBiZSBydW4gd2l0aCBy
dW4td2Via2l0LXRlc3RzLgorCisgICAgCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Mi
LCAicGFnZURvd24iLCAwLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgi
c3MiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZURvd24iLCAyLCA1KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAicGFnZURvd24iLCAzLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3MiLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlB
bmRFeHBlY3RJbmRleCgic3MiLCAicGFnZURvd24iLCA2LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNiwgMykgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDUsIDIpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCA0LCAxKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMywgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDIsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAxLCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgMCwgMCkgaXMgdHJ1ZQorUEFT
UyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUsIDApIGlzIHRydWUKK1BBU1Mg
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgNCwgMCkgaXMgdHJ1ZQorUEFTUyBz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKSBpcyB0cnVlCitQQVNTIHNl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCkgaXMgdHJ1ZQorUEFTUyBzZW5k
S2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAwKSBpcyB0cnVlCitQQVNTIHNlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDUsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCA0LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhw
ZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3MiLCAiZW5kIiwgMCwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJwYWdlRG93biIsIDAsIDQpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZURvd24iLCAxLCA0KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgMiwgNSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDQsIDYpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA1LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VEb3duIiwgNiwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDcsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCA2LCAyKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAy
LCAxKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgInBhZ2VVcCIs
IDEsIDEpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVw
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgNCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMywgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMiwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMSwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21l
IiwgMCwgMSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQi
LCA3LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIs
IDYsIDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwg
NSwgNikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCA0
LCA2KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDMs
IDYpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMiwg
NikgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAxLCA2
KSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDAsIDYp
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBh
Z2VEb3duIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRF
eHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMg
dHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURv
d24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtl
eUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBd
KSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSkgaXMgdHJ1ZQorUEFTUyBzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQs
IDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJ
bmRpY2VzKCJzcyIsICJob21lIiwgWzBdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlB
bmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSkgaXMgdHJ1ZQor
UEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBb
MywgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzIiwgInBhZ2VVcCIsIFszXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlVXAiLCBbMCwgMSwg
MiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
IiwgInBhZ2VVcCIsIFswLCAxLCAyLCAzXSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5
QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiZW5kIiwgWzMsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNT
IHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywgNCwgNSwg
Nl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
ImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImhvbWUiLCBbMCwgMSwgMiwgM10pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0
XSkgaXMgdHJ1ZQorUEFTUyBzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwg
InBhZ2VEb3duIiwgWzEsIDIsIDQsIDUsIDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRL
ZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0pIGlz
IHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdl
VXAiLCBbMSwgMl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pIGlzIHRydWUKK1BBU1Mgc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJl
bmQiLCBbMSwgMiwgNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAiaG9tZSIsIFsxXSkgaXMgdHJ1ZQorUEFTUyBz
ZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3duIiwgWzQsIDUs
IDZdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAicGFnZURvd24iLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMiwgNF0p
IGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJw
YWdlVXAiLCBbMSwgMiwgNF0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUKK1BBU1Mgc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbNCwgNSwgNl0pIGlzIHRydWUK
K1BBU1Mgc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEs
IDIsIDRdKSBpcyB0cnVlCitQQVNTIHNlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
c2QiLCAiaG9tZSIsIFsxLCAyLCA0XSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDAsIDMpIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAxLCAzKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgMiwgNCkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDMsIDUpIGlzIHRydWUKK1BBU1Mgc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA0LCA2KSBpcyB0cnVlCitQQVNT
IHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNSwgNikgaXMgdHJ1ZQor
UEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlRG93biIsIDYsIDYpIGlzIHRy
dWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNiwgNCkgaXMg
dHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA1LCAzKSBp
cyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDQsIDIp
IGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMywg
MSkgaXMgdHJ1ZQorUEFTUyBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAy
LCAwKSBpcyB0cnVlCitQQVNTIHNlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIs
IDEsIDApIGlzIHRydWUKK1BBU1Mgc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVw
IiwgMCwgMCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgwNGZhMTQ2OTRhMDYyNjFiNWVjZTJjZGViNzRlNTAxNTA1YWY4YTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3QtZWxlbWVudC5o
dG1sCkBAIC0wLDAgKzEsMzA2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgSG9t
ZS9FbmQvUGFnZVVwL1BhZ2VEb3duIGtleXMgd29yayBjb3JyZWN0bHkgZm9yICZsdDtzZWxlY3Qm
Z3Q7IGVsZW1lbnRzLgorU2luY2UgaXQgcmVxdWlyZXMgPENPREU+ZXZlbnRTZW5kZXIua2V5RG93
bjwvQ09ERT4sIGl0IHdpbGwgbm90IHJ1biBzb2xvIGluIHRoZSB3ZWIgYnJvd3NlcjsgaXQgbXVz
dCBiZSBydW4gd2l0aCA8S0JEPnJ1bi13ZWJraXQtdGVzdHM8L0tCRD4uPC9wPgorPGhyPgorPGZv
cm0+CisgICAgIDwhLS0gV2Ugc3BlY2lmeSBhIHNpemUgb2YgMyBidXQgd2lsbCBlbmQgdXAgcmVu
ZGVyaW5nIHdpdGggNCBiZWNhdXNlIHdlYmtpdCBpbXBvc2VzIGEgbWluaW11bSBzaXplIG9mIDQu
CisgICAgIEl0IGlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhlIGNvZGUgaGFuZGxlcyB0aGlz
IGNhc2UgIC0tPgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0IiBpZD0ic3MiIHNpemU9
IjMiIG11bHRpcGxlPSJ0cnVlIj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+MCA8L29wdGlv
bj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlv
biB2YWx1ZT0iMiI+MiA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+MyA8L29w
dGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNCI+NCA8L29wdGlvbj4KKyAgICAgICAgPG9w
dGlvbiB2YWx1ZT0iNSI+NSA8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiA8
L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8c2VsZWN0IG5hbWU9InNpbmdsZXNlbGVjdHdp
dGhkaXNhYmxlZCIgaWQ9InNzZCIgc2l6ZT0iNCIgbXVsdGlwbGU9ImZhbHNlIj4KKyAgICAgICAg
PG9wdGlvbiB2YWx1ZT0iMCIgZGlzYWJsZWQ9InRydWUiPjAgPC9vcHRpb24+CisgICAgICAgIDxv
cHRpb24gdmFsdWU9IjEiPjEgPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIg
PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiIGRpc2FibGVkPSJ0cnVlIj4zIDwv
b3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij40IDwvb3B0aW9uPgorICAgICAgICA8
b3B0aW9uIHZhbHVlPSI1Ij41IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42
IDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uIHZhbHVlPSI3IiBkaXNhYmxlZCA9ICJ0cnVlIj43
IDwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxzZWxlY3QgbmFtZT0ic2luZ2xlc2VsZWN0
d2l0aGdyb3VwIiBpZD0ic3NnIiBzaXplPSI0IiBtdWx0aXBsZT0iZmFsc2UiPgorICAgICAgICA8
b3B0Z3JvdXAgbGFiZWw9ImdwMCI+CisgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj4wIDwv
b3B0aW9uPgorICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSA8L29wdGlvbj4KKyAgICAg
ICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+
CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AxIj4KKyAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjMiPjMgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24g
dmFsdWU9IjQiPjQgPC9vcHRpb24+CisgICAgICAgIDxvcHRncm91cCBsYWJlbD0iZ3AyIj4KKyAg
ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjUiPjUgPC9vcHRpb24+CisgICAgICAgIDwvb3B0Z3Jv
dXA+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPjYgPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+
Cis8L2Zvcm0+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworfQorCitmdW5jdGlv
biBzZW5kS2V5QW5kRXhwZWN0SW5kZXgoc2VsZWN0SWQsIGtleSwgaW5pdGlhbEluZGV4LCBleHBl
Y3RlZEluZGV4KSB7CisgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNl
bGVjdElkKTsKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3QpOworICAgIHNlbGVjdC5mb2N1cygp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gaW5pdGlhbEluZGV4OworICAgIGlmIChzZWxl
Y3Quc2VsZWN0ZWRJbmRleCAhPSBpbml0aWFsSW5kZXgpIHsKKyAgICAgICAgbG9nKCJjYW4ndCBz
ZXQgc2VsZWN0ZWRJbmRleCB0byAiICsgaW5pdGlhbEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5z
ZWxlY3RlZEluZGV4ICsgJyknKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKGtleSk7CisgICAgaWYgKHNlbGVjdC5zZWxlY3RlZEluZGV4ICE9IGV4cGVjdGVkSW5kZXgp
IHsKKyAgICAgICAgbG9nKCdzZWxlY3RlZEluZGV4IHNob3VsZCBiZSAnICsgZXhwZWN0ZWRJbmRl
eCArICcgKGlzICcgKyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpIGFmdGVyIGEgJyArIGtleSAr
ICcgZnJvbSBpbmRleCAnICsgaW5pdGlhbEluZGV4KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXF1YWxBcnJheXMoYTEsIGEy
KSB7CisgICAgaWYgKGExLmxlbmd0aCAhPSBhMi5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYTEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGEx
W2ldICE9IGEyW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZHVtcEFycmF5KGEpIHsKKyAgICBzID0gIlsiOworICAg
IGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHMgPSBzICsgYVtpXTsK
KyAgICAgICAgaWYgKGkgPCBhLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgcyA9IHMgKyAiLCAi
OworICAgIH0KKyAgICByZXR1cm4gcyArICJdIjsKK30KKworZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJ
bmRpY2VzKHNlbGVjdCkgeworICAgIG5vd1NlbGVjdGVkID0gW107CisgICAgZm9yIChpID0gMDsg
aSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoc2VsZWN0Lm9wdGlv
bnNbaV0uc2VsZWN0ZWQpCisgICAgICAgICAgICAgIG5vd1NlbGVjdGVkLnB1c2goaSk7CisgICAg
cmV0dXJuIG5vd1NlbGVjdGVkOworfQorCitmdW5jdGlvbiBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpKyspCisgICAg
ICAgIHNlbGVjdC5vcHRpb25zW2ldLnNlbGVjdGVkID0gZmFsc2U7Cit9CisKKy8vIGV4cGVjdGVk
SW5kaWNlcyBzaG91bGQgYmUgaW4gc29ydGVkIG9yZGVyCitmdW5jdGlvbiBzZW5kV2l0aFNoaWZ0
S2V5QW5kRXhwZWN0SW5kaWNlcyhzZWxlY3RJZCwga2V5LCBleHBlY3RlZEluZGljZXMpIHsKKyAg
ICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOworICAgIHNl
bGVjdC5mb2N1cygpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBbInNoaWZ0S2V5Il0pOworICAgIG5vd1NlbGVj
dGVkID0gZ2V0U2VsZWN0ZWRJbmRpY2VzKHNlbGVjdCk7CisgICAgaWYgKCFlcXVhbEFycmF5cyhu
b3dTZWxlY3RlZCwgZXhwZWN0ZWRJbmRpY2VzKSkgeworICAgICAgICBsb2coJ3NlbGVjdGVkIGlu
ZGljZXMgc2hvdWxkIGJlICcgKyBkdW1wQXJyYXkoZXhwZWN0ZWRJbmRpY2VzKSArICcgKGlzICcg
KworICAgICAgICAgICAgZHVtcEFycmF5KG5vd1NlbGVjdGVkKSArICcpIGFmdGVyIGEgJyArIGtl
eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIHRlc3RQYWdlRG93bk5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRC
ZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDAsIDMpJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIs
IDEsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJz
cyIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFu
ZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDMsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93biIsIDQsIDYpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlRG93
biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKK30KKworZnVuY3Rpb24gdGVzdFBh
Z2VVcE5vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzcyIsICJwYWdlVXAiLCA2LCAzKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3Nl
bmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAicGFnZVVwIiwgNSwgMiknLCAndHJ1ZScpOworICAg
IHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDQsIDEpJywg
J3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdl
VXAiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRl
eCgic3MiLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzIiwgInBhZ2VVcCIsIDEsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJwYWdlVXAiLCAwLCAwKScsICd0cnVl
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIb21lTm9EaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNo
b3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCA2LCAwKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDUs
IDApJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIs
ICJob21lIiwgNCwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzIiwgImhvbWUiLCAzLCAwKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiaG9tZSIsIDIsIDApJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJob21lIiwgMSwgMCknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImhvbWUiLCAwLCAw
KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmROb0Rpc2FibGVkRWxlbWVudHMoKSB7
CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgNiwgNikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVu
ZCIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4
KCJzcyIsICJlbmQiLCA0LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRF
eHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzIiwgImVuZCIsIDIsIDYpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzcyIsICJlbmQiLCAxLCA2KScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3MiLCAiZW5kIiwgMCwg
NiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0UGFnZURvd25XaXRoRGlzYWJsZWRFbGVt
ZW50cygpIHsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFn
ZURvd24iLCAwLCA0KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJ
bmRleCgic3NkIiwgInBhZ2VEb3duIiwgMSwgNCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDIsIDUpJywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA0
LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3Nk
IiwgInBhZ2VEb3duIiwgNSwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJwYWdlRG93biIsIDYsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZURvd24iLCA3LCA2KScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpIHsK
KyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNywg
NCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIs
ICJwYWdlVXAiLCA2LCAyKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NkIiwgInBhZ2VVcCIsIDUsIDIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAicGFnZVVwIiwgNCwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJwYWdlVXAiLCAyLCAx
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
InBhZ2VVcCIsIDEsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2QiLCAicGFnZVVwIiwgMCwgMSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0
ZXN0SG9tZVdpdGhEaXNhYmxlZEVsZW1lbnRzKCkgeworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5k
RXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNiwgMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgNSwgMSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJo
b21lIiwgNCwgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZCIsICJob21lIiwgMywgMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5
QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMiwgMSknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMSwgMSknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJob21lIiwgMCwg
MSknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0RW5kV2l0aERpc2FibGVkRWxlbWVudHMo
KSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDcs
IDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2Qi
LCAiZW5kIiwgNiwgNiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0
SW5kZXgoInNzZCIsICJlbmQiLCA1LCA2KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRL
ZXlBbmRFeHBlY3RJbmRleCgic3NkIiwgImVuZCIsIDQsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2QiLCAiZW5kIiwgMywgNiknLCAndHJ1ZScp
OworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZCIsICJlbmQiLCAyLCA2
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NkIiwg
ImVuZCIsIDEsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVjdElu
ZGV4KCJzc2QiLCAiZW5kIiwgMCwgNiknLCAndHJ1ZScpOworfQorCitmdW5jdGlvbiB0ZXN0VmFy
aW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpIHsKKyAgICB2YXIgc2VsZWN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNzIik7CisgICAgc2VsZWN0LmZvY3VzKCk7CisgICAgY2xl
YXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDA7CisKKyAg
ICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VE
b3duIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJwYWdlRG93biIsIFswLCAxLCAyLCAzLCA0LCA1
LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZURvd24iLCBbMCwgMSwgMiwgMywgNCwgNSwgNl0pJywgJ3RydWUn
KTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwg
InBhZ2VVcCIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0
aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzBdKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJw
YWdlVXAiLCBbMF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFu
ZEV4cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFswLCAxLCAyLCAzLCA0LCA1LCA2XSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3Mi
LCAiZW5kIiwgWzAsIDEsIDIsIDMsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
J3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJob21lIiwgWzBdKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJz
cyIsICJob21lIiwgWzBdKScsICd0cnVlJyk7CisKKyAgICBjbGVhclNlbGVjdGlvbihzZWxlY3Qp
OworICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMzsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhT
aGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VEb3duIiwgWzMsIDQsIDUsIDZdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlRG93biIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzNdKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2Vz
KCJzcyIsICJwYWdlVXAiLCBbMCwgMSwgMiwgM10pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzIiwgInBhZ2VVcCIsIFswLCAxLCAy
LCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0
SW5kaWNlcygic3MiLCAicGFnZVVwIiwgWzAsIDEsIDIsIDNdKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzcyIsICJlbmQiLCBbMywg
NCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4
cGVjdEluZGljZXMoInNzIiwgImVuZCIsIFszLCA0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFsw
LCAxLCAyLCAzXSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5k
RXhwZWN0SW5kaWNlcygic3MiLCAiaG9tZSIsIFswLCAxLCAyLCAzXSknLCAndHJ1ZScpOworfQor
CitmdW5jdGlvbiB0ZXN0VmFyaW91c1NoaWZ0S2V5c1dpdGhEaXNhYmxlZEVsZW1lbnRzKCkgewor
ICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3NkJyk7CisgICAgc2Vs
ZWN0LmZvY3VzKCk7CisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsKKyAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9IDE7CisKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVj
dEluZGljZXMoInNzZCIsICJwYWdlRG93biIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNo
b3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VEb3du
IiwgWzEsIDIsIDQsIDUsIDZdKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbMSwgMiwgNCwgNSwgNl0p
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGlj
ZXMoInNzZCIsICJwYWdlVXAiLCBbMSwgMl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJwYWdlVXAiLCBbMV0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlVXAiLCBbMV0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlm
dEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJlbmQiLCBbMSwgMiwgNCwgNSwgNl0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzFdKScsICd0cnVl
Jyk7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hpZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2Qi
LCAiaG9tZSIsIFsxXSknLCAndHJ1ZScpOworCisgICAgY2xlYXJTZWxlY3Rpb24oc2VsZWN0KTsK
KyAgICBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDQ7CisgICAgc2hvdWxkQmUoJ3NlbmRXaXRoU2hp
ZnRLZXlBbmRFeHBlY3RJbmRpY2VzKCJzc2QiLCAicGFnZURvd24iLCBbNCwgNSwgNl0pJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdpdGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNz
ZCIsICJwYWdlRG93biIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsyLCA0XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgInBhZ2VVcCIsIFsxLCAyLCA0XSkn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNl
cygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5k
V2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygic3NkIiwgImVuZCIsIFs0LCA1LCA2XSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kV2l0aFNoaWZ0S2V5QW5kRXhwZWN0SW5kaWNlcygi
c3NkIiwgImhvbWUiLCBbMSwgMiwgNF0pJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZFdp
dGhTaGlmdEtleUFuZEV4cGVjdEluZGljZXMoInNzZCIsICJob21lIiwgWzEsIDIsIDRdKScsICd0
cnVlJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYWdlRG93bldpdGhHcm91cCgpIHsKKyAgICBzaG91
bGRCZSgnc2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAwLCAzKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VE
b3duIiwgMSwgMyknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoInNzZyIsICJwYWdlRG93biIsIDIsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2Vu
ZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCAzLCA1KScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VEb3duIiwgNCwg
NiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIs
ICJwYWdlRG93biIsIDUsIDYpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4
cGVjdEluZGV4KCJzc2ciLCAicGFnZURvd24iLCA2LCA2KScsICd0cnVlJyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RQYWdlVXBXaXRoR3JvdXAoKSB7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBl
Y3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDYsIDQpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgn
c2VuZEtleUFuZEV4cGVjdEluZGV4KCJzc2ciLCAicGFnZVVwIiwgNSwgMyknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdzZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCA0LCAy
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwg
InBhZ2VVcCIsIDMsIDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnc2VuZEtleUFuZEV4cGVj
dEluZGV4KCJzc2ciLCAicGFnZVVwIiwgMiwgMCknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdz
ZW5kS2V5QW5kRXhwZWN0SW5kZXgoInNzZyIsICJwYWdlVXAiLCAxLCAwKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ3NlbmRLZXlBbmRFeHBlY3RJbmRleCgic3NnIiwgInBhZ2VVcCIsIDAsIDAp
JywgJ3RydWUnKTsKK30KKwordGVzdFBhZ2VEb3duTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0
UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCk7Cit0ZXN0SG9tZU5vRGlzYWJsZWRFbGVtZW50cygp
OwordGVzdEVuZE5vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aERpc2FibGVk
RWxlbWVudHMoKTsKK3Rlc3RQYWdlVXBXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEhvbWVX
aXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdEVuZFdpdGhEaXNhYmxlZEVsZW1lbnRzKCk7Cit0
ZXN0VmFyaW91c1NoaWZ0S2V5c05vRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFZhcmlvdXNTaGlm
dEtleXNXaXRoRGlzYWJsZWRFbGVtZW50cygpOwordGVzdFBhZ2VEb3duV2l0aEdyb3VwKCk7Cit0
ZXN0UGFnZVVwV2l0aEdyb3VwKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PiAKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMmIx
NTM1ZTkyNTRkY2Y2ZThkNjcyZTc4MWQ3MTU2OGMxYWNkNTE2Li4yYTYxZjBjYzU3OWJhNGJlZDY5
MDJhNTcwMmRmZGFiOTFlZWQwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEt
MDQtMDIgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Via2l0IGlnbm9yZXMgUGdV
cC9QZ0Rvd24vSG9tZS9FbmQgaW4gU0VMRUNUIHRhZyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY1OAorCisgICAgICAgIFRlc3Q6IGZh
c3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9TZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRWYWxpZEluZGV4KTogTW92ZWQgZnJvbSBl
bHNld2hlcmUgaW4gdGhlIGZpbGUgdG8gYmUgdXNlZCBieSBvdGhlciByb3V0aW5lcy4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBSZXR1cm5zIGEg
c2VsZWN0YWJsZSBpbmRleCBvbmUgcGFnZSBhd2F5IGZyb20gdGhlIGdpdmVuIGluZGV4LgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXgpOiBJbXBsZW1lbnRlZCB3aXRo
IG5leHRWYWxpZEluZGV4LgorICAgICAgICBBbmQgY29udmVydGVkIHRvIGEgbm9ybWFsIHN0YXRp
YyBmdW5jdGlvbiBmcm9tIGEgcHJpdmF0ZSBmdW5jdGlvbiBvZiBTZWxlY3RFbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KTogSW1wbGVtZW50ZWQg
d2l0aCBuZXh0VmFsaWRJbmRleC4KKyAgICAgICAgQW5kIGNvbnZlcnRlZCB0byBhIG5vcm1hbCBz
dGF0aWMgZnVuY3Rpb24gZnJvbSBhIHByaXZhdGUgZnVuY3Rpb24gb2YgU2VsZWN0RWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IFJldHVybnMgdGhl
IGZpcnN0IHNlbGVjdGFibGUgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpsYXN0U2VsZWN0YWJs
ZUxpc3RJbmRleCk6IFJldHVybnMgdGhlIGxhc3Qgc2VsZWN0YWJsZSBpbmRleC4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6IENv
bnZlcnRlZCBmcm9tIEMgY2FzdCB0byBDKysgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkcyBzdXBwb3J0IGZvciBQ
YWdlVXAvUGFnZURvd24vSG9tZS9FbmQgd2l0aCBib3RoIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2Vs
ZWN0aW9uLgorCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdEVsZW1lbnQ6Oik6IFJlbW92ZSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGFu
ZCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoKS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94Lmg6IE1ha2VzIFJlbmRlckxpc3RCb3g6OnNpemUgcHVibGljIHNvIHRoYXQg
UGFnZVVwL1BhZ2VEb3duIGJlaGF2aW9yIGNhbiB1c2UgdGhlIGFjdHVhbCBsaXN0IHNpemUgcmF0
aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gSFRNTC4KKyAgICAgICAgVGhleSBjYW4gZGlmZmVy
IGR1ZSB0byB0aGUgbWluaW11bSBzaXplIGltcG9zZWQgYnkgUmVuZGVyTGlzdEJveC4KKwogMjAx
MS0wMy0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBjb3JyZWN0aW9uIGFmdGVyIHI4MjQ5Ni4gKFBhcnQgMykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAppbmRleCAxNWM2OWFkYzY0NjVhZjMyYTE3MjY5ZGEy
Y2QwM2ZhYjBlZmY3OTZjLi41NDVmMjcxODg0MWIwNWQzNjdhNDNhZTE5MGExNGRmMmI4ZWUxOGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3NCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFk
VGltZW91dCA9IDEwMDA7CiAKK2VudW0gU2tpcERpcmVjdGlvbiB7CisgICAgU2tpcEJhY2t3YXJk
cyA9IC0xLAorICAgIFNraXBGb3J3YXJkcyA9IDEKK307CisKKy8vIFJldHVybnMgdGhlIDFzdCB2
YWxpZCBpdGVtIHxza2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGly
ZWN0aW9ufCBpZiB0aGVyZSBpcyBvbmUuCisvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZh
bGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRl
eHwgaWYgdGhlcmUgaXMgb25lLgorLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8
LgorLy8gVmFsaWQgbWVhbnMgdGhhdCBpdCBpcyBlbmFibGVkIGFuZCBhbiBvcHRpb24gZWxlbWVu
dC4KK3N0YXRpYyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlz
dEl0ZW1zLCBpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXAp
Cit7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAtMSB8fCBkaXJlY3Rpb24gPT0gMSk7CisgICAg
aW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7CisgICAgaW50IHNpemUgPSBsaXN0SXRlbXMu
c2l6ZSgpOworICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAg
JiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgeworICAgICAgICAt
LXNraXA7CisgICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYg
aXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICAgICAgbGFz
dEdvb2RJbmRleCA9IGxpc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChza2lwIDw9IDApCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxhc3RHb29k
SW5kZXg7Cit9CisKK3N0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxl
bWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFydEluZGV4KQoreworICAg
IHJldHVybiBuZXh0VmFsaWRJbmRleChkYXRhLmxpc3RJdGVtcyhlbGVtZW50KSwgc3RhcnRJbmRl
eCwgU2tpcEZvcndhcmRzLCAxKTsKK30KKworc3RhdGljIGludCBwcmV2aW91c1NlbGVjdGFibGVM
aXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBz
dGFydEluZGV4KQoreworICAgIGlmIChzdGFydEluZGV4ID09IC0xKQorICAgICAgICBzdGFydElu
ZGV4ID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCkuc2l6ZSgpOworICAgIHJldHVybiBuZXh0VmFs
aWRJbmRleChkYXRhLmxpc3RJdGVtcyhlbGVtZW50KSwgc3RhcnRJbmRleCwgU2tpcEJhY2t3YXJk
cywgMSk7Cit9CisKK3N0YXRpYyBpbnQgZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVs
ZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7CisgICAgaW50IGluZGV4
ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgSU5U
X01BWCk7CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPT0gaXRlbXMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGluZGV4OworfQorCitzdGF0aWMg
aW50IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBuZXh0VmFsaWRJbmRleChkYXRhLmxpc3RJdGVt
cyhlbGVtZW50KSwgLTEsIFNraXBGb3J3YXJkcywgSU5UX01BWCk7Cit9CisKKy8vIFJldHVybnMg
dGhlIGluZGV4IG9mIHRoZSBuZXh0IHZhbGlkIGl0ZW0gb25lIHBhZ2UgYXdheSBmcm9tIHxzdGFy
dEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwuCitzdGF0aWMgaW50IG5leHRTZWxlY3Rh
YmxlTGlzdEluZGV4UGFnZUF3YXkoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVs
ZW1lbnQsIGludCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBj
b25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1lbnQpOwor
ICAgIC8vIENhbid0IHVzZSBkYXRhLT5zaXplKCkgYmVjYXVzZSByZW5kZXJlciBmb3JjZXMgYSBt
aW5pbXVtIHNpemUuCisgICAgaW50IHBhZ2VTaXplID0gMDsKKyAgICBpZiAoZWxlbWVudC0+cmVu
ZGVyZXIoKS0+aXNMaXN0Qm94KCkpCisgICAgICAgIHBhZ2VTaXplID0gdG9SZW5kZXJMaXN0Qm94
KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zaXplKCkgLSAxOyAvLyAtMSBzbyB3ZSBzdGlsbCBzaG93
IGNvbnRleHQKKworICAgIC8vIE9uZSBwYWdlIGF3YXksIGJ1dCBub3Qgb3V0c2lkZSB2YWxpZCBi
b3VuZHMuCisgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBvcHRpb24gaXRlbSBvbmUgcGFnZSBh
d2F5LCB0aGUgaW5kZXggaXMgY2hvc2VuLgorICAgIC8vIElmIHRoZXJlIGlzIG5vIGV4YWN0IG9u
ZSBwYWdlIGF3YXkgdmFsaWQgb3B0aW9uLCByZXR1cm5zIHN0YXJ0SW5kZXggb3IgdGhlIG1vc3Qg
ZmFyIGluZGV4LgorICAgIGludCBlZGdlSW5kZXggPSAoZGlyZWN0aW9uID09IFNraXBGb3J3YXJk
cykgPyAwIDogKGl0ZW1zLnNpemUoKSAtIDEpOworICAgIGludCBza2lwQW1vdW50ID0gcGFnZVNp
emUgKyAoKGRpcmVjdGlvbiA9PSBTa2lwRm9yd2FyZHMpID8gc3RhcnRJbmRleCA6IChlZGdlSW5k
ZXggLSBzdGFydEluZGV4KSk7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGl0ZW1zLCBlZGdl
SW5kZXgsIGRpcmVjdGlvbiwgc2tpcEFtb3VudCk7Cit9CisKIHZvaWQgU2VsZWN0RWxlbWVudDo6
c2VsZWN0QWxsKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewog
ICAgIEFTU0VSVCghZGF0YS51c2VzTWVudUxpc3QoKSk7CkBAIC0xMDQsMzAgKzE3Miw2IEBAIHZv
aWQgU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmIGRh
dGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgfQogfQogCi1pbnQgU2VsZWN0RWxlbWVudDo6bmV4
dFNlbGVjdGFibGVMaXN0SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVs
ZW1lbnQsIGludCBzdGFydEluZGV4KQotewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0
ZW1zID0gZGF0YS5saXN0SXRlbXMoZWxlbWVudCk7Ci0gICAgaW50IGluZGV4ID0gc3RhcnRJbmRl
eCArIDE7Ci0gICAgd2hpbGUgKGluZGV4ID49IDAgJiYgKHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1z
LnNpemUoKSAmJiAoIWlzT3B0aW9uRWxlbWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4
XS0+ZGlzYWJsZWQoKSkpCi0gICAgICAgICsraW5kZXg7Ci0gICAgaWYgKCh1bnNpZ25lZCkgaW5k
ZXggPT0gaXRlbXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gc3RhcnRJbmRleDsKLSAgICByZXR1
cm4gaW5kZXg7Ci19Ci0KLWludCBTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0
SW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFy
dEluZGV4KQotewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gZGF0YS5saXN0
SXRlbXMoZWxlbWVudCk7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPT0gLTEpCi0gICAgICAgIHN0YXJ0
SW5kZXggPSBpdGVtcy5zaXplKCk7Ci0gICAgaW50IGluZGV4ID0gc3RhcnRJbmRleCAtIDE7Ci0g
ICAgd2hpbGUgKGluZGV4ID49IDAgJiYgKHVuc2lnbmVkKSBpbmRleCA8IGl0ZW1zLnNpemUoKSAm
JiAoIWlzT3B0aW9uRWxlbWVudChpdGVtc1tpbmRleF0pIHx8IGl0ZW1zW2luZGV4XS0+ZGlzYWJs
ZWQoKSkpCi0gICAgICAgIC0taW5kZXg7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICBy
ZXR1cm4gc3RhcnRJbmRleDsKLSAgICByZXR1cm4gaW5kZXg7Ci19Ci0KIHZvaWQgU2VsZWN0RWxl
bWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoU2VsZWN0RWxlbWVudERhdGEmIGRh
dGEsIEVsZW1lbnQqIGVsZW1lbnQsIGludCBpbmRleCkKIHsKICAgICBkYXRhLnNldEFjdGl2ZVNl
bGVjdGlvbkFuY2hvckluZGV4KGluZGV4KTsKQEAgLTUxNSwyNyArNTU5LDYgQEAgdm9pZCBTZWxl
Y3RFbGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKICAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAg
ZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQotICAgIAotZW51bSBTa2lwRGlyZWN0
aW9uIHsKLSAgICBTa2lwQmFja3dhcmRzID0gLTEsCi0gICAgU2tpcEZvcndhcmRzID0gMQotfTsK
LQotLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQgdmFsaWQgbGlzdCBpdGVtIHxza2lw
fCBpdGVtcyBwYXN0IHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufC4KLXN0YXRp
YyBpbnQgbmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zLCBp
bnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IHNraXApCi17Ci0gICAg
aW50IGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7Ci0gICAgaW50IHNpemUgPSBsaXN0SXRlbXMu
c2l6ZSgpOwotICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAg
JiYgbGlzdEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgewotICAgICAgICAt
LXNraXA7Ci0gICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmRpc2FibGVkKCkgJiYg
aXNPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgewotICAgICAgICAgICAgbGFz
dEdvb2RJbmRleCA9IGxpc3RJbmRleDsKLSAgICAgICAgICAgIGlmIChza2lwIDw9IDApCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxhc3RHb29k
SW5kZXg7Ci19CiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5k
bGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBFdmVudCogZXZl
bnQsIEhUTUxGb3JtRWxlbWVudCogaHRtbEZvcm0pCiB7CkBAIC01OTQsOCArNjE3LDggQEAgdm9p
ZCBTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIEVsZW1lbnQKICAgICAgICAgICAgIGxpc3RJbmRleCA9IG5leHRWYWxpZElu
ZGV4KGxpc3RJdGVtcywgbGlzdEl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgMSk7CiAgICAg
ICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDAgJiYgKHVuc2lnbmVkKWxpc3RJbmRleCA8IGxpc3RJ
dGVtcy5zaXplKCkpCisKKyAgICAgICAgaWYgKGhhbmRsZWQgJiYgbGlzdEluZGV4ID49IDAgJiYg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpc3RJbmRleCkgPCBsaXN0SXRlbXMuc2l6ZSgpKQogICAg
ICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRl
eChkYXRhLCBlbGVtZW50LCBsaXN0SW5kZXgpKTsKIAogICAgICAgICBpZiAoaGFuZGxlZCkKQEAg
LTc2MCwxOSArNzgzLDQ3IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVu
dEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciA9IHN0YXRpY19jYXN0
PEtleWJvYXJkRXZlbnQqPihldmVudCktPmtleUlkZW50aWZpZXIoKTsKIAotICAgICAgICBpbnQg
ZW5kSW5kZXggPSAwOyAgICAgICAgCisgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAg
ICAgICBpbnQgZW5kSW5kZXggPSAwOwogICAgICAgICBpZiAoZGF0YS5hY3RpdmVTZWxlY3Rpb25F
bmRJbmRleCgpIDwgMCkgewogICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5kIGluZGV4
Ci0gICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpCi0gICAgICAgICAgICAg
ICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleChkYXRhLCBlbGVtZW50LCBsYXN0
U2VsZWN0ZWRMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
a2V5SWRlbnRpZmllciA9PSAiVXAiKQotICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlv
dXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQsIG9wdGlvblRvTGlzdEluZGV4KGRh
dGEsIGVsZW1lbnQsIHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCkpKTsKKyAgICAgICAgICAg
IGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJQYWdlRG93
biIpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9IGxhc3RTZWxlY3RlZExpc3RJ
bmRleChkYXRhLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpCisgICAgICAgICAgICAg
ICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwg
c3RhcnRJbmRleCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBl
bmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwgZWxlbWVudCwg
c3RhcnRJbmRleCwgU2tpcEZvcndhcmRzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRl
bnRpZmllciA9PSAiVXAiIHx8IGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAg
ICAgICAgICBpbnQgc3RhcnRJbmRleCA9IG9wdGlvblRvTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQs
IHNlbGVjdGVkSW5kZXgoZGF0YSwgZWxlbWVudCkpOworICAgICAgICAgICAgICAgIGhhbmRsZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCisgICAg
ICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRh
dGEsIGVsZW1lbnQsIHN0YXJ0SW5kZXgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW5kSW5kZXggPSBuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGRh
dGEsIGVsZW1lbnQsIHN0YXJ0SW5kZXgsIFNraXBCYWNrd2FyZHMpOworICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgaW5kZXggYmFzZWQg
b24gdGhlIGN1cnJlbnQgZW5kIGluZGV4Ci0gICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9
PSAiRG93biIpCisgICAgICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiRG93biIpIHsKICAg
ICAgICAgICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVs
ZW1lbnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChrZXlJZGVudGlmaWVyID09ICJVcCIpCi0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBw
cmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoZGF0YSwgZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxl
Y3Rpb25FbmRJbmRleCgpKTsgICAgCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlVwIikgeworICAgICAgICAg
ICAgICAgIGVuZEluZGV4ID0gcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1l
bnQsIGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBh
Z2VEb3duIikgeworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gbmV4dFNlbGVjdGFibGVMaXN0
SW5kZXhQYWdlQXdheShkYXRhLCBlbGVtZW50LCBkYXRhLmFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4
KCksIFNraXBGb3J3YXJkcyk7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gIlBhZ2VVcCIpIHsKKyAgICAgICAg
ICAgICAgICBlbmRJbmRleCA9IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoZGF0YSwg
ZWxlbWVudCwgZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgpLCBTa2lwQmFja3dhcmRzKTsK
KyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSAiSG9tZSIpIHsKKyAgICAgICAgICAgIGVu
ZEluZGV4ID0gZmlyc3RTZWxlY3RhYmxlTGlzdEluZGV4KGRhdGEsIGVsZW1lbnQpOworICAgICAg
ICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9
PSAiRW5kIikgeworICAgICAgICAgICAgZW5kSW5kZXggPSBsYXN0U2VsZWN0YWJsZUxpc3RJbmRl
eChkYXRhLCBlbGVtZW50KTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQtPmRvY3Vt
ZW50KCktPmZyYW1lKCkpKQpAQCAtNzgwLDEzICs4MzEsMTMgQEAgdm9pZCBTZWxlY3RFbGVtZW50
OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxl
bWVudCoKICAgICAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJMZWZ0IiB8fCBrZXlJZGVu
dGlmaWVyID09ICJSaWdodCIgfHwgKChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVu
dGlmaWVyID09ICJVcCIpICYmIGVuZEluZGV4ID09IGRhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChrZXlJZGVudGlm
aWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJVcCIpIHsKKyAgICAgICAgaWYgKGVu
ZEluZGV4ID49IDAgJiYgaGFuZGxlZCkgewogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgc2VsZWN0
aW9uIHNvIGl0IGNhbiBiZSBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbiB3aGVuIGRpc3Bh
dGNoaW5nIGNoYW5nZSBldmVudHMgaW1tZWRpYXRlbHkgYWZ0ZXIgbWFraW5nIHRoZSBuZXcgc2Vs
ZWN0aW9uLgogICAgICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rpb24oZGF0YSwgZWxlbWVudCk7CiAK
LSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdEl0ZW1zLCAhbGlzdEl0ZW1zLnNpemUoKSB8
fCAoZW5kSW5kZXggPj0gMCAmJiAodW5zaWduZWQpIGVuZEluZGV4IDwgbGlzdEl0ZW1zLnNpemUo
KSkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0SXRlbXMuc2l6
ZSgpIHx8IChlbmRJbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRJbmRleCkg
PCBsaXN0SXRlbXMuc2l6ZSgpKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJ
bmRleChkYXRhLCBlbmRJbmRleCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYm9vbCBz
ZWxlY3ROZXdJdGVtID0gIWRhdGEubXVsdGlwbGUoKSB8fCBzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5zaGlmdEtleSgpIHx8ICFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChl
bGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKICAgICAgICAgICAgIGlmIChzZWxlY3ROZXdJ
dGVtKQogICAgICAgICAgICAgICAgIGRhdGEuc2V0QWN0aXZlU2VsZWN0aW9uU3RhdGUodHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAppbmRleCAyMjJhMWJiYzFjMmEwYzlmYTY0Nzlm
YjFkYzIyMGMxZDViYzRjYjUzLi5kZDA3M2EyNGU3MzVmMmUzMjBiYTMyMGFmOTRhZTBjMjY2NTM2
Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKQEAgLTcyLDggKzcyLDYgQEAgcHJv
dGVjdGVkOgogCiAgICAgc3RhdGljIHZvaWQgc2VsZWN0QWxsKFNlbGVjdEVsZW1lbnREYXRhJiwg
RWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKFNlbGVjdEVsZW1l
bnREYXRhJiwgRWxlbWVudCopOwotICAgIHN0YXRpYyBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXgoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgaW50IHN0YXJ0SW5kZXgpOwotICAgIHN0
YXRpYyBpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KFNlbGVjdEVsZW1lbnREYXRhJiwg
RWxlbWVudCosIGludCBzdGFydEluZGV4KTsKICAgICBzdGF0aWMgdm9pZCBzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleChTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBpbnQgaW5kZXgp
OwogICAgIHN0YXRpYyB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KFNlbGVjdEVsZW1l
bnREYXRhJiwgaW50IGluZGV4KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVMaXN0Qm94U2VsZWN0
aW9uKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIGJvb2wgZGVzZWxlY3RPdGhlck9wdGlv
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMGUyY2Zk
NjhiMzhmNjA3MDcyYThmMWQyM2NmMzQxNDU5ZWU3ZjcyNi4uNjEwZjU1ZTg4ZWRmZDIwNjg4MTVj
ZGJlNjJjNzFmNTI1N2IwZmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIGludCBzY3JvbGxUb3dhcmQo
Y29uc3QgSW50UG9pbnQmKTsgLy8gUmV0dXJucyB0aGUgbmV3IGluZGV4IG9yIC0xIGlmIG5vIHNj
cm9sbCBvY2N1cnJlZAogCisgICAgaW50IHNpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlz
dEJveCI7IH0KIApAQCAtMTI1LDcgKzEyNyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgaW50IGl0
ZW1IZWlnaHQoKSBjb25zdDsKICAgICB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5k
ZXgpOwotICAgIGludCBzaXplKCkgY29uc3Q7CiAgICAgaW50IG51bVZpc2libGVJdGVtcygpIGNv
bnN0OwogICAgIGludCBudW1JdGVtcygpIGNvbnN0OwogICAgIGludCBsaXN0SGVpZ2h0KCkgY29u
c3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>