<?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>83486</bug_id>
          
          <creation_ts>2012-04-09 10:54:31 -0700</creation_ts>
          <short_desc>[EFL][DRT] EventSender needs implementation of leapForward function</short_desc>
          <delta_ts>2012-08-14 05:43:36 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>0</everconfirmed>
          <reporter name="Alexander Shalamov">alexander.shalamov</reporter>
          <assigned_to name="Alexander Shalamov">alexander.shalamov</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598429</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-04-09 10:54:31 -0700</bug_when>
    <thetext>EventSender requires implementation of leapForward function in order to test drag&apos;n&apos;drop, wheel and other mouse events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599138</commentid>
    <comment_count>1</comment_count>
      <attachid>136421</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-04-10 04:06:51 -0700</bug_when>
    <thetext>Created attachment 136421
Patch

Implementation of leapForward in EFL&apos;s DRT EventSender</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 04:10:24 -0700</bug_when>
    <thetext>Attachment 136421 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Tools/DumpRenderTree/efl/EventSender.cpp:135:  Missing space inside { }.  [whitespace/braces] [5]
Tools/DumpRenderTree/efl/EventSender.cpp:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/DumpRenderTree/efl/EventSender.cpp:143:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/DumpRenderTree/efl/EventSender.cpp:143:  Missing space inside { }.  [whitespace/braces] [5]
Tools/DumpRenderTree/efl/EventSender.cpp:145:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/DumpRenderTree/efl/EventSender.cpp:151:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/DumpRenderTree/efl/EventSender.cpp:151:  Missing space inside { }.  [whitespace/braces] [5]
Tools/DumpRenderTree/efl/EventSender.cpp:160:  The parameter name &quot;eventInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/DumpRenderTree/efl/EventSender.cpp:161:  The parameter name &quot;eventInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/DumpRenderTree/efl/EventSender.cpp:658:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Tools/DumpRenderTree/efl/EventSender.cpp:666:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 11 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599150</commentid>
    <comment_count>3</comment_count>
      <attachid>136427</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-04-10 04:21:39 -0700</bug_when>
    <thetext>Created attachment 136427
Patch

Fixed stylebot errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599168</commentid>
    <comment_count>4</comment_count>
      <attachid>136427</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-10 05:15:29 -0700</bug_when>
    <thetext>Comment on attachment 136427
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:269
&gt; +    MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventDown, modifiers, (EvasMouseButton)button);

Use static_cast instead of c-type casting.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:352
&gt; +    const int horizontal = - static_cast&lt;int&gt;(JSValueToNumber(context, arguments[0], exception));

To expression above line more clearly, why don&apos;t you modify like this.

int horizontal = -(static_cast&lt;int&gt;(JSValueToNumber(context, arguments[0], exception)));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599458</commentid>
    <comment_count>5</comment_count>
      <attachid>136499</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-04-10 11:57:47 -0700</bug_when>
    <thetext>Created attachment 136499
Patch

Applied review changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600487</commentid>
    <comment_count>6</comment_count>
      <attachid>136723</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-04-11 12:26:36 -0700</bug_when>
    <thetext>Created attachment 136723
Patch

Updated Skipped list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603220</commentid>
    <comment_count>7</comment_count>
      <attachid>136723</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-16 09:43:09 -0700</bug_when>
    <thetext>Comment on attachment 136723
Patch

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

It looks this patch is based on GTK port implementation. Could you please explain this patch on irc again ?

&gt; Tools/ChangeLog:6
&gt; +        Implemented leapForward function

I think this patch description is poor beside patch size. Could you write more detail description ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611195</commentid>
    <comment_count>8</comment_count>
      <attachid>136723</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-04-26 19:39:49 -0700</bug_when>
    <thetext>Comment on attachment 136723
Patch

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

&gt; LayoutTests/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).

This line usually comes before the change&apos;s longer description.

&gt; Tools/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).

Ditto.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:69
&gt; +    ulong delay;

This value is always set from an int below, so why is it a ulong here?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:75
&gt; +static const int gDelayedQueueSize = 1024;
&gt; +static DelayedEvent gEventQueue[gDelayedQueueSize];
&gt; +static unsigned gStartOfEventQueue;
&gt; +static unsigned gEndOfEventQueue;

Why do all this manual bookkeeping instead of using a WTF::Vector?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:154
&gt; +    MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers)
&gt; +        : event(event)
&gt; +        , modifiers(modifiers)
&gt; +        , button(EvasMouseButtonNone)
&gt; +        , horizontalDelta(0)
&gt; +        , verticalDelta(0)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers, EvasMouseButton button)
&gt; +       : event(event)
&gt; +       , modifiers(modifiers)
&gt; +       , button(button)
&gt; +       , horizontalDelta(0)
&gt; +       , verticalDelta(0)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers, int horizontalDelta, int verticalDelta)
&gt; +       : event(event)
&gt; +       , modifiers(modifiers)
&gt; +       , button(EvasMouseButtonNone)
&gt; +       , horizontalDelta(horizontalDelta)
&gt; +       , verticalDelta(verticalDelta)
&gt; +    {
&gt; +    }

This set of constructors could be replaced by a single one:

    MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers, EvasMouseButton button = EvasMouseButtonNone, int horizontalDelta = 0, int verticalDelta = 0)

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; +static void feedOrQueueMouseEvent(MouseEventInfo* eventInfo, bool shouldFeedQueuedEvents)

It&apos;s not clear to me when a function is supposed to pass true or false to shouldFeeedQueuedEvents. Can you elaborate?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:661
&gt; +    if ((gDragMode || gStartOfEventQueue != gEndOfEventQueue || gEventQueue[gEndOfEventQueue].delay)

Ditto about the values of gDragMode (ie. why it is in this check).

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:688
&gt; +    // FIXME: We need to pass additional information with our events, so that
&gt; +    // we could construct correct PlatformWheelEvent. At the moment, max number
&gt; +    // of clicks is 3

Are there tests which are broken due to this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617821</commentid>
    <comment_count>9</comment_count>
      <attachid>140570</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-07 12:19:04 -0700</bug_when>
    <thetext>Created attachment 140570
Patch

Fixed according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617830</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-07 12:36:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 136723 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136723&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:9
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; This line usually comes before the change&apos;s longer description.

Fixed
 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Ditto.

Fixed

&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:69
&gt; &gt; +    ulong delay;
&gt; 
&gt; This value is always set from an int below, so why is it a ulong here?

Fixed
 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:75
&gt; &gt; +static const int gDelayedQueueSize = 1024;
&gt; &gt; +static DelayedEvent gEventQueue[gDelayedQueueSize];
&gt; &gt; +static unsigned gStartOfEventQueue;
&gt; &gt; +static unsigned gEndOfEventQueue;
&gt; 
&gt; Why do all this manual bookkeeping instead of using a WTF::Vector?

Fixed (Tried to follow style:)

&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:154
&gt; &gt; +    MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers)
&gt; &gt; +        : event(event)
&gt; &gt; +        , modifiers(modifiers)
&gt; &gt; +        , button(EvasMouseButtonNone)
&gt; &gt; +        , horizontalDelta(0)
&gt; &gt; +        , verticalDelta(0)
&gt; &gt; +    {
&gt; &gt; +    }
...
&gt; 
&gt; This set of constructors could be replaced by a single one:

Fixed


&gt;     MouseEventInfo(EvasMouseEvent event, EvasKeyModifier modifiers, EvasMouseButton button = EvasMouseButtonNone, int horizontalDelta = 0, int verticalDelta = 0)
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; &gt; +static void feedOrQueueMouseEvent(MouseEventInfo* eventInfo, bool shouldFeedQueuedEvents)
&gt; 
&gt; It&apos;s not clear to me when a function is supposed to pass true or false to shouldFeeedQueuedEvents. Can you elaborate?

All mouse events except move should fire all events that are in the queue (same as in other ports).
Usually, test code would programatically press mouse button and then send move command to select or drag element and when button is released, all events with their delays would be re-played in order to simulate user actions.

&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:661
&gt; &gt; +    if ((gDragMode || gStartOfEventQueue != gEndOfEventQueue || gEventQueue[gEndOfEventQueue].delay)
&gt; 
&gt; Ditto about the values of gDragMode (ie. why it is in this check).

Removed, not required at the moment.


&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:688
&gt; &gt; +    // FIXME: We need to pass additional information with our events, so that
&gt; &gt; +    // we could construct correct PlatformWheelEvent. At the moment, max number
&gt; &gt; +    // of clicks is 3
&gt; 
&gt; Are there tests which are broken due to this?

Yes. fast/events/click-count.html
WebKit doesn&apos;t care about 1-2-3-ple clicks.
It needs click count, right now, in EFL max number of clicks is 3. GTK has same
limitation, but guys have implemented custom click counter that fixes that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617832</commentid>
    <comment_count>11</comment_count>
      <attachid>140572</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-07 12:39:43 -0700</bug_when>
    <thetext>Created attachment 140572
Patch

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617854</commentid>
    <comment_count>12</comment_count>
      <attachid>140572</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-07 13:03:42 -0700</bug_when>
    <thetext>Comment on attachment 140572
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:66
&gt; +struct MouseEventInfo;

Nit: You could move the DetalyedEvent declaration after MouseEventInfo and avoid this forward declaration here.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:78
&gt; +static WTF::Vector&lt;DelayedEvent&gt; gEventQueue;

Constructing global static objects this way is dangerous -- in general, we use the DEFINE_STATIC_LOCAL macro for that.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:148
&gt; +static void feedOrQueueMouseEvent(MouseEventInfo*, bool shouldFeedQueuedEvents = true);

I think this can be made more clear, even if it requires a few more lines of code. A boolean parameter in a function with this name is not very expressive, and someone looking at a place which calls this function for the first time will probably get confused. I suggest using an enum instead of a boolean and removing the default value from it, so you end up calling something like
  feedOrQueueMouseEvent(myMouseEvent, FeedQueuedEvents);
or
  feedOrQueueMouseEvent(myMouseEvent, DoNotFeedQueuedEvents);

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:334
&gt; +    // We need to invert scolling values since in EFL negative z value means that

Nit: scolling -&gt; scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617893</commentid>
    <comment_count>13</comment_count>
      <attachid>140579</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-07 13:41:38 -0700</bug_when>
    <thetext>Created attachment 140579
Patch

Fixed:
* Forward declaration of MouseEventInfo
* Use DEFINE_STATIC_LOCAL instead of &quot;static WTF::Vector&lt;DelayedEvent&gt; gEventQueue;&quot;
* Fix typo: scolling -&gt; scrolling
* Use enum FeedQueuedEvents, DoNotFeedQueuedEvents to make code readable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617911</commentid>
    <comment_count>14</comment_count>
      <attachid>140579</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-07 13:57:42 -0700</bug_when>
    <thetext>Comment on attachment 140579
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:150
&gt; +DEFINE_STATIC_LOCAL(WTF::Vector&lt;DelayedEvent&gt;, gEventQueue, ());

We&apos;re almost there. The idea of DEFINE_STATIC_LOCAL is to use it inside a function; there are example uses in ewk and in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618349</commentid>
    <comment_count>15</comment_count>
      <attachid>140679</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-07 23:25:21 -0700</bug_when>
    <thetext>Created attachment 140679
Patch

Moved DEFINE_STATIC_LOCAL to static getter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618405</commentid>
    <comment_count>16</comment_count>
      <attachid>140689</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-05-08 01:26:55 -0700</bug_when>
    <thetext>Created attachment 140689
Patch

Skipping few tests that were unskipped after rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618498</commentid>
    <comment_count>17</comment_count>
      <attachid>140689</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-08 07:06:11 -0700</bug_when>
    <thetext>Comment on attachment 140689
Patch

LGTM now, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618914</commentid>
    <comment_count>18</comment_count>
      <attachid>140689</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-08 16:11:36 -0700</bug_when>
    <thetext>Comment on attachment 140689
Patch

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

Seems reasonable.  rs=me.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:122
&gt; +struct MouseEventInfo {

Structs tend to very quickly become classes. :)

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:302
&gt; +    MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventMove);

OwnPtr?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:700
&gt; +    delete eventInfo;

:(  Manual memory management is sad times. :(

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:709
&gt; +            usleep(delayedEvent.delay * 1000);

This is sad.  That we need to artificially slow down the testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618919</commentid>
    <comment_count>19</comment_count>
      <attachid>140689</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 16:21:00 -0700</bug_when>
    <thetext>Comment on attachment 140689
Patch

Clearing flags on attachment: 140689

Committed r116464: &lt;http://trac.webkit.org/changeset/116464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618921</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 16:21:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136421</attachid>
            <date>2012-04-10 04:06:51 -0700</date>
            <delta_ts>2012-04-10 04:21:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward.patch</filename>
            <type>text/plain</type>
            <size>18622</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MmVhZDgzLi5kZDhlYzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTAgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdl
cmUgZmFpbGluZyBkdWUgdG8gdGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAg
ICAgQWRkZWQgRUZMIHNwZWNpZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBv
cnQgMkQgd2hlZWwgZXZlbnRzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDQtMDkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydCB0cmlnZ2VycyBWaXNpYmxlU2VsZWN0aW9u
OjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZAppbmRleCBlMTdiNDlkLi42NWRkZGFkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZApAQCAtOSwxMCArOSw2IEBAIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGR1bXBGaWxlbmFtZUJl
aW5nRHJhZ2dlZAogZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sCiAKLSMgRUZM
J3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgY29ycmVjdGx5IHNlbmQgYSBzaW5nbGUgd2hlZWwgZXZl
bnQgd2hlbiBtb3VzZVNjcm9sbEJ5IGlzIGNhbGxlZCB3aXRoIGJvdGggeCBhbmQgeSBub3QtbnVs
bAotZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwK
LWZhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNjcm9sbC5odG1sCi0KICMgRUZMJ3MgRXZlbnRT
ZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5IHlldAogZmFz
dC9ldmVudHMvY29udGludW91cy1wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYu
aHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZp
Y2UuaHRtbApAQCAtNjMsOCArNTksNiBAQCBzdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMu
eGh0bWwKIAogIyBFRkwncyBFdmVudFNlbmRlciBuZWVkcyB0byBlbWl0IGRvdWJsZSBjbGlja3Mg
KGUuZy4gdG8gc2VsZWN0IHRleHQpCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAotZmFzdC9ldmVudHMvZGJsY2xpY2st
YWRkRXZlbnRMaXN0ZW5lci5odG1sCi1mYXN0L2Zvcm1zL3Bhc3N3b3JkLWRvdWJsZWNsaWNrLXNl
bGVjdGlvbi5odG1sCiAKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGJl
Z2luRHJhZ1dpdGhGaWxlcyB5ZXQKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZnJhbWVzLmh0bWwKQEAgLTEwNCw3ICs5OCw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy90b3VjaAog
CiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBsZWFwRm9yd2FyZCB5ZXQK
LWVkaXRpbmcvcGFzdGVib2FyZC80OTQ3MTMwLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
VHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRy
b3AtZGVhZC1mcmFtZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LWlu
LXN2Zy5zdmcKQEAgLTEyNCw3ICsxMTcsNiBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUt
ZHJhZ25kcm9wLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uLzQ4OTU0MjgtNC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MzMzNzI1Lmh0
bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1sdHItMi1sZWZ0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWx0ci0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci1yaWdo
dC5odG1sCkBAIC0xMzQsOCArMTI2LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5k
LWFmdGVyLXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0
Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0x
NDYsMTggKzEzNiwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJs
ZS1pZnJhbWUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1i
eS1kcmFnLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0
ZXItZG91YmxlLWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LW91dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hp
dHRlc3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81
MDU2NjE5Lmh0bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5o
dG1sCiBmYXN0L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xNzMsMzQgKzE1NSwyMSBAQCBm
YXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0
bWwKIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0w
MDUuaHRtbAotZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2Ut
YnV0dG9uLmh0bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZl
bnRzL29uZHJhZ2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAog
ZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWNsaWNrLWh5cGVybGluay5odG1sCi1mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2luZy10aW1lcnMuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1t
b3VzZXVwLWRlZXAuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWlu
c2VydGJhY2suaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLXR3aWNl
Lmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCiBmYXN0L2V2
ZW50cy9zZWxlY3RzdGFydC1ieS1kb3VibGUtdHJpcGxlLWNsaWNrcy5odG1sCiBmYXN0L2V2ZW50
cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LXNp
bmdsZS1jbGljay13aXRoLXNoaWZ0Lmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2Ut
ZHJhZy10by1lZGl0YWJsZS5odG1sCiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNs
aWNrLmh0bWwKIGZhc3QvZXZlbnRzL3pvb20tZGJsY2xpY2suaHRtbAogZmFzdC9mb3Jtcy9kcmFn
LWludG8tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9kcmFnLW91dC1vZi10ZXh0YXJlYS5odG1s
Ci1mYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1oaXQtdGVzdC5odG1sCiBmYXN0L2Zvcm1zL2Zv
Y3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCiBmYXN0L2Zvcm1zL3NlYXJjaC1jYW5jZWwtYnV0
dG9uLW1vdXNldXAuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtZGlzYWJsZWQtcmVhZG9ubHkuaHRt
bAogZmFzdC9mb3Jtcy90ZXh0ZmllbGQtZHJhZy1pbnRvLWRpc2FibGVkLmh0bWwKIGZhc3QvZm9y
bXMvdHlwZS1hZnRlci1mb2N1cy1ydWxlLXNocmluay13aWR0aC5odG1sCi1mYXN0L2ZyYW1lcy9m
cmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQuaHRtbAotZmFzdC9mcmFtZXMvZnJh
bWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwKLWZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9y
ZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS5odG1sCi1mYXN0
L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmct
bm9SZXNpemUtdG8tZmFsc2UuaHRtbAogZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2VyLmh0bWwK
IGZhc3QvdGFibGUvY2xpY2stbmVhci1hbm9ueW1vdXMtdGFibGUuaHRtbAogZmFzdC90ZXh0L29m
ZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Ny
b2xsaW5nLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTEyN2FmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitGQUlM
IGV2ZW50LndoZWVsRGVsdGFZIHNob3VsZCBiZSAtNjAwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hl
ZWxEZWx0YVggaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGFZIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCotMTIwCitGQUlMIGV2ZW50Lndo
ZWVsRGVsdGFYIHNob3VsZCBiZSAtMzYwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hlZWxEZWx0YSBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorUEFTUyBkaXYuc2Nyb2xsVG9wIGlzIHdp
bmRvdy5leHBlY3RlZFNjcm9sbFRvcCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNrCitQQVNTIGRp
di5zY3JvbGxMZWZ0IGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqd2luZG93LnBpeGVsc1Bl
cldoZWVsVGljaworCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZDQ2NDFlYS4uMmViMGQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA0LTEwICBBbGV4YW5k
ZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtF
RkxdW0RSVF0gRXZlbnRTZW5kZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2YgbGVhcEZvcndhcmQg
ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNDg2CisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGVhcEZvcndhcmQgZnVuY3Rpb24KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChEZWxheWVkRXZlbnQpOgorICAgICAg
ICAoTW91c2VFdmVudEluZm86Ok1vdXNlRXZlbnRJbmZvKToKKyAgICAgICAgKE1vdXNlRXZlbnRJ
bmZvKToKKyAgICAgICAgKHNlbmRDbGljayk6CisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6
CisgICAgICAgIChtb3VzZVVwQ2FsbGJhY2spOgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFj
ayk6CisgICAgICAgIChsZWFwRm9yd2FyZENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlU2Nyb2xs
QnlDYWxsYmFjayk6CisgICAgICAgIChmZWVkT3JRdWV1ZU1vdXNlRXZlbnQpOgorICAgICAgICAo
ZmVlZE1vdXNlRXZlbnQpOgorICAgICAgICAoZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKToKKwogMjAx
Mi0wNC0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzY1Ni4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU5MzRkNGMuLmZjNDYzZjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtNjMsNiArNjMsMTcgQEAgc3RhdGlj
IGludCBnQ2xpY2tDb3VudDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NdWx0aXBsaWVyUmF0
aW8gPSAxLjJmOwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm87CitzdHJ1Y3QgRGVsYXllZEV2ZW50
IHsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvOworICAgIHVsb25nIGRlbGF5OworfTsK
Kworc3RhdGljIGNvbnN0IGludCBnRGVsYXllZFF1ZXVlU2l6ZSA9IDEwMjQ7CitzdGF0aWMgRGVs
YXllZEV2ZW50IGdFdmVudFF1ZXVlW2dEZWxheWVkUXVldWVTaXplXTsKK3N0YXRpYyB1bnNpZ25l
ZCBnU3RhcnRPZkV2ZW50UXVldWU7CitzdGF0aWMgdW5zaWduZWQgZ0VuZE9mRXZlbnRRdWV1ZTsK
KwogLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KIGVu
dW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBEb21LZXlMb2NhdGlvblN0YW5kYXJkLApAQCAtMTE0
LDYgKzEyNSw0MiBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZvIHsKICAgICBFdmFzS2V5TW9kaWZpZXIg
bW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZlbnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50
SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKKyAg
ICAgICAgOiBldmVudChldmVudCkKKyAgICAgICAgLCBtb2RpZmllcnMobW9kaWZpZXJzKQorICAg
ICAgICAsIGJ1dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICAsIGhvcml6b250YWxE
ZWx0YSgwKQorICAgICAgICAsIHZlcnRpY2FsRGVsdGEoMCkKKyAgICB7fQorCisgICBNb3VzZUV2
ZW50SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycywg
RXZhc01vdXNlQnV0dG9uIGJ1dHRvbikKKyAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICwg
bW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAgICAsIGJ1dHRvbihidXR0b24pCisgICAgICAgLCBo
b3Jpem9udGFsRGVsdGEoMCkKKyAgICAgICAsIHZlcnRpY2FsRGVsdGEoMCkKKyAgIHt9CisKKyAg
IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFzS2V5TW9kaWZpZXIgbW9k
aWZpZXJzLCBpbnQgaG9yaXpvbnRhbERlbHRhLCBpbnQgdmVydGljYWxEZWx0YSkKKyAgICAgICA6
IGV2ZW50KGV2ZW50KQorICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAgICAsIGJ1
dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICwgaG9yaXpvbnRhbERlbHRhKGhvcml6
b250YWxEZWx0YSkKKyAgICAgICAsIHZlcnRpY2FsRGVsdGEodmVydGljYWxEZWx0YSkKKyAgIHt9
CisKKyAgICBFdmFzTW91c2VFdmVudCBldmVudDsKKyAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZp
ZXJzOworICAgIEV2YXNNb3VzZUJ1dHRvbiBidXR0b247CisgICAgaW50IGhvcml6b250YWxEZWx0
YTsKKyAgICBpbnQgdmVydGljYWxEZWx0YTsKK307CisKK3N0YXRpYyB2b2lkIGZlZWRPclF1ZXVl
TW91c2VFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvLCBib29sIHNob3VsZEZlZWRRdWV1
ZWRFdmVudHMgPSB0cnVlKTsKK3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJ
bmZvKiBldmVudEluZm8pOworc3RhdGljIHZvaWQgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CisK
IHN0YXRpYyB2b2lkIHNldEV2YXNNb2RpZmllcnMoRXZhcyogZXZhcywgRXZhc0tleU1vZGlmaWVy
IG1vZGlmaWVycykKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogbW9kaWZpZXJOYW1lc1tdID0g
eyAiQ29udHJvbCIsICJTaGlmdCIsICJBbHQiLCAiU3VwZXIiIH07CkBAIC0xNDEsMzYgKzE4OCwx
MCBAQCBzdGF0aWMgRXZhc01vdXNlQnV0dG9uIHRyYW5zbGF0ZU1vdXNlQnV0dG9uTnVtYmVyKGlu
dCBldmVudFNlbmRlckJ1dHRvbk51bWJlcikKICAgICByZXR1cm4gRXZhc01vdXNlQnV0dG9uTGVm
dDsKIH0KIAotc3RhdGljIHZvaWQgc2VuZE1vdXNlRXZlbnQoRXZhcyogZXZhcywgRXZhc01vdXNl
RXZlbnQgZXZlbnQsIGludCBidXR0b25OdW1iZXIsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMp
Ci17Ci0gICAgdW5zaWduZWQgdGltZVN0YW1wID0gMDsKLQotICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6bGF5b3V0RnJhbWUoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwotCi0gICAgc2V0RXZh
c01vZGlmaWVycyhldmFzLCBtb2RpZmllcnMpOwotICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2
ZW50TW92ZSkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX21vdmUoZXZhcywgZ0xhc3RN
b3VzZVBvc2l0aW9uWCwgZ0xhc3RNb3VzZVBvc2l0aW9uWSwgdGltZVN0YW1wKyssIDApOwotICAg
IGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50RG93bikKLSAgICAgICAgZXZhc19ldmVudF9mZWVk
X21vdXNlX2Rvd24oZXZhcywgYnV0dG9uTnVtYmVyLCBFVkFTX0JVVFRPTl9OT05FLCB0aW1lU3Rh
bXArKywgMCk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRVcCkKLSAgICAgICAgZXZh
c19ldmVudF9mZWVkX21vdXNlX3VwKGV2YXMsIGJ1dHRvbk51bWJlciwgRVZBU19CVVRUT05fTk9O
RSwgdGltZVN0YW1wKyssIDApOwotCi0gICAgY29uc3QgYm9vbCBob3Jpem9udGFsID0gISEoZXZl
bnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Ny
b2xsUmlnaHQpOwotICAgIGNvbnN0IGJvb2wgdmVydGljYWwgPSAhIShldmVudCAmIEV2YXNNb3Vz
ZUV2ZW50U2Nyb2xsVXAgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsRG93bik7Ci0gICAg
aWYgKHZlcnRpY2FsICYmIGhvcml6b250YWwpIHsKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21v
dXNlX3doZWVsKGV2YXMsIDAsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXApID8gMTAg
OiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVl
bChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQpID8gMTAgOiAtMTAs
IHRpbWVTdGFtcCwgMCk7Ci0gICAgfSBlbHNlIGlmICh2ZXJ0aWNhbCkKLSAgICAgICAgZXZhc19l
dmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Ny
b2xsVXApID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0gICAgZWxzZSBpZiAoaG9yaXpvbnRh
bCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDEsIChldmVudCAm
IEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCkgPyAxMCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLQot
ICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgRXZhc0tleU1vZGlmaWVyTm9uZSk7Ci19Ci0KIHN0
YXRpYyBFaW5hX0Jvb2wgc2VuZENsaWNrKHZvaWQqKQogewotICAgIHNlbmRNb3VzZUV2ZW50KGV2
YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRD
bGljaywgRXZhc01vdXNlQnV0dG9uTGVmdCwgRXZhc0tleU1vZGlmaWVyTm9uZSk7CisgICAgTW91
c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVu
dENsaWNrLCBFdmFzS2V5TW9kaWZpZXJOb25lLCBFdmFzTW91c2VCdXR0b25MZWZ0KTsKKyAgICBm
ZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJbmZvKTsKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJB
Q0tfQ0FOQ0VMOwogfQogCkBAIC0yNDIsOCArMjYzLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91
c2VEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LAogICAgIHVwZGF0ZUNsaWNrQ291bnQoYnV0dG9uKTsKIAogICAgIEV2YXNLZXlNb2RpZmllciBt
b2RpZmllcnMgPSBhcmd1bWVudENvdW50ID49IDIgPyBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250
ZXh0LCBhcmd1bWVudHNbMV0pIDogRXZhc0tleU1vZGlmaWVyTm9uZTsKLSAgICBzZW5kTW91c2VF
dmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3Vz
ZUV2ZW50RG93biwgYnV0dG9uLCBtb2RpZmllcnMpOwotCisgICAgTW91c2VFdmVudEluZm8qIGV2
ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudERvd24sIG1vZGlmaWVy
cywgKEV2YXNNb3VzZUJ1dHRvbilidXR0b24pOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChl
dmVudEluZm8pOwogICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0gYnV0dG9uOwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTI2Miw5ICsyODMsMTEgQEAg
c3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICBnTGFzdENsaWNrQnV0dG9uID0gZ0J1dHRvbkN1
cnJlbnRseURvd247CiAgICAgZ0xhc3RDbGlja1RpbWVPZmZzZXQgPSBnVGltZU9mZnNldDsKICAg
ICBnQnV0dG9uQ3VycmVudGx5RG93biA9IDA7CisgICAgZ0RyYWdNb2RlID0gZmFsc2U7CiAKICAg
ICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1lbnRDb3VudCA+PSAyID8gbW9kaWZp
ZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFdKSA6IEV2YXNLZXlNb2RpZmllck5v
bmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFp
bkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudFVwLCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihi
dXR0b24pLCBtb2RpZmllcnMpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcg
TW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRVcCwgbW9kaWZpZXJzLCB0cmFuc2xhdGVNb3Vz
ZUJ1dHRvbk51bWJlcihidXR0b24pKTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJ
bmZvKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAg
LTI4MCw3ICszMDMsMjIgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBpZiAoZXhjZXB0
aW9uICYmICpleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIAotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dz
ZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRNb3ZlLCBFdmFzTW91c2VCdXR0b25Ob25l
LCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBpZiAoZ0J1dHRvbkN1cnJlbnRseURvd24pCisg
ICAgICAgIGdEcmFnTW9kZSA9IHRydWU7CisKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZv
ID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50TW92ZSwgRXZhc0tleU1vZGlmaWVy
Tm9uZSwgRXZhc01vdXNlQnV0dG9uTm9uZSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2
ZW50SW5mbywgZmFsc2UpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgbGVhcEZvcndhcmRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAwKSB7CisgICAg
ICAgIGNvbnN0IGludCBsZWFwRm9yd2FyZERlbGF5ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgZ0V2ZW50UXVldWVbZ0VuZE9mRXZl
bnRRdWV1ZV0uZGVsYXkgPSBsZWFwRm9yd2FyZERlbGF5OworICAgICAgICBnVGltZU9mZnNldCAr
PSBsZWFwRm9yd2FyZERlbGF5OworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzA2LDE0ICszNDQsMTcgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgbW91c2VTY3JvbGxCeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGkKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGNvbnN0IGludCBob3Jpem9udGFsID0g
c3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pKTsKKyAgICAvLyBXZSBuZWVkIHRvIGludmVydCBzY29sbGluZyB2YWx1ZXMgc2lu
Y2UgaW4gRUZMIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgdGhhdAorICAgIC8vIGNhbnZhcyBpcyBz
Y3JvbGxpbmcgZG93bgorICAgIGNvbnN0IGludCBob3Jpem9udGFsID0gLSBzdGF0aWNfY2FzdDxp
bnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwog
ICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IHN0YXRpY19j
YXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KSk7CisgICAgY29uc3QgaW50IHZlcnRpY2FsID0gLSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOwogICAgIGlmIChleGNl
cHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogCi0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJv
d3Nlci0+bWFpbkZyYW1lKCkpLCBldmFzTW91c2VFdmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGlj
YWxPZmZzZXRzKGhvcml6b250YWwsIHZlcnRpY2FsKSwgRXZhc01vdXNlQnV0dG9uTm9uZSwgRXZh
c0tleU1vZGlmaWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBN
b3VzZUV2ZW50SW5mbyhldmFzTW91c2VFdmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGljYWxPZmZz
ZXRzKGhvcml6b250YWwsIHZlcnRpY2FsKSwgRXZhc0tleU1vZGlmaWVyTm9uZSwgaG9yaXpvbnRh
bCwgdmVydGljYWwpOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8pOwogICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtNTU3LDYgKzU5
OCw3IEBAIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAg
IHsgIm1vdXNlRG93biIsIG1vdXNlRG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91c2VV
cCIsIG1vdXNlVXBDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgIm1vdXNlTW92ZVRvIiwgbW91c2VN
b3ZlVG9DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImxlYXBGb3J3YXJkIiwgbGVhcEZvcndhcmRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgIHsgImtleURvd24iLCBrZXlEb3duQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICB7ICJzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrIiwgc2NoZWR1bGVBc3luY2hyb25v
dXNDbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAic2NoZWR1bGVBc3luY2hyb25vdXNLZXlE
b3duIiwgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYx
MCwzICs2NTIsNzIgQEAgSlNPYmplY3RSZWYgbWFrZUV2ZW50U2VuZGVyKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBib29sIGlzVG9wRnJhbWUpCiAKICAgICByZXR1cm4gSlNPYmplY3RNYWtlKGNvbnRl
eHQsIGdldENsYXNzKGNvbnRleHQpLCAwKTsKIH0KKworc3RhdGljIHZvaWQgZmVlZE9yUXVldWVN
b3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8sIGJvb2wgc2hvdWxkRmVlZFF1ZXVl
ZEV2ZW50cykKK3sKKyAgICBpZiAoKGdEcmFnTW9kZSB8fCBnU3RhcnRPZkV2ZW50UXVldWUgIT0g
Z0VuZE9mRXZlbnRRdWV1ZSB8fCBnRXZlbnRRdWV1ZVtnRW5kT2ZFdmVudFF1ZXVlXS5kZWxheSkg
JiYKKyAgICAgICAgIGdFbmRPZkV2ZW50UXVldWUgPCBnRGVsYXllZFF1ZXVlU2l6ZSkgeworICAg
ICAgICBnRXZlbnRRdWV1ZVtnRW5kT2ZFdmVudFF1ZXVlKytdLmV2ZW50SW5mbyA9IGV2ZW50SW5m
bzsKKworICAgICAgICBpZiAoc2hvdWxkRmVlZFF1ZXVlZEV2ZW50cykKKyAgICAgICAgICAgIGZl
ZWRRdWV1ZWRNb3VzZUV2ZW50cygpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZlZWRNb3VzZUV2
ZW50KGV2ZW50SW5mbyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBmZWVkTW91c2VFdmVudChN
b3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvKQoreworICAgIGlmICghZXZlbnRJbmZvKQorICAgICAg
ICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAwOworICAgIEV2YXNfT2JqZWN0
KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWluRnJhbWUoKTsKKyAgICBFdmFzKiBldmFzID0gZXZh
c19vYmplY3RfZXZhc19nZXQobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmxheW91dEZyYW1lKG1haW5GcmFtZSk7CisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQgPSBl
dmVudEluZm8tPmV2ZW50OworCisgICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBldmVudEluZm8t
Pm1vZGlmaWVycyk7CisKKyAgICBFdmFzX0J1dHRvbl9GbGFncyBmbGFncyA9IEVWQVNfQlVUVE9O
X05PTkU7CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwYXNzIGFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gd2l0aCBvdXIgZXZlbnRzLCBzbyB0aGF0CisgICAgLy8gd2UgY291bGQgY29uc3RydWN0
IGNvcnJlY3QgUGxhdGZvcm1XaGVlbEV2ZW50LiBBdCB0aGUgbW9tZW50LCBtYXggbnVtYmVyCisg
ICAgLy8gb2YgY2xpY2tzIGlzIDMKKyAgICBpZiAoZ0NsaWNrQ291bnQgPT0gMykKKyAgICAgICAg
ZmxhZ3MgPSBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7CisgICAgZWxzZSBpZiAoZ0NsaWNrQ291
bnQgPT0gMikKKyAgICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9ET1VCTEVfQ0xJQ0s7CisKKyAg
ICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUpCisgICAgICAgIGV2YXNfZXZlbnRfZmVl
ZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgsIGdMYXN0TW91c2VQb3NpdGlv
blksIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudERvd24p
CisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9kb3duKGV2YXMsIGV2ZW50SW5mby0+YnV0
dG9uLCBmbGFncywgdGltZVN0YW1wKyssIDApOworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2
ZW50VXApCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV91cChldmFzLCBldmVudEluZm8t
PmJ1dHRvbiwgZmxhZ3MsIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91
c2VFdmVudFNjcm9sbExlZnQgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsUmlnaHQpCisg
ICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCBldmVudEluZm8tPmhv
cml6b250YWxEZWx0YSwgdGltZVN0YW1wLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VF
dmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbERvd24pCisgICAgICAg
IGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCBldmVudEluZm8tPnZlcnRpY2Fs
RGVsdGEsIHRpbWVTdGFtcCwgMCk7CisKKyAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNL
ZXlNb2RpZmllck5vbmUpOworCisgICAgZGVsZXRlIGV2ZW50SW5mbzsKK30KKworc3RhdGljIHZv
aWQgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCkKK3sKKyAgICB3aGlsZSAoZ1N0YXJ0T2ZFdmVudFF1
ZXVlIDwgZ0VuZE9mRXZlbnRRdWV1ZSkgeworICAgICAgICBpZiAoZ0V2ZW50UXVldWVbZ1N0YXJ0
T2ZFdmVudFF1ZXVlXS5kZWxheSkgeworICAgICAgICAgICAgdXNsZWVwKGdFdmVudFF1ZXVlW2dT
dGFydE9mRXZlbnRRdWV1ZV0uZGVsYXkgKiAxMDAwKTsKKyAgICAgICAgICAgIGdFdmVudFF1ZXVl
W2dTdGFydE9mRXZlbnRRdWV1ZV0uZGVsYXkgPSAwOworICAgICAgICB9CisKKyAgICAgICAgZmVl
ZE1vdXNlRXZlbnQoZ0V2ZW50UXVldWVbZ1N0YXJ0T2ZFdmVudFF1ZXVlXS5ldmVudEluZm8pOwor
ICAgICAgICBnRXZlbnRRdWV1ZVtnU3RhcnRPZkV2ZW50UXVldWVdLmV2ZW50SW5mbyA9IDA7Cisg
ICAgICAgIGdTdGFydE9mRXZlbnRRdWV1ZSsrOworICAgIH0KKworICAgIGdTdGFydE9mRXZlbnRR
dWV1ZSA9IDA7CisgICAgZ0VuZE9mRXZlbnRRdWV1ZSA9IDA7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136427</attachid>
            <date>2012-04-10 04:21:39 -0700</date>
            <delta_ts>2012-04-10 11:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v2.patch</filename>
            <type>text/plain</type>
            <size>18614</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MmVhZDgzLi5kZDhlYzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTAgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdl
cmUgZmFpbGluZyBkdWUgdG8gdGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAg
ICAgQWRkZWQgRUZMIHNwZWNpZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBv
cnQgMkQgd2hlZWwgZXZlbnRzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDQtMDkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydCB0cmlnZ2VycyBWaXNpYmxlU2VsZWN0aW9u
OjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZAppbmRleCBlMTdiNDlkLi42NWRkZGFkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZApAQCAtOSwxMCArOSw2IEBAIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGR1bXBGaWxlbmFtZUJl
aW5nRHJhZ2dlZAogZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sCiAKLSMgRUZM
J3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgY29ycmVjdGx5IHNlbmQgYSBzaW5nbGUgd2hlZWwgZXZl
bnQgd2hlbiBtb3VzZVNjcm9sbEJ5IGlzIGNhbGxlZCB3aXRoIGJvdGggeCBhbmQgeSBub3QtbnVs
bAotZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwK
LWZhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNjcm9sbC5odG1sCi0KICMgRUZMJ3MgRXZlbnRT
ZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5IHlldAogZmFz
dC9ldmVudHMvY29udGludW91cy1wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYu
aHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZp
Y2UuaHRtbApAQCAtNjMsOCArNTksNiBAQCBzdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMu
eGh0bWwKIAogIyBFRkwncyBFdmVudFNlbmRlciBuZWVkcyB0byBlbWl0IGRvdWJsZSBjbGlja3Mg
KGUuZy4gdG8gc2VsZWN0IHRleHQpCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAotZmFzdC9ldmVudHMvZGJsY2xpY2st
YWRkRXZlbnRMaXN0ZW5lci5odG1sCi1mYXN0L2Zvcm1zL3Bhc3N3b3JkLWRvdWJsZWNsaWNrLXNl
bGVjdGlvbi5odG1sCiAKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGJl
Z2luRHJhZ1dpdGhGaWxlcyB5ZXQKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZnJhbWVzLmh0bWwKQEAgLTEwNCw3ICs5OCw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy90b3VjaAog
CiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBsZWFwRm9yd2FyZCB5ZXQK
LWVkaXRpbmcvcGFzdGVib2FyZC80OTQ3MTMwLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
VHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRy
b3AtZGVhZC1mcmFtZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LWlu
LXN2Zy5zdmcKQEAgLTEyNCw3ICsxMTcsNiBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUt
ZHJhZ25kcm9wLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uLzQ4OTU0MjgtNC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MzMzNzI1Lmh0
bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1sdHItMi1sZWZ0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWx0ci0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci1yaWdo
dC5odG1sCkBAIC0xMzQsOCArMTI2LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5k
LWFmdGVyLXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0
Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0x
NDYsMTggKzEzNiwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJs
ZS1pZnJhbWUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1i
eS1kcmFnLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0
ZXItZG91YmxlLWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LW91dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hp
dHRlc3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81
MDU2NjE5Lmh0bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5o
dG1sCiBmYXN0L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xNzMsMzQgKzE1NSwyMSBAQCBm
YXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0
bWwKIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0w
MDUuaHRtbAotZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2Ut
YnV0dG9uLmh0bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZl
bnRzL29uZHJhZ2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAog
ZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWNsaWNrLWh5cGVybGluay5odG1sCi1mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2luZy10aW1lcnMuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1t
b3VzZXVwLWRlZXAuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWlu
c2VydGJhY2suaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLXR3aWNl
Lmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCiBmYXN0L2V2
ZW50cy9zZWxlY3RzdGFydC1ieS1kb3VibGUtdHJpcGxlLWNsaWNrcy5odG1sCiBmYXN0L2V2ZW50
cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LXNp
bmdsZS1jbGljay13aXRoLXNoaWZ0Lmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2Ut
ZHJhZy10by1lZGl0YWJsZS5odG1sCiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNs
aWNrLmh0bWwKIGZhc3QvZXZlbnRzL3pvb20tZGJsY2xpY2suaHRtbAogZmFzdC9mb3Jtcy9kcmFn
LWludG8tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9kcmFnLW91dC1vZi10ZXh0YXJlYS5odG1s
Ci1mYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1oaXQtdGVzdC5odG1sCiBmYXN0L2Zvcm1zL2Zv
Y3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCiBmYXN0L2Zvcm1zL3NlYXJjaC1jYW5jZWwtYnV0
dG9uLW1vdXNldXAuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtZGlzYWJsZWQtcmVhZG9ubHkuaHRt
bAogZmFzdC9mb3Jtcy90ZXh0ZmllbGQtZHJhZy1pbnRvLWRpc2FibGVkLmh0bWwKIGZhc3QvZm9y
bXMvdHlwZS1hZnRlci1mb2N1cy1ydWxlLXNocmluay13aWR0aC5odG1sCi1mYXN0L2ZyYW1lcy9m
cmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQuaHRtbAotZmFzdC9mcmFtZXMvZnJh
bWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwKLWZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9y
ZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS5odG1sCi1mYXN0
L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmct
bm9SZXNpemUtdG8tZmFsc2UuaHRtbAogZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2VyLmh0bWwK
IGZhc3QvdGFibGUvY2xpY2stbmVhci1hbm9ueW1vdXMtdGFibGUuaHRtbAogZmFzdC90ZXh0L29m
ZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Ny
b2xsaW5nLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTEyN2FmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitGQUlM
IGV2ZW50LndoZWVsRGVsdGFZIHNob3VsZCBiZSAtNjAwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hl
ZWxEZWx0YVggaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGFZIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCotMTIwCitGQUlMIGV2ZW50Lndo
ZWVsRGVsdGFYIHNob3VsZCBiZSAtMzYwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hlZWxEZWx0YSBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorUEFTUyBkaXYuc2Nyb2xsVG9wIGlzIHdp
bmRvdy5leHBlY3RlZFNjcm9sbFRvcCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNrCitQQVNTIGRp
di5zY3JvbGxMZWZ0IGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqd2luZG93LnBpeGVsc1Bl
cldoZWVsVGljaworCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZDQ2NDFlYS4uMmViMGQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA0LTEwICBBbGV4YW5k
ZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtF
RkxdW0RSVF0gRXZlbnRTZW5kZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2YgbGVhcEZvcndhcmQg
ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNDg2CisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGVhcEZvcndhcmQgZnVuY3Rpb24KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChEZWxheWVkRXZlbnQpOgorICAgICAg
ICAoTW91c2VFdmVudEluZm86Ok1vdXNlRXZlbnRJbmZvKToKKyAgICAgICAgKE1vdXNlRXZlbnRJ
bmZvKToKKyAgICAgICAgKHNlbmRDbGljayk6CisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6
CisgICAgICAgIChtb3VzZVVwQ2FsbGJhY2spOgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFj
ayk6CisgICAgICAgIChsZWFwRm9yd2FyZENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlU2Nyb2xs
QnlDYWxsYmFjayk6CisgICAgICAgIChmZWVkT3JRdWV1ZU1vdXNlRXZlbnQpOgorICAgICAgICAo
ZmVlZE1vdXNlRXZlbnQpOgorICAgICAgICAoZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKToKKwogMjAx
Mi0wNC0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzY1Ni4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU5MzRkNGMuLjg2ZjZhMTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtNjMsNiArNjMsMTcgQEAgc3RhdGlj
IGludCBnQ2xpY2tDb3VudDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NdWx0aXBsaWVyUmF0
aW8gPSAxLjJmOwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm87CitzdHJ1Y3QgRGVsYXllZEV2ZW50
IHsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvOworICAgIHVsb25nIGRlbGF5OworfTsK
Kworc3RhdGljIGNvbnN0IGludCBnRGVsYXllZFF1ZXVlU2l6ZSA9IDEwMjQ7CitzdGF0aWMgRGVs
YXllZEV2ZW50IGdFdmVudFF1ZXVlW2dEZWxheWVkUXVldWVTaXplXTsKK3N0YXRpYyB1bnNpZ25l
ZCBnU3RhcnRPZkV2ZW50UXVldWU7CitzdGF0aWMgdW5zaWduZWQgZ0VuZE9mRXZlbnRRdWV1ZTsK
KwogLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KIGVu
dW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBEb21LZXlMb2NhdGlvblN0YW5kYXJkLApAQCAtMTE0
LDYgKzEyNSw0NSBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZvIHsKICAgICBFdmFzS2V5TW9kaWZpZXIg
bW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZlbnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50
SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKKyAg
ICAgICAgOiBldmVudChldmVudCkKKyAgICAgICAgLCBtb2RpZmllcnMobW9kaWZpZXJzKQorICAg
ICAgICAsIGJ1dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICAsIGhvcml6b250YWxE
ZWx0YSgwKQorICAgICAgICAsIHZlcnRpY2FsRGVsdGEoMCkKKyAgICB7CisgICAgfQorCisgICAg
TW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnQgZXZlbnQsIEV2YXNLZXlNb2RpZmllciBtb2Rp
ZmllcnMsIEV2YXNNb3VzZUJ1dHRvbiBidXR0b24pCisgICAgICAgOiBldmVudChldmVudCkKKyAg
ICAgICAsIG1vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgLCBidXR0b24oYnV0dG9uKQorICAg
ICAgICwgaG9yaXpvbnRhbERlbHRhKDApCisgICAgICAgLCB2ZXJ0aWNhbERlbHRhKDApCisgICAg
eworICAgIH0KKworICAgIE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFz
S2V5TW9kaWZpZXIgbW9kaWZpZXJzLCBpbnQgaG9yaXpvbnRhbERlbHRhLCBpbnQgdmVydGljYWxE
ZWx0YSkKKyAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVy
cykKKyAgICAgICAsIGJ1dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICwgaG9yaXpv
bnRhbERlbHRhKGhvcml6b250YWxEZWx0YSkKKyAgICAgICAsIHZlcnRpY2FsRGVsdGEodmVydGlj
YWxEZWx0YSkKKyAgICB7CisgICAgfQorCisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQ7CisgICAg
RXZhc0tleU1vZGlmaWVyIG1vZGlmaWVyczsKKyAgICBFdmFzTW91c2VCdXR0b24gYnV0dG9uOwor
ICAgIGludCBob3Jpem9udGFsRGVsdGE7CisgICAgaW50IHZlcnRpY2FsRGVsdGE7Cit9OworCitz
dGF0aWMgdm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBib29sIHNo
b3VsZEZlZWRRdWV1ZWRFdmVudHMgPSB0cnVlKTsKK3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50
KE1vdXNlRXZlbnRJbmZvKik7CitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKTsK
Kwogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBFdmFzS2V5TW9kaWZp
ZXIgbW9kaWZpZXJzKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10g
PSB7ICJDb250cm9sIiwgIlNoaWZ0IiwgIkFsdCIsICJTdXBlciIgfTsKQEAgLTE0MSwzNiArMTkx
LDEwIEBAIHN0YXRpYyBFdmFzTW91c2VCdXR0b24gdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIo
aW50IGV2ZW50U2VuZGVyQnV0dG9uTnVtYmVyKQogICAgIHJldHVybiBFdmFzTW91c2VCdXR0b25M
ZWZ0OwogfQogCi1zdGF0aWMgdm9pZCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFzTW91
c2VFdmVudCBldmVudCwgaW50IGJ1dHRvbk51bWJlciwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVy
cykKLXsKLSAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAwOwotCi0gICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpsYXlvdXRGcmFtZShicm93c2VyLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIG1vZGlmaWVycyk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNl
RXZlbnRNb3ZlKQotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfbW92ZShldmFzLCBnTGFz
dE1vdXNlUG9zaXRpb25YLCBnTGFzdE1vdXNlUG9zaXRpb25ZLCB0aW1lU3RhbXArKywgMCk7Ci0g
ICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnREb3duKQotICAgICAgICBldmFzX2V2ZW50X2Zl
ZWRfbW91c2VfZG93bihldmFzLCBidXR0b25OdW1iZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVT
dGFtcCsrLCAwKTsKLSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFVwKQotICAgICAgICBl
dmFzX2V2ZW50X2ZlZWRfbW91c2VfdXAoZXZhcywgYnV0dG9uTnVtYmVyLCBFVkFTX0JVVFRPTl9O
T05FLCB0aW1lU3RhbXArKywgMCk7Ci0KLSAgICBjb25zdCBib29sIGhvcml6b250YWwgPSAhIShl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxSaWdodCk7Ci0gICAgY29uc3QgYm9vbCB2ZXJ0aWNhbCA9ICEhKGV2ZW50ICYgRXZhc01v
dXNlRXZlbnRTY3JvbGxVcCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxEb3duKTsKLSAg
ICBpZiAodmVydGljYWwgJiYgaG9yaXpvbnRhbCkgewotICAgICAgICBldmFzX2V2ZW50X2ZlZWRf
bW91c2Vfd2hlZWwoZXZhcywgMCwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxVcCkgPyAx
MCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3do
ZWVsKGV2YXMsIDEsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCkgPyAxMCA6IC0x
MCwgdGltZVN0YW1wLCAwKTsKLSAgICB9IGVsc2UgaWYgKHZlcnRpY2FsKQotICAgICAgICBldmFz
X2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMCwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxVcCkgPyAxMCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLSAgICBlbHNlIGlmIChob3Jpem9u
dGFsKQotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50
ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwot
Ci0gICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKLX0KLQog
c3RhdGljIEVpbmFfQm9vbCBzZW5kQ2xpY2sodm9pZCopCiB7Ci0gICAgc2VuZE1vdXNlRXZlbnQo
ZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVu
dENsaWNrLCBFdmFzTW91c2VCdXR0b25MZWZ0LCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBN
b3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2
ZW50Q2xpY2ssIEV2YXNLZXlNb2RpZmllck5vbmUsIEV2YXNNb3VzZUJ1dHRvbkxlZnQpOworICAg
IGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8pOwogICAgIHJldHVybiBFQ09SRV9DQUxM
QkFDS19DQU5DRUw7CiB9CiAKQEAgLTI0Miw4ICsyNjYsOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBt
b3VzZURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sCiAgICAgdXBkYXRlQ2xpY2tDb3VudChidXR0b24pOwogCiAgICAgRXZhc0tleU1vZGlmaWVy
IG1vZGlmaWVycyA9IGFyZ3VtZW50Q291bnQgPj0gMiA/IG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSkgOiBFdmFzS2V5TW9kaWZpZXJOb25lOwotICAgIHNlbmRNb3Vz
ZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01v
dXNlRXZlbnREb3duLCBidXR0b24sIG1vZGlmaWVycyk7Ci0KKyAgICBNb3VzZUV2ZW50SW5mbyog
ZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50RG93biwgbW9kaWZp
ZXJzLCAoRXZhc01vdXNlQnV0dG9uKWJ1dHRvbik7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50
KGV2ZW50SW5mbyk7CiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSBidXR0b247CiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpAQCAtMjYyLDkgKzI4NiwxMSBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwogICAgIGdMYXN0Q2xpY2tCdXR0b24gPSBnQnV0dG9u
Q3VycmVudGx5RG93bjsKICAgICBnTGFzdENsaWNrVGltZU9mZnNldCA9IGdUaW1lT2Zmc2V0Owog
ICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0gMDsKKyAgICBnRHJhZ01vZGUgPSBmYWxzZTsKIAog
ICAgIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMgPSBhcmd1bWVudENvdW50ID49IDIgPyBtb2Rp
ZmllcnNGcm9tSlNWYWx1ZShjb250ZXh0LCBhcmd1bWVudHNbMV0pIDogRXZhc0tleU1vZGlmaWVy
Tm9uZTsKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5t
YWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50VXAsIHRyYW5zbGF0ZU1vdXNlQnV0dG9uTnVtYmVy
KGJ1dHRvbiksIG1vZGlmaWVycyk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5l
dyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudFVwLCBtb2RpZmllcnMsIHRyYW5zbGF0ZU1v
dXNlQnV0dG9uTnVtYmVyKGJ1dHRvbikpOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVu
dEluZm8pOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApA
QCAtMjgwLDcgKzMwNiwyMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGlmIChleGNl
cHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogCi0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJv
d3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudE1vdmUsIEV2YXNNb3VzZUJ1dHRvbk5v
bmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIGlmIChnQnV0dG9uQ3VycmVudGx5RG93bikK
KyAgICAgICAgZ0RyYWdNb2RlID0gdHJ1ZTsKKworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudElu
Zm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRNb3ZlLCBFdmFzS2V5TW9kaWZp
ZXJOb25lLCBFdmFzTW91c2VCdXR0b25Ob25lKTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQo
ZXZlbnRJbmZvLCBmYWxzZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBsZWFwRm9yd2FyZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+IDApIHsKKyAg
ICAgICAgY29uc3QgaW50IGxlYXBGb3J3YXJkRGVsYXkgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICBnRXZlbnRRdWV1ZVtnRW5kT2ZF
dmVudFF1ZXVlXS5kZWxheSA9IGxlYXBGb3J3YXJkRGVsYXk7CisgICAgICAgIGdUaW1lT2Zmc2V0
ICs9IGxlYXBGb3J3YXJkRGVsYXk7CisgICAgfQorCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0zMDYsMTQgKzM0NywxNyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aQogICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgY29uc3QgaW50IGhvcml6b250YWwg
PSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0s
IGV4Y2VwdGlvbikpOworICAgIC8vIFdlIG5lZWQgdG8gaW52ZXJ0IHNjb2xsaW5nIHZhbHVlcyBz
aW5jZSBpbiBFRkwgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyB0aGF0CisgICAgLy8gY2FudmFzIGlz
IHNjcm9sbGluZyBkb3duCisgICAgY29uc3QgaW50IGhvcml6b250YWwgPSAtIHN0YXRpY19jYXN0
PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgY29uc3QgaW50IHZlcnRpY2FsID0gc3RhdGlj
X2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRp
b24pKTsKKyAgICBjb25zdCBpbnQgdmVydGljYWwgPSAtIHN0YXRpY19jYXN0PGludD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CiAgICAgaWYgKGV4
Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChi
cm93c2VyLT5tYWluRnJhbWUoKSksIGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250YWxBbmRWZXJ0
aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzTW91c2VCdXR0b25Ob25lLCBF
dmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3
IE1vdXNlRXZlbnRJbmZvKGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250YWxBbmRWZXJ0aWNhbE9m
ZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzS2V5TW9kaWZpZXJOb25lLCBob3Jpem9u
dGFsLCB2ZXJ0aWNhbCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC01NTcsNiAr
NjAxLDcgQEAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAg
ICAgeyAibW91c2VEb3duIiwgbW91c2VEb3duQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJtb3Vz
ZVVwIiwgbW91c2VVcENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91c2VNb3ZlVG8iLCBtb3Vz
ZU1vdmVUb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAibGVhcEZvcndhcmQiLCBsZWFwRm9yd2Fy
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAia2V5RG93biIsIGtleURvd25DYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2siLCBzY2hlZHVsZUFzeW5jaHJv
bm91c0NsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd24iLCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApAQCAt
NjEwLDMgKzY1NSw3MSBAQCBKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVm
IGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSkKIAogICAgIHJldHVybiBKU09iamVjdE1ha2UoY29u
dGV4dCwgZ2V0Q2xhc3MoY29udGV4dCksIDApOwogfQorCitzdGF0aWMgdm9pZCBmZWVkT3JRdWV1
ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbywgYm9vbCBzaG91bGRGZWVkUXVl
dWVkRXZlbnRzKQoreworICAgIGlmICgoZ0RyYWdNb2RlIHx8IGdTdGFydE9mRXZlbnRRdWV1ZSAh
PSBnRW5kT2ZFdmVudFF1ZXVlIHx8IGdFdmVudFF1ZXVlW2dFbmRPZkV2ZW50UXVldWVdLmRlbGF5
KQorICAgICAgICAmJiBnRW5kT2ZFdmVudFF1ZXVlIDwgZ0RlbGF5ZWRRdWV1ZVNpemUpIHsKKyAg
ICAgICAgZ0V2ZW50UXVldWVbZ0VuZE9mRXZlbnRRdWV1ZSsrXS5ldmVudEluZm8gPSBldmVudElu
Zm87CisKKyAgICAgICAgaWYgKHNob3VsZEZlZWRRdWV1ZWRFdmVudHMpCisgICAgICAgICAgICBm
ZWVkUXVldWVkTW91c2VFdmVudHMoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZmVlZE1vdXNlRXZl
bnQoZXZlbnRJbmZvKTsKK30KKworc3RhdGljIHZvaWQgZmVlZE1vdXNlRXZlbnQoTW91c2VFdmVu
dEluZm8qIGV2ZW50SW5mbykKK3sKKyAgICBpZiAoIWV2ZW50SW5mbykKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgdGltZVN0YW1wID0gMDsKKyAgICBFdmFzX09iamVjdCogbWFpbkZy
YW1lID0gYnJvd3Nlci0+bWFpbkZyYW1lKCk7CisgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0
X2V2YXNfZ2V0KG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXlv
dXRGcmFtZShtYWluRnJhbWUpOworICAgIEV2YXNNb3VzZUV2ZW50IGV2ZW50ID0gZXZlbnRJbmZv
LT5ldmVudDsKKworICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgZXZlbnRJbmZvLT5tb2RpZmll
cnMpOworCisgICAgRXZhc19CdXR0b25fRmxhZ3MgZmxhZ3MgPSBFVkFTX0JVVFRPTl9OT05FOwor
CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHdp
dGggb3VyIGV2ZW50cywgc28gdGhhdAorICAgIC8vIHdlIGNvdWxkIGNvbnN0cnVjdCBjb3JyZWN0
IFBsYXRmb3JtV2hlZWxFdmVudC4gQXQgdGhlIG1vbWVudCwgbWF4IG51bWJlcgorICAgIC8vIG9m
IGNsaWNrcyBpcyAzCisgICAgaWYgKGdDbGlja0NvdW50ID09IDMpCisgICAgICAgIGZsYWdzID0g
RVZBU19CVVRUT05fVFJJUExFX0NMSUNLOworICAgIGVsc2UgaWYgKGdDbGlja0NvdW50ID09IDIp
CisgICAgICAgIGZsYWdzID0gRVZBU19CVVRUT05fRE9VQkxFX0NMSUNLOworCisgICAgaWYgKGV2
ZW50ICYgRXZhc01vdXNlRXZlbnRNb3ZlKQorICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vf
bW92ZShldmFzLCBnTGFzdE1vdXNlUG9zaXRpb25YLCBnTGFzdE1vdXNlUG9zaXRpb25ZLCB0aW1l
U3RhbXArKywgMCk7CisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnREb3duKQorICAgICAg
ICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfZG93bihldmFzLCBldmVudEluZm8tPmJ1dHRvbiwgZmxh
Z3MsIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFVwKQor
ICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfdXAoZXZhcywgZXZlbnRJbmZvLT5idXR0b24s
IGZsYWdzLCB0aW1lU3RhbXArKywgMCk7CisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxMZWZ0IHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFJpZ2h0KQorICAgICAgICBl
dmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgZXZlbnRJbmZvLT5ob3Jpem9udGFs
RGVsdGEsIHRpbWVTdGFtcCwgMCk7CisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3Jv
bGxVcCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxEb3duKQorICAgICAgICBldmFzX2V2
ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMCwgZXZlbnRJbmZvLT52ZXJ0aWNhbERlbHRhLCB0
aW1lU3RhbXAsIDApOworCisgICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBFdmFzS2V5TW9kaWZp
ZXJOb25lKTsKKworICAgIGRlbGV0ZSBldmVudEluZm87Cit9CisKK3N0YXRpYyB2b2lkIGZlZWRR
dWV1ZWRNb3VzZUV2ZW50cygpCit7CisgICAgd2hpbGUgKGdTdGFydE9mRXZlbnRRdWV1ZSA8IGdF
bmRPZkV2ZW50UXVldWUpIHsKKyAgICAgICAgaWYgKGdFdmVudFF1ZXVlW2dTdGFydE9mRXZlbnRR
dWV1ZV0uZGVsYXkpIHsKKyAgICAgICAgICAgIHVzbGVlcChnRXZlbnRRdWV1ZVtnU3RhcnRPZkV2
ZW50UXVldWVdLmRlbGF5ICogMTAwMCk7CisgICAgICAgICAgICBnRXZlbnRRdWV1ZVtnU3RhcnRP
ZkV2ZW50UXVldWVdLmRlbGF5ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGZlZWRNb3VzZUV2
ZW50KGdFdmVudFF1ZXVlW2dTdGFydE9mRXZlbnRRdWV1ZV0uZXZlbnRJbmZvKTsKKyAgICAgICAg
Z0V2ZW50UXVldWVbZ1N0YXJ0T2ZFdmVudFF1ZXVlXS5ldmVudEluZm8gPSAwOworICAgICAgICBn
U3RhcnRPZkV2ZW50UXVldWUrKzsKKyAgICB9CisKKyAgICBnU3RhcnRPZkV2ZW50UXVldWUgPSAw
OworICAgIGdFbmRPZkV2ZW50UXVldWUgPSAwOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136499</attachid>
            <date>2012-04-10 11:57:47 -0700</date>
            <delta_ts>2012-04-11 12:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v3.patch</filename>
            <type>text/plain</type>
            <size>18629</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MmVhZDgzLi5kZDhlYzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTAgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdl
cmUgZmFpbGluZyBkdWUgdG8gdGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAg
ICAgQWRkZWQgRUZMIHNwZWNpZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBv
cnQgMkQgd2hlZWwgZXZlbnRzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDQtMDkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydCB0cmlnZ2VycyBWaXNpYmxlU2VsZWN0aW9u
OjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZAppbmRleCBlMTdiNDlkLi42NWRkZGFkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZApAQCAtOSwxMCArOSw2IEBAIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGR1bXBGaWxlbmFtZUJl
aW5nRHJhZ2dlZAogZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sCiAKLSMgRUZM
J3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgY29ycmVjdGx5IHNlbmQgYSBzaW5nbGUgd2hlZWwgZXZl
bnQgd2hlbiBtb3VzZVNjcm9sbEJ5IGlzIGNhbGxlZCB3aXRoIGJvdGggeCBhbmQgeSBub3QtbnVs
bAotZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwK
LWZhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNjcm9sbC5odG1sCi0KICMgRUZMJ3MgRXZlbnRT
ZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5IHlldAogZmFz
dC9ldmVudHMvY29udGludW91cy1wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYu
aHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZp
Y2UuaHRtbApAQCAtNjMsOCArNTksNiBAQCBzdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMu
eGh0bWwKIAogIyBFRkwncyBFdmVudFNlbmRlciBuZWVkcyB0byBlbWl0IGRvdWJsZSBjbGlja3Mg
KGUuZy4gdG8gc2VsZWN0IHRleHQpCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAotZmFzdC9ldmVudHMvZGJsY2xpY2st
YWRkRXZlbnRMaXN0ZW5lci5odG1sCi1mYXN0L2Zvcm1zL3Bhc3N3b3JkLWRvdWJsZWNsaWNrLXNl
bGVjdGlvbi5odG1sCiAKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGJl
Z2luRHJhZ1dpdGhGaWxlcyB5ZXQKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZnJhbWVzLmh0bWwKQEAgLTEwNCw3ICs5OCw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy90b3VjaAog
CiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBsZWFwRm9yd2FyZCB5ZXQK
LWVkaXRpbmcvcGFzdGVib2FyZC80OTQ3MTMwLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
VHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRy
b3AtZGVhZC1mcmFtZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LWlu
LXN2Zy5zdmcKQEAgLTEyNCw3ICsxMTcsNiBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUt
ZHJhZ25kcm9wLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uLzQ4OTU0MjgtNC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MzMzNzI1Lmh0
bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1sdHItMi1sZWZ0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWx0ci0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci1yaWdo
dC5odG1sCkBAIC0xMzQsOCArMTI2LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5k
LWFmdGVyLXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0
Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0x
NDYsMTggKzEzNiwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJs
ZS1pZnJhbWUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1i
eS1kcmFnLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0
ZXItZG91YmxlLWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAot
ZWRpdGluZy9zZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LW91dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hp
dHRlc3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81
MDU2NjE5Lmh0bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5o
dG1sCiBmYXN0L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xNzMsMzQgKzE1NSwyMSBAQCBm
YXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0
bWwKIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0w
MDUuaHRtbAotZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2Ut
YnV0dG9uLmh0bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZl
bnRzL29uZHJhZ2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAog
ZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWNsaWNrLWh5cGVybGluay5odG1sCi1mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2luZy10aW1lcnMuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1t
b3VzZXVwLWRlZXAuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWlu
c2VydGJhY2suaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLXR3aWNl
Lmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCiBmYXN0L2V2
ZW50cy9zZWxlY3RzdGFydC1ieS1kb3VibGUtdHJpcGxlLWNsaWNrcy5odG1sCiBmYXN0L2V2ZW50
cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwKLWZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LXNp
bmdsZS1jbGljay13aXRoLXNoaWZ0Lmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2Ut
ZHJhZy10by1lZGl0YWJsZS5odG1sCiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1nZXN0dXJlLWNs
aWNrLmh0bWwKIGZhc3QvZXZlbnRzL3pvb20tZGJsY2xpY2suaHRtbAogZmFzdC9mb3Jtcy9kcmFn
LWludG8tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9kcmFnLW91dC1vZi10ZXh0YXJlYS5odG1s
Ci1mYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1oaXQtdGVzdC5odG1sCiBmYXN0L2Zvcm1zL2Zv
Y3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCiBmYXN0L2Zvcm1zL3NlYXJjaC1jYW5jZWwtYnV0
dG9uLW1vdXNldXAuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtZGlzYWJsZWQtcmVhZG9ubHkuaHRt
bAogZmFzdC9mb3Jtcy90ZXh0ZmllbGQtZHJhZy1pbnRvLWRpc2FibGVkLmh0bWwKIGZhc3QvZm9y
bXMvdHlwZS1hZnRlci1mb2N1cy1ydWxlLXNocmluay13aWR0aC5odG1sCi1mYXN0L2ZyYW1lcy9m
cmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQuaHRtbAotZmFzdC9mcmFtZXMvZnJh
bWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwKLWZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9y
ZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS5odG1sCi1mYXN0
L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmct
bm9SZXNpemUtdG8tZmFsc2UuaHRtbAogZmFzdC9saXN0cy9kcmFnLWludG8tbWFya2VyLmh0bWwK
IGZhc3QvdGFibGUvY2xpY2stbmVhci1hbm9ueW1vdXMtdGFibGUuaHRtbAogZmFzdC90ZXh0L29m
ZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Ny
b2xsaW5nLWRpdi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTEyN2FmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitGQUlM
IGV2ZW50LndoZWVsRGVsdGFZIHNob3VsZCBiZSAtNjAwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hl
ZWxEZWx0YVggaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCotMTIwCitQQVNTIGV2ZW50Lndo
ZWVsRGVsdGFZIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCotMTIwCitGQUlMIGV2ZW50Lndo
ZWVsRGVsdGFYIHNob3VsZCBiZSAtMzYwLiBXYXMgMC4KK1BBU1MgZXZlbnQud2hlZWxEZWx0YSBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorUEFTUyBkaXYuc2Nyb2xsVG9wIGlzIHdp
bmRvdy5leHBlY3RlZFNjcm9sbFRvcCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNrCitQQVNTIGRp
di5zY3JvbGxMZWZ0IGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqd2luZG93LnBpeGVsc1Bl
cldoZWVsVGljaworCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZDQ2NDFlYS4uMmViMGQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA0LTEwICBBbGV4YW5k
ZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtF
RkxdW0RSVF0gRXZlbnRTZW5kZXIgbmVlZHMgaW1wbGVtZW50YXRpb24gb2YgbGVhcEZvcndhcmQg
ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNDg2CisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGVhcEZvcndhcmQgZnVuY3Rpb24KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChEZWxheWVkRXZlbnQpOgorICAgICAg
ICAoTW91c2VFdmVudEluZm86Ok1vdXNlRXZlbnRJbmZvKToKKyAgICAgICAgKE1vdXNlRXZlbnRJ
bmZvKToKKyAgICAgICAgKHNlbmRDbGljayk6CisgICAgICAgIChtb3VzZURvd25DYWxsYmFjayk6
CisgICAgICAgIChtb3VzZVVwQ2FsbGJhY2spOgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFj
ayk6CisgICAgICAgIChsZWFwRm9yd2FyZENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlU2Nyb2xs
QnlDYWxsYmFjayk6CisgICAgICAgIChmZWVkT3JRdWV1ZU1vdXNlRXZlbnQpOgorICAgICAgICAo
ZmVlZE1vdXNlRXZlbnQpOgorICAgICAgICAoZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKToKKwogMjAx
Mi0wNC0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzY1Ni4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDU5MzRkNGMuLjEwOTIyOTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtNjMsNiArNjMsMTcgQEAgc3RhdGlj
IGludCBnQ2xpY2tDb3VudDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NdWx0aXBsaWVyUmF0
aW8gPSAxLjJmOwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm87CitzdHJ1Y3QgRGVsYXllZEV2ZW50
IHsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvOworICAgIHVsb25nIGRlbGF5OworfTsK
Kworc3RhdGljIGNvbnN0IGludCBnRGVsYXllZFF1ZXVlU2l6ZSA9IDEwMjQ7CitzdGF0aWMgRGVs
YXllZEV2ZW50IGdFdmVudFF1ZXVlW2dEZWxheWVkUXVldWVTaXplXTsKK3N0YXRpYyB1bnNpZ25l
ZCBnU3RhcnRPZkV2ZW50UXVldWU7CitzdGF0aWMgdW5zaWduZWQgZ0VuZE9mRXZlbnRRdWV1ZTsK
KwogLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KIGVu
dW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBEb21LZXlMb2NhdGlvblN0YW5kYXJkLApAQCAtMTE0
LDYgKzEyNSw0NSBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZvIHsKICAgICBFdmFzS2V5TW9kaWZpZXIg
bW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZlbnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50
SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKKyAg
ICAgICAgOiBldmVudChldmVudCkKKyAgICAgICAgLCBtb2RpZmllcnMobW9kaWZpZXJzKQorICAg
ICAgICAsIGJ1dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICAsIGhvcml6b250YWxE
ZWx0YSgwKQorICAgICAgICAsIHZlcnRpY2FsRGVsdGEoMCkKKyAgICB7CisgICAgfQorCisgICAg
TW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnQgZXZlbnQsIEV2YXNLZXlNb2RpZmllciBtb2Rp
ZmllcnMsIEV2YXNNb3VzZUJ1dHRvbiBidXR0b24pCisgICAgICAgOiBldmVudChldmVudCkKKyAg
ICAgICAsIG1vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgLCBidXR0b24oYnV0dG9uKQorICAg
ICAgICwgaG9yaXpvbnRhbERlbHRhKDApCisgICAgICAgLCB2ZXJ0aWNhbERlbHRhKDApCisgICAg
eworICAgIH0KKworICAgIE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFz
S2V5TW9kaWZpZXIgbW9kaWZpZXJzLCBpbnQgaG9yaXpvbnRhbERlbHRhLCBpbnQgdmVydGljYWxE
ZWx0YSkKKyAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVy
cykKKyAgICAgICAsIGJ1dHRvbihFdmFzTW91c2VCdXR0b25Ob25lKQorICAgICAgICwgaG9yaXpv
bnRhbERlbHRhKGhvcml6b250YWxEZWx0YSkKKyAgICAgICAsIHZlcnRpY2FsRGVsdGEodmVydGlj
YWxEZWx0YSkKKyAgICB7CisgICAgfQorCisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQ7CisgICAg
RXZhc0tleU1vZGlmaWVyIG1vZGlmaWVyczsKKyAgICBFdmFzTW91c2VCdXR0b24gYnV0dG9uOwor
ICAgIGludCBob3Jpem9udGFsRGVsdGE7CisgICAgaW50IHZlcnRpY2FsRGVsdGE7Cit9OworCitz
dGF0aWMgdm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBib29sIHNo
b3VsZEZlZWRRdWV1ZWRFdmVudHMgPSB0cnVlKTsKK3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50
KE1vdXNlRXZlbnRJbmZvKik7CitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKTsK
Kwogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBFdmFzS2V5TW9kaWZp
ZXIgbW9kaWZpZXJzKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10g
PSB7ICJDb250cm9sIiwgIlNoaWZ0IiwgIkFsdCIsICJTdXBlciIgfTsKQEAgLTE0MSwzNiArMTkx
LDEwIEBAIHN0YXRpYyBFdmFzTW91c2VCdXR0b24gdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIo
aW50IGV2ZW50U2VuZGVyQnV0dG9uTnVtYmVyKQogICAgIHJldHVybiBFdmFzTW91c2VCdXR0b25M
ZWZ0OwogfQogCi1zdGF0aWMgdm9pZCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFzTW91
c2VFdmVudCBldmVudCwgaW50IGJ1dHRvbk51bWJlciwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVy
cykKLXsKLSAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAwOwotCi0gICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpsYXlvdXRGcmFtZShicm93c2VyLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIG1vZGlmaWVycyk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNl
RXZlbnRNb3ZlKQotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfbW92ZShldmFzLCBnTGFz
dE1vdXNlUG9zaXRpb25YLCBnTGFzdE1vdXNlUG9zaXRpb25ZLCB0aW1lU3RhbXArKywgMCk7Ci0g
ICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnREb3duKQotICAgICAgICBldmFzX2V2ZW50X2Zl
ZWRfbW91c2VfZG93bihldmFzLCBidXR0b25OdW1iZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVT
dGFtcCsrLCAwKTsKLSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFVwKQotICAgICAgICBl
dmFzX2V2ZW50X2ZlZWRfbW91c2VfdXAoZXZhcywgYnV0dG9uTnVtYmVyLCBFVkFTX0JVVFRPTl9O
T05FLCB0aW1lU3RhbXArKywgMCk7Ci0KLSAgICBjb25zdCBib29sIGhvcml6b250YWwgPSAhIShl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxSaWdodCk7Ci0gICAgY29uc3QgYm9vbCB2ZXJ0aWNhbCA9ICEhKGV2ZW50ICYgRXZhc01v
dXNlRXZlbnRTY3JvbGxVcCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxEb3duKTsKLSAg
ICBpZiAodmVydGljYWwgJiYgaG9yaXpvbnRhbCkgewotICAgICAgICBldmFzX2V2ZW50X2ZlZWRf
bW91c2Vfd2hlZWwoZXZhcywgMCwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxVcCkgPyAx
MCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3do
ZWVsKGV2YXMsIDEsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCkgPyAxMCA6IC0x
MCwgdGltZVN0YW1wLCAwKTsKLSAgICB9IGVsc2UgaWYgKHZlcnRpY2FsKQotICAgICAgICBldmFz
X2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMCwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxVcCkgPyAxMCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLSAgICBlbHNlIGlmIChob3Jpem9u
dGFsKQotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50
ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwot
Ci0gICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKLX0KLQog
c3RhdGljIEVpbmFfQm9vbCBzZW5kQ2xpY2sodm9pZCopCiB7Ci0gICAgc2VuZE1vdXNlRXZlbnQo
ZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVu
dENsaWNrLCBFdmFzTW91c2VCdXR0b25MZWZ0LCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBN
b3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2
ZW50Q2xpY2ssIEV2YXNLZXlNb2RpZmllck5vbmUsIEV2YXNNb3VzZUJ1dHRvbkxlZnQpOworICAg
IGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8pOwogICAgIHJldHVybiBFQ09SRV9DQUxM
QkFDS19DQU5DRUw7CiB9CiAKQEAgLTI0Miw4ICsyNjYsOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBt
b3VzZURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sCiAgICAgdXBkYXRlQ2xpY2tDb3VudChidXR0b24pOwogCiAgICAgRXZhc0tleU1vZGlmaWVy
IG1vZGlmaWVycyA9IGFyZ3VtZW50Q291bnQgPj0gMiA/IG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSkgOiBFdmFzS2V5TW9kaWZpZXJOb25lOwotICAgIHNlbmRNb3Vz
ZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01v
dXNlRXZlbnREb3duLCBidXR0b24sIG1vZGlmaWVycyk7Ci0KKyAgICBNb3VzZUV2ZW50SW5mbyog
ZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50RG93biwgbW9kaWZp
ZXJzLCBzdGF0aWNfY2FzdDxFdmFzTW91c2VCdXR0b24+KGJ1dHRvbikpOworICAgIGZlZWRPclF1
ZXVlTW91c2VFdmVudChldmVudEluZm8pOwogICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0gYnV0
dG9uOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTI2
Miw5ICsyODYsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICBnTGFzdENsaWNrQnV0
dG9uID0gZ0J1dHRvbkN1cnJlbnRseURvd247CiAgICAgZ0xhc3RDbGlja1RpbWVPZmZzZXQgPSBn
VGltZU9mZnNldDsKICAgICBnQnV0dG9uQ3VycmVudGx5RG93biA9IDA7CisgICAgZ0RyYWdNb2Rl
ID0gZmFsc2U7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1lbnRDb3Vu
dCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFdKSA6IEV2
YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19n
ZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudFVwLCB0cmFuc2xhdGVNb3Vz
ZUJ1dHRvbk51bWJlcihidXR0b24pLCBtb2RpZmllcnMpOworICAgIE1vdXNlRXZlbnRJbmZvKiBl
dmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRVcCwgbW9kaWZpZXJz
LCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihidXR0b24pKTsKKyAgICBmZWVkT3JRdWV1ZU1v
dXNlRXZlbnQoZXZlbnRJbmZvKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CiAKQEAgLTI4MCw3ICszMDYsMjIgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VN
b3ZlVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24K
ICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0
X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRNb3ZlLCBFdmFz
TW91c2VCdXR0b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBpZiAoZ0J1dHRvbkN1
cnJlbnRseURvd24pCisgICAgICAgIGdEcmFnTW9kZSA9IHRydWU7CisKKyAgICBNb3VzZUV2ZW50
SW5mbyogZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50TW92ZSwg
RXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uTm9uZSk7CisgICAgZmVlZE9yUXVl
dWVNb3VzZUV2ZW50KGV2ZW50SW5mbywgZmFsc2UpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgbGVhcEZvcndhcmRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPiAwKSB7CisgICAgICAgIGNvbnN0IGludCBsZWFwRm9yd2FyZERlbGF5ID0gSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgZ0V2ZW50
UXVldWVbZ0VuZE9mRXZlbnRRdWV1ZV0uZGVsYXkgPSBsZWFwRm9yd2FyZERlbGF5OworICAgICAg
ICBnVGltZU9mZnNldCArPSBsZWFwRm9yd2FyZERlbGF5OworICAgIH0KKwogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzA2LDE0ICszNDcsMTcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgbW91c2VTY3JvbGxCeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGNvbnN0IGlu
dCBob3Jpem9udGFsID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAvLyBXZSBuZWVkIHRvIGludmVydCBzY29s
bGluZyB2YWx1ZXMgc2luY2UgaW4gRUZMIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgdGhhdAorICAg
IC8vIGNhbnZhcyBpcyBzY3JvbGxpbmcgZG93bgorICAgIGNvbnN0IGludCBob3Jpem9udGFsID0g
LShzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0s
IGV4Y2VwdGlvbikpKTsKICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICBjb25zdCBpbnQgdmVy
dGljYWwgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMV0sIGV4Y2VwdGlvbikpOworICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IC0oc3RhdGljX2Nh
c3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
KSk7CiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29i
amVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIGV2YXNNb3VzZUV2ZW50RnJvbUhv
cml6b250YWxBbmRWZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzTW91
c2VCdXR0b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBNb3VzZUV2ZW50SW5mbyog
ZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250
YWxBbmRWZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzS2V5TW9kaWZp
ZXJOb25lLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50
KGV2ZW50SW5mbyk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
fQogCkBAIC01NTcsNiArNjAxLDcgQEAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVu
Y3Rpb25zW10gPSB7CiAgICAgeyAibW91c2VEb3duIiwgbW91c2VEb3duQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICB7ICJtb3VzZVVwIiwgbW91c2VVcENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91
c2VNb3ZlVG8iLCBtb3VzZU1vdmVUb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAibGVhcEZvcndh
cmQiLCBsZWFwRm9yd2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAia2V5RG93biIsIGtleURv
d25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2siLCBz
Y2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJzY2hlZHVs
ZUFzeW5jaHJvbm91c0tleURvd24iLCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LApAQCAtNjEwLDMgKzY1NSw3MSBAQCBKU09iamVjdFJlZiBtYWtlRXZlbnRTZW5k
ZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSkKIAogICAgIHJldHVybiBK
U09iamVjdE1ha2UoY29udGV4dCwgZ2V0Q2xhc3MoY29udGV4dCksIDApOwogfQorCitzdGF0aWMg
dm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbywgYm9v
bCBzaG91bGRGZWVkUXVldWVkRXZlbnRzKQoreworICAgIGlmICgoZ0RyYWdNb2RlIHx8IGdTdGFy
dE9mRXZlbnRRdWV1ZSAhPSBnRW5kT2ZFdmVudFF1ZXVlIHx8IGdFdmVudFF1ZXVlW2dFbmRPZkV2
ZW50UXVldWVdLmRlbGF5KQorICAgICAgICAmJiBnRW5kT2ZFdmVudFF1ZXVlIDwgZ0RlbGF5ZWRR
dWV1ZVNpemUpIHsKKyAgICAgICAgZ0V2ZW50UXVldWVbZ0VuZE9mRXZlbnRRdWV1ZSsrXS5ldmVu
dEluZm8gPSBldmVudEluZm87CisKKyAgICAgICAgaWYgKHNob3VsZEZlZWRRdWV1ZWRFdmVudHMp
CisgICAgICAgICAgICBmZWVkUXVldWVkTW91c2VFdmVudHMoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgZmVlZE1vdXNlRXZlbnQoZXZlbnRJbmZvKTsKK30KKworc3RhdGljIHZvaWQgZmVlZE1vdXNl
RXZlbnQoTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbykKK3sKKyAgICBpZiAoIWV2ZW50SW5mbykK
KyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdGltZVN0YW1wID0gMDsKKyAgICBFdmFz
X09iamVjdCogbWFpbkZyYW1lID0gYnJvd3Nlci0+bWFpbkZyYW1lKCk7CisgICAgRXZhcyogZXZh
cyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpsYXlvdXRGcmFtZShtYWluRnJhbWUpOworICAgIEV2YXNNb3VzZUV2ZW50IGV2
ZW50ID0gZXZlbnRJbmZvLT5ldmVudDsKKworICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgZXZl
bnRJbmZvLT5tb2RpZmllcnMpOworCisgICAgRXZhc19CdXR0b25fRmxhZ3MgZmxhZ3MgPSBFVkFT
X0JVVFRPTl9OT05FOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcGFzcyBhZGRpdGlvbmFs
IGluZm9ybWF0aW9uIHdpdGggb3VyIGV2ZW50cywgc28gdGhhdAorICAgIC8vIHdlIGNvdWxkIGNv
bnN0cnVjdCBjb3JyZWN0IFBsYXRmb3JtV2hlZWxFdmVudC4gQXQgdGhlIG1vbWVudCwgbWF4IG51
bWJlcgorICAgIC8vIG9mIGNsaWNrcyBpcyAzCisgICAgaWYgKGdDbGlja0NvdW50ID09IDMpCisg
ICAgICAgIGZsYWdzID0gRVZBU19CVVRUT05fVFJJUExFX0NMSUNLOworICAgIGVsc2UgaWYgKGdD
bGlja0NvdW50ID09IDIpCisgICAgICAgIGZsYWdzID0gRVZBU19CVVRUT05fRE9VQkxFX0NMSUNL
OworCisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRNb3ZlKQorICAgICAgICBldmFzX2V2
ZW50X2ZlZWRfbW91c2VfbW92ZShldmFzLCBnTGFzdE1vdXNlUG9zaXRpb25YLCBnTGFzdE1vdXNl
UG9zaXRpb25ZLCB0aW1lU3RhbXArKywgMCk7CisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZl
bnREb3duKQorICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfZG93bihldmFzLCBldmVudElu
Zm8tPmJ1dHRvbiwgZmxhZ3MsIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFz
TW91c2VFdmVudFVwKQorICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfdXAoZXZhcywgZXZl
bnRJbmZvLT5idXR0b24sIGZsYWdzLCB0aW1lU3RhbXArKywgMCk7CisgICAgaWYgKGV2ZW50ICYg
RXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0IHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFJp
Z2h0KQorICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgZXZlbnRJ
bmZvLT5ob3Jpem9udGFsRGVsdGEsIHRpbWVTdGFtcCwgMCk7CisgICAgaWYgKGV2ZW50ICYgRXZh
c01vdXNlRXZlbnRTY3JvbGxVcCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxEb3duKQor
ICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMCwgZXZlbnRJbmZvLT52
ZXJ0aWNhbERlbHRhLCB0aW1lU3RhbXAsIDApOworCisgICAgc2V0RXZhc01vZGlmaWVycyhldmFz
LCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKworICAgIGRlbGV0ZSBldmVudEluZm87Cit9CisKK3N0
YXRpYyB2b2lkIGZlZWRRdWV1ZWRNb3VzZUV2ZW50cygpCit7CisgICAgd2hpbGUgKGdTdGFydE9m
RXZlbnRRdWV1ZSA8IGdFbmRPZkV2ZW50UXVldWUpIHsKKyAgICAgICAgaWYgKGdFdmVudFF1ZXVl
W2dTdGFydE9mRXZlbnRRdWV1ZV0uZGVsYXkpIHsKKyAgICAgICAgICAgIHVzbGVlcChnRXZlbnRR
dWV1ZVtnU3RhcnRPZkV2ZW50UXVldWVdLmRlbGF5ICogMTAwMCk7CisgICAgICAgICAgICBnRXZl
bnRRdWV1ZVtnU3RhcnRPZkV2ZW50UXVldWVdLmRlbGF5ID0gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIGZlZWRNb3VzZUV2ZW50KGdFdmVudFF1ZXVlW2dTdGFydE9mRXZlbnRRdWV1ZV0uZXZlbnRJ
bmZvKTsKKyAgICAgICAgZ0V2ZW50UXVldWVbZ1N0YXJ0T2ZFdmVudFF1ZXVlXS5ldmVudEluZm8g
PSAwOworICAgICAgICBnU3RhcnRPZkV2ZW50UXVldWUrKzsKKyAgICB9CisKKyAgICBnU3RhcnRP
ZkV2ZW50UXVldWUgPSAwOworICAgIGdFbmRPZkV2ZW50UXVldWUgPSAwOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136723</attachid>
            <date>2012-04-11 12:26:36 -0700</date>
            <delta_ts>2012-05-07 12:19:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v4.patch</filename>
            <type>text/plain</type>
            <size>18874</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MmVhZDgzLi5kZDhlYzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQt
MTAgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdl
cmUgZmFpbGluZyBkdWUgdG8gdGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAg
ICAgQWRkZWQgRUZMIHNwZWNpZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBv
cnQgMkQgd2hlZWwgZXZlbnRzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDQtMDkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydCB0cmlnZ2VycyBWaXNpYmxlU2VsZWN0aW9u
OjphZGp1c3RTZWxlY3Rpb25Ub0F2b2lkQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZAppbmRleCBlMTdiNDlkLi5jZjVjOTA0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZApAQCAtOSwxMCArOSw2IEBAIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGR1bXBGaWxlbmFtZUJl
aW5nRHJhZ2dlZAogZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sCiAKLSMgRUZM
J3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgY29ycmVjdGx5IHNlbmQgYSBzaW5nbGUgd2hlZWwgZXZl
bnQgd2hlbiBtb3VzZVNjcm9sbEJ5IGlzIGNhbGxlZCB3aXRoIGJvdGggeCBhbmQgeSBub3QtbnVs
bAotZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwK
LWZhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNjcm9sbC5odG1sCi0KICMgRUZMJ3MgRXZlbnRT
ZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5IHlldAogZmFz
dC9ldmVudHMvY29udGludW91cy1wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYu
aHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZp
Y2UuaHRtbApAQCAtNjMsOCArNTksNiBAQCBzdmcvem9vbS9wYWdlL3pvb20tem9vbS1jb29yZHMu
eGh0bWwKIAogIyBFRkwncyBFdmVudFNlbmRlciBuZWVkcyB0byBlbWl0IGRvdWJsZSBjbGlja3Mg
KGUuZy4gdG8gc2VsZWN0IHRleHQpCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1pbmxp
bmUtZmlyc3QtbGFzdC1jb250ZW50ZWRpdGFibGUuaHRtbAotZmFzdC9ldmVudHMvZGJsY2xpY2st
YWRkRXZlbnRMaXN0ZW5lci5odG1sCi1mYXN0L2Zvcm1zL3Bhc3N3b3JkLWRvdWJsZWNsaWNrLXNl
bGVjdGlvbi5odG1sCiAKICMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGJl
Z2luRHJhZ1dpdGhGaWxlcyB5ZXQKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZnJhbWVzLmh0bWwKQEAgLTEwMyw4ICs5Nyw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVy
IGRvZXMgbm90IGltcGxlbWVudCBhZGRUb3VjaFBvaW50LCBjbGVhclRvdWNoUG9pbnRzLCB0b3Vj
aFN0YXJ0IGFuZCBvdGhlciB0b3VjaC1yZWxhdGVkIGNhbGxiYWNrcwogZmFzdC9ldmVudHMvdG91
Y2gKIAotIyBFRkwncyBFdmVudFNlbmRlciBkb2VzIG5vdCBpbXBsZW1lbnQgbGVhcEZvcndhcmQg
eWV0Ci1lZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEzMC5odG1sCisjIEVGTCdzIHBvcnQgcmVxdWly
ZXMgaW1wbGVtZW50YXRpb24gb2YgQ2xpcGJvYXJkRWZsIGFuZCBEcmFnQ2xpZW50RWZsIGNsYXNz
ZXMgaW4gb3JkZXIgdG8gc3VwcHBvcnQgZHJhZyBuIGRyb3AgZnVuY3Rpb25hbGl0eQogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2RyYWctZHJvcC1kZWFkLWZyYW1lLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9k
cmFnLWRyb3AtaW5wdXQtaW4tc3ZnLnN2ZwpAQCAtMTI0LDcgKzExNyw2IEBAIGVkaXRpbmcvcGFz
dGVib2FyZC9zdWJmcmFtZS1kcmFnbmRyb3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1
NDI4LTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1h
bmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwKQEAgLTEzNCw4ICsxMjYsNiBAQCBlZGl0aW5nL3NlbGVj
dGlvbi9jYXJldC1ydGwtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1ydGwtcmlnaHQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L2NsaWNrLWJlZm9yZS1hbmQtYWZ0ZXItdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vY2xp
Y2stYmVsb3ctcnRsLXRleHQuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1vZi1y
dGwtd3JhcHBpbmctdGV4dC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250YWlucy1ib3VuZGFy
aWVzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NyYXNoLW9uLWRyYWctd2l0aC1tdXRhdGlvbi1l
dmVudHMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZGlyZWN0aW9uYWxpdHktYWZ0ZXItdW5kby1y
ZXBsYWNlLmh0bWwKQEAgLTE0NiwxOCArMTM2LDEwIEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWct
dG8tY29udGVudGVkaXRhYmxlLWlmcmFtZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
b3Zlci1maWxlLWlucHV0LWJ5LWRyYWctY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLXNlbGVjdGlvbi1hZnRlci1kb3VibGUtY2xpY2suaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
ZmFrZS1kcmFnLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1s
aW5lLWhlaWdodC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9ydGwtbW92ZS1zZWxlY3Rpb24tcmln
aHQtbGVmdC5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlu
cHV0LTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1
dC0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQt
My5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTQu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC01Lmh0
bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2YtZWRpdGFibGUuaHRtbAotZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LW91dC1vZi1mbG9hdGVkLWNvbnRlbnRlZGl0YWJsZS5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0LW9mLWZsb2F0ZWQtaW5wdXQuaHRtbAotZWRpdGlu
Zy9zZWxlY3Rpb24vc2VsZWN0LW91dC1vZi1mbG9hdGVkLXRleHRhcmVhLmh0bWwKLWZhc3QvYmxv
Y2svcG9zaXRpb25pbmcvaGl0dGVzdC1vbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWNoaWxkcmVuLmh0
bWwKIGZhc3QvZXZlbnRzLzUwNTY2MTkuaHRtbAogZmFzdC9ldmVudHMvYm9ndXMtZHJvcEVmZmVj
dC1lZmZlY3RBbGxvd2VkLmh0bWwKIGZhc3QvZXZlbnRzL2NsaWNrLWNvdW50Lmh0bWwKQEAgLTE3
MywzNCArMTU1LDIxIEBAIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMS5odG1sCiBmYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDIuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAzLmh0bWwKIGZhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwNS5odG1sCi1mYXN0L2V2ZW50cy9maXJlLW1vdXNlZG93bi13aGls
ZS1wcmVzc2luZy1tb3VzZS1idXR0b24uaHRtbAotZmFzdC9ldmVudHMvZnJhbWUtY2xpY2stZm9j
dXMuaHRtbAogZmFzdC9ldmVudHMvb25kcmFnZW50ZXIuaHRtbAogZmFzdC9ldmVudHMvb25kcm9w
LXRleHQtaHRtbC5odG1sCiBmYXN0L2V2ZW50cy9wYW5TY3JvbGwtY2xpY2staHlwZXJsaW5rLmh0
bWwKLWZhc3QvZXZlbnRzL3BvcHVwLWJsb2NraW5nLXRpbWVycy5odG1sCi1mYXN0L2V2ZW50cy9y
ZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAtZGVlcC5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFy
Z2V0LWluLW1vdXNldXAtaW5zZXJ0YmFjay5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0
LWluLW1vdXNldXAtdHdpY2UuaHRtbAotZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3Vz
ZXVwLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWRvdWJsZS10cmlwbGUtY2xpY2tz
Lmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWRyYWcuaHRtbAotZmFzdC9ldmVudHMv
c2VsZWN0c3RhcnQtYnktc2luZ2xlLWNsaWNrLXdpdGgtc2hpZnQuaHRtbAogZmFzdC9ldmVudHMv
c3RhbmRhbG9uZS1pbWFnZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGZhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAogZmFzdC9ldmVudHMvem9vbS1kYmxjbGljay5odG1s
CiBmYXN0L2Zvcm1zL2RyYWctaW50by10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2RyYWctb3V0
LW9mLXRleHRhcmVhLmh0bWwKLWZhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LWhpdC10ZXN0Lmh0
bWwKIGZhc3QvZm9ybXMvZm9jdXMtY2hhbmdlLW9uLWtleXByZXNzLmh0bWwKIGZhc3QvZm9ybXMv
c2VhcmNoLWNhbmNlbC1idXR0b24tbW91c2V1cC5odG1sCiBmYXN0L2Zvcm1zL3NlYXJjaC1kaXNh
YmxlZC1yZWFkb25seS5odG1sCiBmYXN0L2Zvcm1zL3RleHRmaWVsZC1kcmFnLWludG8tZGlzYWJs
ZWQuaHRtbAogZmFzdC9mb3Jtcy90eXBlLWFmdGVyLWZvY3VzLXJ1bGUtc2hyaW5rLXdpZHRoLmh0
bWwKLWZhc3QvZnJhbWVzL2ZyYW1lLWluaGVyaXQtbm9yZXNpemUtZnJvbS1mcmFtZXNldC5odG1s
Ci1mYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUuaHRtbAotZmFzdC9mcmFt
ZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1vdmFsLW9mLW5v
cmVzaXplLmh0bWwKLWZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6
ZWQtYWZ0ZXItc2V0dGluZy1ub1Jlc2l6ZS10by1mYWxzZS5odG1sCiBmYXN0L2xpc3RzL2RyYWct
aW50by1tYXJrZXIuaHRtbAogZmFzdC90YWJsZS9jbGljay1uZWFyLWFub255bW91cy10YWJsZS5o
dG1sCiBmYXN0L3RleHQvb2Zmc2V0Rm9yUG9zaXRpb24tY29tcGxleC1mYWxsYmFjay5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1k
aXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MTI3
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVu
dHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK0ZBSUwgZXZlbnQud2hlZWxEZWx0YVkgc2hvdWxkIGJlIC02MDAuIFdhcyAw
LgorUEFTUyBldmVudC53aGVlbERlbHRhWCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Ki0x
MjAKK1BBU1MgZXZlbnQud2hlZWxEZWx0YSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Ki0x
MjAKK1BBU1MgZXZlbnQud2hlZWxEZWx0YVkgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKi0x
MjAKK0ZBSUwgZXZlbnQud2hlZWxEZWx0YVggc2hvdWxkIGJlIC0zNjAuIFdhcyAwLgorUEFTUyBl
dmVudC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCotMTIwCitQQVNTIGRp
di5zY3JvbGxUb3AgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKndpbmRvdy5waXhlbHNQZXJX
aGVlbFRpY2sKK1BBU1MgZGl2LnNjcm9sbExlZnQgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsTGVm
dCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNrCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNDY0MWVhLi4yZWIwZDM4IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MTItMDQtMTAgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5j
b20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlv
biBvZiBsZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBJbXBsZW1lbnRlZCBsZWFwRm9yd2Fy
ZCBmdW5jdGlvbgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKERlbGF5
ZWRFdmVudCk6CisgICAgICAgIChNb3VzZUV2ZW50SW5mbzo6TW91c2VFdmVudEluZm8pOgorICAg
ICAgICAoTW91c2VFdmVudEluZm8pOgorICAgICAgICAoc2VuZENsaWNrKToKKyAgICAgICAgKG1v
dXNlRG93bkNhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6CisgICAgICAgICht
b3VzZU1vdmVUb0NhbGxiYWNrKToKKyAgICAgICAgKGxlYXBGb3J3YXJkQ2FsbGJhY2spOgorICAg
ICAgICAobW91c2VTY3JvbGxCeUNhbGxiYWNrKToKKyAgICAgICAgKGZlZWRPclF1ZXVlTW91c2VF
dmVudCk6CisgICAgICAgIChmZWVkTW91c2VFdmVudCk6CisgICAgICAgIChmZWVkUXVldWVkTW91
c2VFdmVudHMpOgorCiAyMDEyLTA0LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNjU2Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKaW5kZXggNTkzNGQ0Yy4uMTA5
MjI5OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCkBAIC02Myw2
ICs2MywxNyBAQCBzdGF0aWMgaW50IGdDbGlja0NvdW50OwogCiBzdGF0aWMgY29uc3QgZmxvYXQg
em9vbU11bHRpcGxpZXJSYXRpbyA9IDEuMmY7CiAKK3N0cnVjdCBNb3VzZUV2ZW50SW5mbzsKK3N0
cnVjdCBEZWxheWVkRXZlbnQgeworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm87CisgICAg
dWxvbmcgZGVsYXk7Cit9OworCitzdGF0aWMgY29uc3QgaW50IGdEZWxheWVkUXVldWVTaXplID0g
MTAyNDsKK3N0YXRpYyBEZWxheWVkRXZlbnQgZ0V2ZW50UXVldWVbZ0RlbGF5ZWRRdWV1ZVNpemVd
Oworc3RhdGljIHVuc2lnbmVkIGdTdGFydE9mRXZlbnRRdWV1ZTsKK3N0YXRpYyB1bnNpZ25lZCBn
RW5kT2ZFdmVudFF1ZXVlOworCiAvLyBLZXkgZXZlbnQgbG9jYXRpb24gY29kZSBkZWZpbmVkIGlu
IERPTSBMZXZlbCAzLgogZW51bSBLZXlMb2NhdGlvbkNvZGUgewogICAgIERvbUtleUxvY2F0aW9u
U3RhbmRhcmQsCkBAIC0xMTQsNiArMTI1LDQ1IEBAIHN0cnVjdCBLZXlFdmVudEluZm8gewogICAg
IEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnM7CiB9OwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm8g
eworICAgIE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFzS2V5TW9kaWZp
ZXIgbW9kaWZpZXJzKQorICAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICAsIG1vZGlmaWVy
cyhtb2RpZmllcnMpCisgICAgICAgICwgYnV0dG9uKEV2YXNNb3VzZUJ1dHRvbk5vbmUpCisgICAg
ICAgICwgaG9yaXpvbnRhbERlbHRhKDApCisgICAgICAgICwgdmVydGljYWxEZWx0YSgwKQorICAg
IHsKKyAgICB9CisKKyAgICBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZh
c0tleU1vZGlmaWVyIG1vZGlmaWVycywgRXZhc01vdXNlQnV0dG9uIGJ1dHRvbikKKyAgICAgICA6
IGV2ZW50KGV2ZW50KQorICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAgICAsIGJ1
dHRvbihidXR0b24pCisgICAgICAgLCBob3Jpem9udGFsRGVsdGEoMCkKKyAgICAgICAsIHZlcnRp
Y2FsRGVsdGEoMCkKKyAgICB7CisgICAgfQorCisgICAgTW91c2VFdmVudEluZm8oRXZhc01vdXNl
RXZlbnQgZXZlbnQsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMsIGludCBob3Jpem9udGFsRGVs
dGEsIGludCB2ZXJ0aWNhbERlbHRhKQorICAgICAgIDogZXZlbnQoZXZlbnQpCisgICAgICAgLCBt
b2RpZmllcnMobW9kaWZpZXJzKQorICAgICAgICwgYnV0dG9uKEV2YXNNb3VzZUJ1dHRvbk5vbmUp
CisgICAgICAgLCBob3Jpem9udGFsRGVsdGEoaG9yaXpvbnRhbERlbHRhKQorICAgICAgICwgdmVy
dGljYWxEZWx0YSh2ZXJ0aWNhbERlbHRhKQorICAgIHsKKyAgICB9CisKKyAgICBFdmFzTW91c2VF
dmVudCBldmVudDsKKyAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzOworICAgIEV2YXNNb3Vz
ZUJ1dHRvbiBidXR0b247CisgICAgaW50IGhvcml6b250YWxEZWx0YTsKKyAgICBpbnQgdmVydGlj
YWxEZWx0YTsKK307CisKK3N0YXRpYyB2b2lkIGZlZWRPclF1ZXVlTW91c2VFdmVudChNb3VzZUV2
ZW50SW5mbyosIGJvb2wgc2hvdWxkRmVlZFF1ZXVlZEV2ZW50cyA9IHRydWUpOworc3RhdGljIHZv
aWQgZmVlZE1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qKTsKK3N0YXRpYyB2b2lkIGZlZWRRdWV1
ZWRNb3VzZUV2ZW50cygpOworCiBzdGF0aWMgdm9pZCBzZXRFdmFzTW9kaWZpZXJzKEV2YXMqIGV2
YXMsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IG1vZGlmaWVyTmFtZXNbXSA9IHsgIkNvbnRyb2wiLCAiU2hpZnQiLCAiQWx0IiwgIlN1cGVyIiB9
OwpAQCAtMTQxLDM2ICsxOTEsMTAgQEAgc3RhdGljIEV2YXNNb3VzZUJ1dHRvbiB0cmFuc2xhdGVN
b3VzZUJ1dHRvbk51bWJlcihpbnQgZXZlbnRTZW5kZXJCdXR0b25OdW1iZXIpCiAgICAgcmV0dXJu
IEV2YXNNb3VzZUJ1dHRvbkxlZnQ7CiB9CiAKLXN0YXRpYyB2b2lkIHNlbmRNb3VzZUV2ZW50KEV2
YXMqIGV2YXMsIEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBpbnQgYnV0dG9uTnVtYmVyLCBFdmFzS2V5
TW9kaWZpZXIgbW9kaWZpZXJzKQotewotICAgIHVuc2lnbmVkIHRpbWVTdGFtcCA9IDA7Ci0KLSAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKGJyb3dzZXItPm1haW5GcmFt
ZSgpKTsKLQotICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgbW9kaWZpZXJzKTsKLSAgICBpZiAo
ZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3Vz
ZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgsIGdMYXN0TW91c2VQb3NpdGlvblksIHRp
bWVTdGFtcCsrLCAwKTsKLSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudERvd24pCi0gICAg
ICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9kb3duKGV2YXMsIGJ1dHRvbk51bWJlciwgRVZBU19C
VVRUT05fTk9ORSwgdGltZVN0YW1wKyssIDApOwotICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2
ZW50VXApCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV91cChldmFzLCBidXR0b25OdW1i
ZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVTdGFtcCsrLCAwKTsKLQotICAgIGNvbnN0IGJvb2wg
aG9yaXpvbnRhbCA9ICEhKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0IHwgZXZlbnQg
JiBFdmFzTW91c2VFdmVudFNjcm9sbFJpZ2h0KTsKLSAgICBjb25zdCBib29sIHZlcnRpY2FsID0g
ISEoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFzTW91c2VFdmVu
dFNjcm9sbERvd24pOwotICAgIGlmICh2ZXJ0aWNhbCAmJiBob3Jpem9udGFsKSB7Ci0gICAgICAg
IGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCAoZXZlbnQgJiBFdmFzTW91c2VF
dmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwotICAgICAgICBldmFzX2V2
ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3Jv
bGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwotICAgIH0gZWxzZSBpZiAodmVydGlj
YWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCAoZXZlbnQg
JiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwotICAg
IGVsc2UgaWYgKGhvcml6b250YWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVl
bChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQpID8gMTAgOiAtMTAs
IHRpbWVTdGFtcCwgMCk7Ci0KLSAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlNb2Rp
Zmllck5vbmUpOwotfQotCiBzdGF0aWMgRWluYV9Cb29sIHNlbmRDbGljayh2b2lkKikKIHsKLSAg
ICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUo
KSksIEV2YXNNb3VzZUV2ZW50Q2xpY2ssIEV2YXNNb3VzZUJ1dHRvbkxlZnQsIEV2YXNLZXlNb2Rp
Zmllck5vbmUpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVu
dEluZm8oRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNl
QnV0dG9uTGVmdCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbyk7CiAgICAg
cmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKIH0KIApAQCAtMjQyLDggKzI2Niw4IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwKICAgICB1cGRhdGVDbGlja0NvdW50KGJ1dHRvbik7CiAKICAg
ICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1lbnRDb3VudCA+PSAyID8gbW9kaWZp
ZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFdKSA6IEV2YXNLZXlNb2RpZmllck5v
bmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFp
bkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudERvd24sIGJ1dHRvbiwgbW9kaWZpZXJzKTsKLQorICAg
IE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNl
RXZlbnREb3duLCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PEV2YXNNb3VzZUJ1dHRvbj4oYnV0dG9u
KSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbyk7CiAgICAgZ0J1dHRvbkN1
cnJlbnRseURvd24gPSBidXR0b247CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQpAQCAtMjYyLDkgKzI4NiwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVVw
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKUwog
ICAgIGdMYXN0Q2xpY2tCdXR0b24gPSBnQnV0dG9uQ3VycmVudGx5RG93bjsKICAgICBnTGFzdENs
aWNrVGltZU9mZnNldCA9IGdUaW1lT2Zmc2V0OwogICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0g
MDsKKyAgICBnRHJhZ01vZGUgPSBmYWxzZTsKIAogICAgIEV2YXNLZXlNb2RpZmllciBtb2RpZmll
cnMgPSBhcmd1bWVudENvdW50ID49IDIgPyBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250ZXh0LCBh
cmd1bWVudHNbMV0pIDogRXZhc0tleU1vZGlmaWVyTm9uZTsKLSAgICBzZW5kTW91c2VFdmVudChl
dmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50
VXAsIHRyYW5zbGF0ZU1vdXNlQnV0dG9uTnVtYmVyKGJ1dHRvbiksIG1vZGlmaWVycyk7CisgICAg
TW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VF
dmVudFVwLCBtb2RpZmllcnMsIHRyYW5zbGF0ZU1vdXNlQnV0dG9uTnVtYmVyKGJ1dHRvbikpOwor
ICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8pOwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMjgwLDcgKzMwNiwyMiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBtb3VzZU1vdmVUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbgogICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgc2VuZE1vdXNl
RXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91
c2VFdmVudE1vdmUsIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOwor
ICAgIGlmIChnQnV0dG9uQ3VycmVudGx5RG93bikKKyAgICAgICAgZ0RyYWdNb2RlID0gdHJ1ZTsK
KworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZh
c01vdXNlRXZlbnRNb3ZlLCBFdmFzS2V5TW9kaWZpZXJOb25lLCBFdmFzTW91c2VCdXR0b25Ob25l
KTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBmYWxzZSk7CisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBsZWFwRm9yd2FyZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA+IDApIHsKKyAgICAgICAgY29uc3QgaW50IGxlYXBGb3J3YXJk
RGVsYXkgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24p
OworICAgICAgICBnRXZlbnRRdWV1ZVtnRW5kT2ZFdmVudFF1ZXVlXS5kZWxheSA9IGxlYXBGb3J3
YXJkRGVsYXk7CisgICAgICAgIGdUaW1lT2Zmc2V0ICs9IGxlYXBGb3J3YXJkRGVsYXk7CisgICAg
fQorCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0z
MDYsMTQgKzM0NywxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aQogICAgIGlmIChhcmd1bWVu
dENvdW50IDwgMikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogCi0gICAgY29uc3QgaW50IGhvcml6b250YWwgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIC8vIFdlIG5l
ZWQgdG8gaW52ZXJ0IHNjb2xsaW5nIHZhbHVlcyBzaW5jZSBpbiBFRkwgbmVnYXRpdmUgeiB2YWx1
ZSBtZWFucyB0aGF0CisgICAgLy8gY2FudmFzIGlzIHNjcm9sbGluZyBkb3duCisgICAgY29uc3Qg
aW50IGhvcml6b250YWwgPSAtKHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSkpOwogICAgIGlmIChleGNlcHRpb24gJiYgKmV4
Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwot
ICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgY29uc3QgaW50IHZlcnRp
Y2FsID0gLShzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMV0sIGV4Y2VwdGlvbikpKTsKICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHNlbmRN
b3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgZXZh
c01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRpY2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2
ZXJ0aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAg
IE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oZXZhc01vdXNl
RXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRpY2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2ZXJ0aWNh
bCksIEV2YXNLZXlNb2RpZmllck5vbmUsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKKyAgICBmZWVk
T3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJbmZvKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTU1Nyw2ICs2MDEsNyBAQCBzdGF0aWMgSlNTdGF0aWNG
dW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZURvd24iLCBtb3VzZURv
d25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgIm1vdXNlVXAiLCBtb3VzZVVwQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICB7ICJtb3VzZU1vdmVUbyIsIG1vdXNlTW92ZVRvQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICB7ICJsZWFwRm9yd2FyZCIsIGxlYXBGb3J3YXJkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7
ICJrZXlEb3duIiwga2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAic2NoZWR1bGVBc3lu
Y2hyb25vdXNDbGljayIsIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2tDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biIsIHNjaGVkdWxlQXN5bmNocm9u
b3VzS2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC02MTAsMyArNjU1LDcxIEBAIEpTT2JqZWN0
UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBpc1RvcEZyYW1l
KQogCiAgICAgcmV0dXJuIEpTT2JqZWN0TWFrZShjb250ZXh0LCBnZXRDbGFzcyhjb250ZXh0KSwg
MCk7CiB9CisKK3N0YXRpYyB2b2lkIGZlZWRPclF1ZXVlTW91c2VFdmVudChNb3VzZUV2ZW50SW5m
byogZXZlbnRJbmZvLCBib29sIHNob3VsZEZlZWRRdWV1ZWRFdmVudHMpCit7CisgICAgaWYgKChn
RHJhZ01vZGUgfHwgZ1N0YXJ0T2ZFdmVudFF1ZXVlICE9IGdFbmRPZkV2ZW50UXVldWUgfHwgZ0V2
ZW50UXVldWVbZ0VuZE9mRXZlbnRRdWV1ZV0uZGVsYXkpCisgICAgICAgICYmIGdFbmRPZkV2ZW50
UXVldWUgPCBnRGVsYXllZFF1ZXVlU2l6ZSkgeworICAgICAgICBnRXZlbnRRdWV1ZVtnRW5kT2ZF
dmVudFF1ZXVlKytdLmV2ZW50SW5mbyA9IGV2ZW50SW5mbzsKKworICAgICAgICBpZiAoc2hvdWxk
RmVlZFF1ZXVlZEV2ZW50cykKKyAgICAgICAgICAgIGZlZWRRdWV1ZWRNb3VzZUV2ZW50cygpOwor
ICAgIH0gZWxzZQorICAgICAgICBmZWVkTW91c2VFdmVudChldmVudEluZm8pOworfQorCitzdGF0
aWMgdm9pZCBmZWVkTW91c2VFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvKQoreworICAg
IGlmICghZXZlbnRJbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0aW1lU3Rh
bXAgPSAwOworICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWluRnJhbWUo
KTsKKyAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQobWFpbkZyYW1lKTsKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKG1haW5GcmFtZSk7CisgICAg
RXZhc01vdXNlRXZlbnQgZXZlbnQgPSBldmVudEluZm8tPmV2ZW50OworCisgICAgc2V0RXZhc01v
ZGlmaWVycyhldmFzLCBldmVudEluZm8tPm1vZGlmaWVycyk7CisKKyAgICBFdmFzX0J1dHRvbl9G
bGFncyBmbGFncyA9IEVWQVNfQlVUVE9OX05PTkU7CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBwYXNzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gd2l0aCBvdXIgZXZlbnRzLCBzbyB0aGF0Cisg
ICAgLy8gd2UgY291bGQgY29uc3RydWN0IGNvcnJlY3QgUGxhdGZvcm1XaGVlbEV2ZW50LiBBdCB0
aGUgbW9tZW50LCBtYXggbnVtYmVyCisgICAgLy8gb2YgY2xpY2tzIGlzIDMKKyAgICBpZiAoZ0Ns
aWNrQ291bnQgPT0gMykKKyAgICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7
CisgICAgZWxzZSBpZiAoZ0NsaWNrQ291bnQgPT0gMikKKyAgICAgICAgZmxhZ3MgPSBFVkFTX0JV
VFRPTl9ET1VCTEVfQ0xJQ0s7CisKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUp
CisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3Np
dGlvblgsIGdMYXN0TW91c2VQb3NpdGlvblksIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZl
bnQgJiBFdmFzTW91c2VFdmVudERvd24pCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9k
b3duKGV2YXMsIGV2ZW50SW5mby0+YnV0dG9uLCBmbGFncywgdGltZVN0YW1wKyssIDApOworICAg
IGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50VXApCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9t
b3VzZV91cChldmFzLCBldmVudEluZm8tPmJ1dHRvbiwgZmxhZ3MsIHRpbWVTdGFtcCsrLCAwKTsK
KyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQgfCBldmVudCAmIEV2YXNN
b3VzZUV2ZW50U2Nyb2xsUmlnaHQpCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVl
bChldmFzLCAxLCBldmVudEluZm8tPmhvcml6b250YWxEZWx0YSwgdGltZVN0YW1wLCAwKTsKKyAg
ICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFzTW91c2VF
dmVudFNjcm9sbERvd24pCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFz
LCAwLCBldmVudEluZm8tPnZlcnRpY2FsRGVsdGEsIHRpbWVTdGFtcCwgMCk7CisKKyAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOworCisgICAgZGVsZXRlIGV2
ZW50SW5mbzsKK30KKworc3RhdGljIHZvaWQgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCkKK3sKKyAg
ICB3aGlsZSAoZ1N0YXJ0T2ZFdmVudFF1ZXVlIDwgZ0VuZE9mRXZlbnRRdWV1ZSkgeworICAgICAg
ICBpZiAoZ0V2ZW50UXVldWVbZ1N0YXJ0T2ZFdmVudFF1ZXVlXS5kZWxheSkgeworICAgICAgICAg
ICAgdXNsZWVwKGdFdmVudFF1ZXVlW2dTdGFydE9mRXZlbnRRdWV1ZV0uZGVsYXkgKiAxMDAwKTsK
KyAgICAgICAgICAgIGdFdmVudFF1ZXVlW2dTdGFydE9mRXZlbnRRdWV1ZV0uZGVsYXkgPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgZmVlZE1vdXNlRXZlbnQoZ0V2ZW50UXVldWVbZ1N0YXJ0T2ZF
dmVudFF1ZXVlXS5ldmVudEluZm8pOworICAgICAgICBnRXZlbnRRdWV1ZVtnU3RhcnRPZkV2ZW50
UXVldWVdLmV2ZW50SW5mbyA9IDA7CisgICAgICAgIGdTdGFydE9mRXZlbnRRdWV1ZSsrOworICAg
IH0KKworICAgIGdTdGFydE9mRXZlbnRRdWV1ZSA9IDA7CisgICAgZ0VuZE9mRXZlbnRRdWV1ZSA9
IDA7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140570</attachid>
            <date>2012-05-07 12:19:04 -0700</date>
            <delta_ts>2012-05-07 12:39:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v5.patch</filename>
            <type>text/plain</type>
            <size>18097</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MDBiODRlLi44NjNjOWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUt
MDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyBkdWUgdG8g
dGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAgICAgQWRkZWQgRUZMIHNwZWNp
ZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBvcnQgMkQgd2hlZWwgZXZlbnRz
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDUtMDYgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0
b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gTmV3IHRlc3QgaW50cm9kdWNlZCBp
biByMTE2MjU1IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYmI1Mzc4
Ny4uY2Y2ZDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTksMTAgKzksNiBAQCBm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMg
bm90IGltcGxlbWVudCBkdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQKIGZhc3QvZXZlbnRzL2RyYWct
aW1hZ2UtZmlsZW5hbWUuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGNvcnJl
Y3RseSBzZW5kIGEgc2luZ2xlIHdoZWVsIGV2ZW50IHdoZW4gbW91c2VTY3JvbGxCeSBpcyBjYWxs
ZWQgd2l0aCBib3RoIHggYW5kIHkgbm90LW51bGwKLWZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25z
Y3JvbGwuaHRtbAotCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBjb250
aW51b3VzTW91c2VTY3JvbGxCeSB5ZXQKIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
ZGlyZWN0aW9uLWludmVydGVkLWZyb20tZGV2aWNlLmh0bWwKQEAgLTY3LDcgKzYzLDcgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKICMg
RUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFy
VG91Y2hQb2ludHMsIHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tz
CiBmYXN0L2V2ZW50cy90b3VjaAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxl
bWVudCBsZWFwRm9yd2FyZCB5ZXQKKyMgRUZMJ3MgcG9ydCByZXF1aXJlcyBpbXBsZW1lbnRhdGlv
biBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRFZmwgY2xhc3NlcyBpbiBvcmRlciB0byBz
dXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEz
MC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCkBAIC04OSw3ICs4NSw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRy
b3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4LTEuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwK
QEAgLTk5LDggKzk0LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5kLWFmdGVyLXRh
YmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0xMTEsMTggKzEw
NCwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1pZnJhbWUu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1ieS1kcmFnLWNy
YXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91Ymxl
LWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91
dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24t
cmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81MDU2NjE5Lmh0
bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5odG1sCiBmYXN0
L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xMzgsMzMgKzEyMywxOSBAQCBmYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwKIGZhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbAot
ZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2UtYnV0dG9uLmh0
bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJh
Z2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tpbmctdGltZXJzLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQt
aW4tbW91c2V1cC1kZWVwLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC1pbnNlcnRiYWNrLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC10
d2ljZS5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1jbGlja3MuaHRtbAogZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1i
eS1zaW5nbGUtY2xpY2std2l0aC1zaGlmdC5odG1sCiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWlt
YWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVy
ZS1jbGljay5odG1sCi1mYXN0L2V2ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMv
ZHJhZy1pbnRvLXRleHRhcmVhLmh0bWwKIGZhc3QvZm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFyZWEu
aHRtbAotZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtaGl0LXRlc3QuaHRtbAogZmFzdC9mb3Jt
cy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtY2FuY2Vs
LWJ1dHRvbi1tb3VzZXVwLmh0bWwKIGZhc3QvZm9ybXMvc2VhcmNoLWRpc2FibGVkLXJlYWRvbmx5
Lmh0bWwKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLWRyYWctaW50by1kaXNhYmxlZC5odG1sCiBmYXN0
L2Zvcm1zL3R5cGUtYWZ0ZXItZm9jdXMtcnVsZS1zaHJpbmstd2lkdGguaHRtbAotZmFzdC9mcmFt
ZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwKLWZhc3QvZnJhbWVz
L2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5odG1sCi1mYXN0L2ZyYW1lcy9mcmFtZS13aXRo
LW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAot
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0
aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKIGZhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci5o
dG1sCiBmYXN0L3RhYmxlL2NsaWNrLW5lYXItYW5vbnltb3VzLXRhYmxlLmh0bWwKIGZhc3QvdGV4
dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWlu
LXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxMjdhZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13
aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
RkFJTCBldmVudC53aGVlbERlbHRhWSBzaG91bGQgYmUgLTYwMC4gV2FzIDAuCitQQVNTIGV2ZW50
LndoZWVsRGVsdGFYIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhWSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorRkFJTCBldmVu
dC53aGVlbERlbHRhWCBzaG91bGQgYmUgLTM2MC4gV2FzIDAuCitQQVNTIGV2ZW50LndoZWVsRGVs
dGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKi0xMjAKK1BBU1MgZGl2LnNjcm9sbFRvcCBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3Aqd2luZG93LnBpeGVsc1BlcldoZWVsVGljaworUEFT
UyBkaXYuc2Nyb2xsTGVmdCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0KndpbmRvdy5waXhl
bHNQZXJXaGVlbFRpY2sKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDkwNWJjMzguLjkzMDFkYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNS0wNyAgQWxl
eGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXVtEUlRdIEV2ZW50U2VuZGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGxlYXBGb3J3
YXJkIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudGVkIGxlYXBGb3J3YXJkIGZ1bmN0aW9uIGluIEVmbCdzIERSVC4gVGhpcyBm
dW5jdGlvbiBpcyByZXF1aXJlZAorICAgICAgICB0byBkZWxheSBhbmQgcXVldWUgZXZlbnQgZXhl
Y3V0aW9uIGFuZCBzaW11bGF0ZSByZWFsIHVzZXIgYmVoYXZpb3IuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRGVsYXllZEV2ZW50KToK
KyAgICAgICAgKE1vdXNlRXZlbnRJbmZvOjpNb3VzZUV2ZW50SW5mbyk6CisgICAgICAgIChNb3Vz
ZUV2ZW50SW5mbyk6CisgICAgICAgIChzZW5kQ2xpY2spOgorICAgICAgICAobW91c2VEb3duQ2Fs
bGJhY2spOgorICAgICAgICAobW91c2VVcENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlTW92ZVRv
Q2FsbGJhY2spOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6CisgICAgICAgIChtb3Vz
ZVNjcm9sbEJ5Q2FsbGJhY2spOgorICAgICAgICAoZmVlZE9yUXVldWVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKGZlZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKGZlZWRRdWV1ZWRNb3VzZUV2ZW50cyk6
CisKIDIwMTItMDUtMDYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtwcmVwYXJlLUNoYW5nZUxvZ10gRXhjbHVkZXMgYSByZWZlcmVuY2UgZmlsZSB1c2VkIGJ5
IHJlZnRlc3RzIGZyb20gdGVzdCBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDJiZWQ1YzkuLmUwYTQxODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtNjMsNiArNjMsMjAgQEAgc3RhdGljIGludCBnQ2xpY2tD
b3VudDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NdWx0aXBsaWVyUmF0aW8gPSAxLjJmOwog
CitzdHJ1Y3QgTW91c2VFdmVudEluZm87CitzdHJ1Y3QgRGVsYXllZEV2ZW50IHsKKyAgICBEZWxh
eWVkRXZlbnQoTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbywgdWxvbmcgZGVsYXkgPSAwKQorICAg
ICAgICA6IGV2ZW50SW5mbyhldmVudEluZm8pCisgICAgICAgICwgZGVsYXkoZGVsYXkpCisgICAg
eworICAgIH0KKworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm87CisgICAgdWxvbmcgZGVs
YXk7Cit9OworCitzdGF0aWMgV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50PiBnRXZlbnRRdWV1ZTsK
KwogLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KIGVu
dW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBEb21LZXlMb2NhdGlvblN0YW5kYXJkLApAQCAtMTE0
LDYgKzEyOCwyNyBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZvIHsKICAgICBFdmFzS2V5TW9kaWZpZXIg
bW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZlbnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50
SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IEV2
YXNLZXlNb2RpZmllck5vbmUsIEV2YXNNb3VzZUJ1dHRvbiBidXR0b24gPSBFdmFzTW91c2VCdXR0
b25Ob25lLCBpbnQgaG9yaXpvbnRhbERlbHRhID0gMCwgaW50IHZlcnRpY2FsRGVsdGEgPSAwKQor
ICAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICAsIG1vZGlmaWVycyhtb2RpZmllcnMpCisg
ICAgICAgICwgYnV0dG9uKGJ1dHRvbikKKyAgICAgICAgLCBob3Jpem9udGFsRGVsdGEoaG9yaXpv
bnRhbERlbHRhKQorICAgICAgICAsIHZlcnRpY2FsRGVsdGEodmVydGljYWxEZWx0YSkKKyAgICB7
CisgICAgfQorCisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQ7CisgICAgRXZhc0tleU1vZGlmaWVy
IG1vZGlmaWVyczsKKyAgICBFdmFzTW91c2VCdXR0b24gYnV0dG9uOworICAgIGludCBob3Jpem9u
dGFsRGVsdGE7CisgICAgaW50IHZlcnRpY2FsRGVsdGE7Cit9OworCitzdGF0aWMgdm9pZCBmZWVk
T3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBib29sIHNob3VsZEZlZWRRdWV1ZWRF
dmVudHMgPSB0cnVlKTsKK3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZv
Kik7CitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKTsKKwogc3RhdGljIHZvaWQg
c2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQog
ewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJDb250cm9sIiwg
IlNoaWZ0IiwgIkFsdCIsICJTdXBlciIgfTsKQEAgLTE0MSw0MyArMTc2LDEwIEBAIHN0YXRpYyBF
dmFzTW91c2VCdXR0b24gdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIoaW50IGV2ZW50U2VuZGVy
QnV0dG9uTnVtYmVyKQogICAgIHJldHVybiBFdmFzTW91c2VCdXR0b25MZWZ0OwogfQogCi1zdGF0
aWMgdm9pZCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFzTW91c2VFdmVudCBldmVudCwg
aW50IGJ1dHRvbk51bWJlciwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKLXsKLSAgICB1bnNp
Z25lZCB0aW1lU3RhbXAgPSAwOwotCi0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXlv
dXRGcmFtZShicm93c2VyLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBzZXRFdmFzTW9kaWZpZXJzKGV2
YXMsIG1vZGlmaWVycyk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRNb3ZlKQotICAg
ICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfbW92ZShldmFzLCBnTGFzdE1vdXNlUG9zaXRpb25Y
LCBnTGFzdE1vdXNlUG9zaXRpb25ZLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgaWYgKGV2ZW50ICYg
RXZhc01vdXNlRXZlbnREb3duKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gMDsKLSAgICAg
ICAgaWYgKGdDbGlja0NvdW50ID09IDIpCi0gICAgICAgICAgICBmbGFncyB8PSBFVkFTX0JVVFRP
Tl9ET1VCTEVfQ0xJQ0s7Ci0gICAgICAgIGVsc2UgaWYgKGdDbGlja0NvdW50ID09IDMpCi0gICAg
ICAgICAgICBmbGFncyB8PSBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7Ci0KLSAgICAgICAgZXZh
c19ldmVudF9mZWVkX21vdXNlX2Rvd24oZXZhcywgYnV0dG9uTnVtYmVyLCBzdGF0aWNfY2FzdDxF
dmFzX0J1dHRvbl9GbGFncz4oZmxhZ3MpLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgfQotICAgIGlm
IChldmVudCAmIEV2YXNNb3VzZUV2ZW50VXApCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3Vz
ZV91cChldmFzLCBidXR0b25OdW1iZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVTdGFtcCsrLCAw
KTsKLQotICAgIGNvbnN0IGJvb2wgaG9yaXpvbnRhbCA9ICEhKGV2ZW50ICYgRXZhc01vdXNlRXZl
bnRTY3JvbGxMZWZ0IHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFJpZ2h0KTsKLSAgICBj
b25zdCBib29sIHZlcnRpY2FsID0gISEoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwg
ZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbERvd24pOwotICAgIGlmICh2ZXJ0aWNhbCAmJiBo
b3Jpem9udGFsKSB7Ci0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAw
LCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAs
IDApOwotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50
ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwot
ICAgIH0gZWxzZSBpZiAodmVydGljYWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93
aGVlbChldmFzLCAwLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEw
LCB0aW1lU3RhbXAsIDApOwotICAgIGVsc2UgaWYgKGhvcml6b250YWwpCi0gICAgICAgIGV2YXNf
ZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNj
cm9sbExlZnQpID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0KLSAgICBzZXRFdmFzTW9kaWZp
ZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOwotfQotCiBzdGF0aWMgRWluYV9Cb29sIHNl
bmRDbGljayh2b2lkKikKIHsKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dl
dChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50Q2xpY2ssIEV2YXNNb3VzZUJ1
dHRvbkxlZnQsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVu
dEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc0tleU1v
ZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uTGVmdCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2
ZW50KGV2ZW50SW5mbyk7CiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKIH0KIApA
QCAtMjQ5LDggKzI1MSw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICB1cGRhdGVDbGlj
a0NvdW50KGJ1dHRvbik7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1l
bnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFd
KSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3Rf
ZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudERvd24sIGJ1dHRv
biwgbW9kaWZpZXJzKTsKLQorICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91
c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnREb3duLCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PEV2
YXNNb3VzZUJ1dHRvbj4oYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50
SW5mbyk7CiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSBidXR0b247CiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpAQCAtMjcxLDcgKzI3Myw4IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSAwOwogCiAgICAg
RXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGFyZ3VtZW50Q291bnQgPj0gMiA/IG1vZGlmaWVy
c0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkgOiBFdmFzS2V5TW9kaWZpZXJOb25l
OwotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5G
cmFtZSgpKSwgRXZhc01vdXNlRXZlbnRVcCwgdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIoYnV0
dG9uKSwgbW9kaWZpZXJzKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1v
dXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50VXAsIG1vZGlmaWVycywgdHJhbnNsYXRlTW91c2VC
dXR0b25OdW1iZXIoYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5m
byk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0y
ODcsNyArMjkwLDIyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgaWYgKGV4Y2VwdGlv
biAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2Vy
LT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50TW92ZSwgRXZhc01vdXNlQnV0dG9uTm9uZSwg
RXZhc0tleU1vZGlmaWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5l
dyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudE1vdmUpOworICAgIGZlZWRPclF1ZXVlTW91
c2VFdmVudChldmVudEluZm8sIGZhbHNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxlYXBGb3J3YXJkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ID4g
MCkgeworICAgICAgICBjb25zdCB1bG9uZyBsZWFwRm9yd2FyZERlbGF5ID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGdFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGdFdmVudFF1ZXVlLmFwcGVuZChEZWxheWVk
RXZlbnQoMCwgbGVhcEZvcndhcmREZWxheSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBn
RXZlbnRRdWV1ZS5sYXN0KCkuZGVsYXkgPSBsZWFwRm9yd2FyZERlbGF5OworICAgICAgICBnVGlt
ZU9mZnNldCArPSBsZWFwRm9yd2FyZERlbGF5OworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzEzLDE0ICszMzEsMTcgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgbW91c2VTY3JvbGxCeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGkKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGNvbnN0IGludCBob3Jp
em9udGFsID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAvLyBXZSBuZWVkIHRvIGludmVydCBzY29sbGluZyB2
YWx1ZXMgc2luY2UgaW4gRUZMIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgdGhhdAorICAgIC8vIGNh
bnZhcyBpcyBzY3JvbGxpbmcgZG93bgorICAgIGNvbnN0IGludCBob3Jpem9udGFsID0gLShzdGF0
aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2Vw
dGlvbikpKTsKICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICBjb25zdCBpbnQgdmVydGljYWwg
PSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbikpOworICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IC0oc3RhdGljX2Nhc3Q8aW50
PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9l
dmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250
YWxBbmRWZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzTW91c2VCdXR0
b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJ
bmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250YWxBbmRW
ZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzS2V5TW9kaWZpZXJOb25l
LCBFdmFzTW91c2VCdXR0b25Ob25lLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgZmVlZE9y
UXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbyk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCkBAIC01NjIsNiArNTgzLDcgQEAgc3RhdGljIEpTU3RhdGljRnVu
Y3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAibW91c2VEb3duIiwgbW91c2VEb3du
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJtb3VzZVVwIiwgbW91c2VVcENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgeyAibW91c2VNb3ZlVG8iLCBtb3VzZU1vdmVUb0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAibGVhcEZvcndhcmQiLCBsZWFwRm9yd2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAi
a2V5RG93biIsIGtleURvd25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNo
cm9ub3VzQ2xpY2siLCBzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICB7ICJzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24iLCBzY2hlZHVsZUFzeW5jaHJvbm91
c0tleURvd25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApAQCAtNjE1LDMgKzYzNyw2OCBAQCBKU09iamVjdFJl
ZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSkK
IAogICAgIHJldHVybiBKU09iamVjdE1ha2UoY29udGV4dCwgZ2V0Q2xhc3MoY29udGV4dCksIDAp
OwogfQorCitzdGF0aWMgdm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8q
IGV2ZW50SW5mbywgYm9vbCBzaG91bGRGZWVkUXVldWVkRXZlbnRzKQoreworICAgIGlmICghZ0V2
ZW50UXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChnRXZlbnRRdWV1ZS5sYXN0KCkuZXZl
bnRJbmZvID09IDApCisgICAgICAgICAgICBnRXZlbnRRdWV1ZS5sYXN0KCkuZXZlbnRJbmZvID0g
ZXZlbnRJbmZvOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnRXZlbnRRdWV1ZS5hcHBlbmQo
RGVsYXllZEV2ZW50KGV2ZW50SW5mbykpOworCisgICAgICAgIGlmIChzaG91bGRGZWVkUXVldWVk
RXZlbnRzKQorICAgICAgICAgICAgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CisgICAgfSBlbHNl
CisgICAgICAgIGZlZWRNb3VzZUV2ZW50KGV2ZW50SW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkIGZl
ZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8pCit7CisgICAgaWYgKCFldmVu
dEluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHRpbWVTdGFtcCA9IDA7Cisg
ICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGJyb3dzZXItPm1haW5GcmFtZSgpOworICAgIEV2
YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUpOworICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6bGF5b3V0RnJhbWUobWFpbkZyYW1lKTsKKyAgICBFdmFzTW91c2VF
dmVudCBldmVudCA9IGV2ZW50SW5mby0+ZXZlbnQ7CisKKyAgICBzZXRFdmFzTW9kaWZpZXJzKGV2
YXMsIGV2ZW50SW5mby0+bW9kaWZpZXJzKTsKKworICAgIEV2YXNfQnV0dG9uX0ZsYWdzIGZsYWdz
ID0gRVZBU19CVVRUT05fTk9ORTsKKworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHBhc3MgYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiB3aXRoIG91ciBldmVudHMsIHNvIHRoYXQKKyAgICAvLyB3ZSBj
b3VsZCBjb25zdHJ1Y3QgY29ycmVjdCBQbGF0Zm9ybVdoZWVsRXZlbnQuIEF0IHRoZSBtb21lbnQs
IG1heCBudW1iZXIKKyAgICAvLyBvZiBjbGlja3MgaXMgMworICAgIGlmIChnQ2xpY2tDb3VudCA9
PSAzKQorICAgICAgICBmbGFncyA9IEVWQVNfQlVUVE9OX1RSSVBMRV9DTElDSzsKKyAgICBlbHNl
IGlmIChnQ2xpY2tDb3VudCA9PSAyKQorICAgICAgICBmbGFncyA9IEVWQVNfQlVUVE9OX0RPVUJM
RV9DTElDSzsKKworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50TW92ZSkKKyAgICAgICAg
ZXZhc19ldmVudF9mZWVkX21vdXNlX21vdmUoZXZhcywgZ0xhc3RNb3VzZVBvc2l0aW9uWCwgZ0xh
c3RNb3VzZVBvc2l0aW9uWSwgdGltZVN0YW1wKyssIDApOworICAgIGlmIChldmVudCAmIEV2YXNN
b3VzZUV2ZW50RG93bikKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX2Rvd24oZXZhcywg
ZXZlbnRJbmZvLT5idXR0b24sIGZsYWdzLCB0aW1lU3RhbXArKywgMCk7CisgICAgaWYgKGV2ZW50
ICYgRXZhc01vdXNlRXZlbnRVcCkKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3VwKGV2
YXMsIGV2ZW50SW5mby0+YnV0dG9uLCBmbGFncywgdGltZVN0YW1wKyssIDApOworICAgIGlmIChl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCB8IGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxSaWdodCkKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDEs
IGV2ZW50SW5mby0+aG9yaXpvbnRhbERlbHRhLCB0aW1lU3RhbXAsIDApOworICAgIGlmIChldmVu
dCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXAgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xs
RG93bikKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIGV2ZW50
SW5mby0+dmVydGljYWxEZWx0YSwgdGltZVN0YW1wLCAwKTsKKworICAgIHNldEV2YXNNb2RpZmll
cnMoZXZhcywgRXZhc0tleU1vZGlmaWVyTm9uZSk7CisKKyAgICBkZWxldGUgZXZlbnRJbmZvOwor
fQorCitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKQoreworICAgIFdURjo6VmVj
dG9yPERlbGF5ZWRFdmVudD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZ0V2ZW50UXVldWUuYmVnaW4o
KTsKKyAgICBmb3IgKDsgaXQgIT0gZ0V2ZW50UXVldWUuZW5kKCk7IGl0KyspIHsKKyAgICAgICAg
RGVsYXllZEV2ZW50IGRlbGF5ZWRFdmVudCA9ICppdDsKKyAgICAgICAgaWYgKGRlbGF5ZWRFdmVu
dC5kZWxheSkKKyAgICAgICAgICAgIHVzbGVlcChkZWxheWVkRXZlbnQuZGVsYXkgKiAxMDAwKTsK
KyAgICAgICAgZmVlZE1vdXNlRXZlbnQoZGVsYXllZEV2ZW50LmV2ZW50SW5mbyk7CisgICAgfQor
ICAgIGdFdmVudFF1ZXVlLmNsZWFyKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140572</attachid>
            <date>2012-05-07 12:39:43 -0700</date>
            <delta_ts>2012-05-07 13:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v6.patch</filename>
            <type>text/plain</type>
            <size>18092</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MDBiODRlLi44NjNjOWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUt
MDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyBkdWUgdG8g
dGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAgICAgQWRkZWQgRUZMIHNwZWNp
ZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBvcnQgMkQgd2hlZWwgZXZlbnRz
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDUtMDYgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0
b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gTmV3IHRlc3QgaW50cm9kdWNlZCBp
biByMTE2MjU1IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYmI1Mzc4
Ny4uY2Y2ZDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTksMTAgKzksNiBAQCBm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMg
bm90IGltcGxlbWVudCBkdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQKIGZhc3QvZXZlbnRzL2RyYWct
aW1hZ2UtZmlsZW5hbWUuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGNvcnJl
Y3RseSBzZW5kIGEgc2luZ2xlIHdoZWVsIGV2ZW50IHdoZW4gbW91c2VTY3JvbGxCeSBpcyBjYWxs
ZWQgd2l0aCBib3RoIHggYW5kIHkgbm90LW51bGwKLWZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25z
Y3JvbGwuaHRtbAotCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBjb250
aW51b3VzTW91c2VTY3JvbGxCeSB5ZXQKIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
ZGlyZWN0aW9uLWludmVydGVkLWZyb20tZGV2aWNlLmh0bWwKQEAgLTY3LDcgKzYzLDcgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKICMg
RUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFy
VG91Y2hQb2ludHMsIHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tz
CiBmYXN0L2V2ZW50cy90b3VjaAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxl
bWVudCBsZWFwRm9yd2FyZCB5ZXQKKyMgRUZMJ3MgcG9ydCByZXF1aXJlcyBpbXBsZW1lbnRhdGlv
biBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRFZmwgY2xhc3NlcyBpbiBvcmRlciB0byBz
dXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEz
MC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCkBAIC04OSw3ICs4NSw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRy
b3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4LTEuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwK
QEAgLTk5LDggKzk0LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5kLWFmdGVyLXRh
YmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0xMTEsMTggKzEw
NCwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1pZnJhbWUu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1ieS1kcmFnLWNy
YXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91Ymxl
LWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91
dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24t
cmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81MDU2NjE5Lmh0
bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5odG1sCiBmYXN0
L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xMzgsMzMgKzEyMywxOSBAQCBmYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwKIGZhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbAot
ZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2UtYnV0dG9uLmh0
bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJh
Z2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tpbmctdGltZXJzLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQt
aW4tbW91c2V1cC1kZWVwLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC1pbnNlcnRiYWNrLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC10
d2ljZS5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1jbGlja3MuaHRtbAogZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1i
eS1zaW5nbGUtY2xpY2std2l0aC1zaGlmdC5odG1sCiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWlt
YWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVy
ZS1jbGljay5odG1sCi1mYXN0L2V2ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMv
ZHJhZy1pbnRvLXRleHRhcmVhLmh0bWwKIGZhc3QvZm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFyZWEu
aHRtbAotZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtaGl0LXRlc3QuaHRtbAogZmFzdC9mb3Jt
cy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtY2FuY2Vs
LWJ1dHRvbi1tb3VzZXVwLmh0bWwKIGZhc3QvZm9ybXMvc2VhcmNoLWRpc2FibGVkLXJlYWRvbmx5
Lmh0bWwKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLWRyYWctaW50by1kaXNhYmxlZC5odG1sCiBmYXN0
L2Zvcm1zL3R5cGUtYWZ0ZXItZm9jdXMtcnVsZS1zaHJpbmstd2lkdGguaHRtbAotZmFzdC9mcmFt
ZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwKLWZhc3QvZnJhbWVz
L2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5odG1sCi1mYXN0L2ZyYW1lcy9mcmFtZS13aXRo
LW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAot
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0
aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKIGZhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci5o
dG1sCiBmYXN0L3RhYmxlL2NsaWNrLW5lYXItYW5vbnltb3VzLXRhYmxlLmh0bWwKIGZhc3QvdGV4
dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWlu
LXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxMjdhZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13
aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
RkFJTCBldmVudC53aGVlbERlbHRhWSBzaG91bGQgYmUgLTYwMC4gV2FzIDAuCitQQVNTIGV2ZW50
LndoZWVsRGVsdGFYIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhWSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorRkFJTCBldmVu
dC53aGVlbERlbHRhWCBzaG91bGQgYmUgLTM2MC4gV2FzIDAuCitQQVNTIGV2ZW50LndoZWVsRGVs
dGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKi0xMjAKK1BBU1MgZGl2LnNjcm9sbFRvcCBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3Aqd2luZG93LnBpeGVsc1BlcldoZWVsVGljaworUEFT
UyBkaXYuc2Nyb2xsTGVmdCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0KndpbmRvdy5waXhl
bHNQZXJXaGVlbFRpY2sKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDkwNWJjMzguLjkzMDFkYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNS0wNyAgQWxl
eGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXVtEUlRdIEV2ZW50U2VuZGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGxlYXBGb3J3
YXJkIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudGVkIGxlYXBGb3J3YXJkIGZ1bmN0aW9uIGluIEVmbCdzIERSVC4gVGhpcyBm
dW5jdGlvbiBpcyByZXF1aXJlZAorICAgICAgICB0byBkZWxheSBhbmQgcXVldWUgZXZlbnQgZXhl
Y3V0aW9uIGFuZCBzaW11bGF0ZSByZWFsIHVzZXIgYmVoYXZpb3IuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRGVsYXllZEV2ZW50KToK
KyAgICAgICAgKE1vdXNlRXZlbnRJbmZvOjpNb3VzZUV2ZW50SW5mbyk6CisgICAgICAgIChNb3Vz
ZUV2ZW50SW5mbyk6CisgICAgICAgIChzZW5kQ2xpY2spOgorICAgICAgICAobW91c2VEb3duQ2Fs
bGJhY2spOgorICAgICAgICAobW91c2VVcENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlTW92ZVRv
Q2FsbGJhY2spOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6CisgICAgICAgIChtb3Vz
ZVNjcm9sbEJ5Q2FsbGJhY2spOgorICAgICAgICAoZmVlZE9yUXVldWVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKGZlZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKGZlZWRRdWV1ZWRNb3VzZUV2ZW50cyk6
CisKIDIwMTItMDUtMDYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtwcmVwYXJlLUNoYW5nZUxvZ10gRXhjbHVkZXMgYSByZWZlcmVuY2UgZmlsZSB1c2VkIGJ5
IHJlZnRlc3RzIGZyb20gdGVzdCBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDJiZWQ1YzkuLjlhMGU1NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtNjMsNiArNjMsMjAgQEAgc3RhdGljIGludCBnQ2xpY2tD
b3VudDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NdWx0aXBsaWVyUmF0aW8gPSAxLjJmOwog
CitzdHJ1Y3QgTW91c2VFdmVudEluZm87CitzdHJ1Y3QgRGVsYXllZEV2ZW50IHsKKyAgICBEZWxh
eWVkRXZlbnQoTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbywgdWxvbmcgZGVsYXkgPSAwKQorICAg
ICAgICA6IGV2ZW50SW5mbyhldmVudEluZm8pCisgICAgICAgICwgZGVsYXkoZGVsYXkpCisgICAg
eworICAgIH0KKworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm87CisgICAgdWxvbmcgZGVs
YXk7Cit9OworCitzdGF0aWMgV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50PiBnRXZlbnRRdWV1ZTsK
KwogLy8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KIGVu
dW0gS2V5TG9jYXRpb25Db2RlIHsKICAgICBEb21LZXlMb2NhdGlvblN0YW5kYXJkLApAQCAtMTE0
LDYgKzEyOCwyNyBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZvIHsKICAgICBFdmFzS2V5TW9kaWZpZXIg
bW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZlbnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50
SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IEV2
YXNLZXlNb2RpZmllck5vbmUsIEV2YXNNb3VzZUJ1dHRvbiBidXR0b24gPSBFdmFzTW91c2VCdXR0
b25Ob25lLCBpbnQgaG9yaXpvbnRhbERlbHRhID0gMCwgaW50IHZlcnRpY2FsRGVsdGEgPSAwKQor
ICAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICAsIG1vZGlmaWVycyhtb2RpZmllcnMpCisg
ICAgICAgICwgYnV0dG9uKGJ1dHRvbikKKyAgICAgICAgLCBob3Jpem9udGFsRGVsdGEoaG9yaXpv
bnRhbERlbHRhKQorICAgICAgICAsIHZlcnRpY2FsRGVsdGEodmVydGljYWxEZWx0YSkKKyAgICB7
CisgICAgfQorCisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQ7CisgICAgRXZhc0tleU1vZGlmaWVy
IG1vZGlmaWVyczsKKyAgICBFdmFzTW91c2VCdXR0b24gYnV0dG9uOworICAgIGludCBob3Jpem9u
dGFsRGVsdGE7CisgICAgaW50IHZlcnRpY2FsRGVsdGE7Cit9OworCitzdGF0aWMgdm9pZCBmZWVk
T3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBib29sIHNob3VsZEZlZWRRdWV1ZWRF
dmVudHMgPSB0cnVlKTsKK3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZv
Kik7CitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKTsKKwogc3RhdGljIHZvaWQg
c2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQog
ewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJDb250cm9sIiwg
IlNoaWZ0IiwgIkFsdCIsICJTdXBlciIgfTsKQEAgLTE0MSw0MyArMTc2LDEwIEBAIHN0YXRpYyBF
dmFzTW91c2VCdXR0b24gdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIoaW50IGV2ZW50U2VuZGVy
QnV0dG9uTnVtYmVyKQogICAgIHJldHVybiBFdmFzTW91c2VCdXR0b25MZWZ0OwogfQogCi1zdGF0
aWMgdm9pZCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFzTW91c2VFdmVudCBldmVudCwg
aW50IGJ1dHRvbk51bWJlciwgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKLXsKLSAgICB1bnNp
Z25lZCB0aW1lU3RhbXAgPSAwOwotCi0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXlv
dXRGcmFtZShicm93c2VyLT5tYWluRnJhbWUoKSk7Ci0KLSAgICBzZXRFdmFzTW9kaWZpZXJzKGV2
YXMsIG1vZGlmaWVycyk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRNb3ZlKQotICAg
ICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfbW92ZShldmFzLCBnTGFzdE1vdXNlUG9zaXRpb25Y
LCBnTGFzdE1vdXNlUG9zaXRpb25ZLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgaWYgKGV2ZW50ICYg
RXZhc01vdXNlRXZlbnREb3duKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gMDsKLSAgICAg
ICAgaWYgKGdDbGlja0NvdW50ID09IDIpCi0gICAgICAgICAgICBmbGFncyB8PSBFVkFTX0JVVFRP
Tl9ET1VCTEVfQ0xJQ0s7Ci0gICAgICAgIGVsc2UgaWYgKGdDbGlja0NvdW50ID09IDMpCi0gICAg
ICAgICAgICBmbGFncyB8PSBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7Ci0KLSAgICAgICAgZXZh
c19ldmVudF9mZWVkX21vdXNlX2Rvd24oZXZhcywgYnV0dG9uTnVtYmVyLCBzdGF0aWNfY2FzdDxF
dmFzX0J1dHRvbl9GbGFncz4oZmxhZ3MpLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgfQotICAgIGlm
IChldmVudCAmIEV2YXNNb3VzZUV2ZW50VXApCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3Vz
ZV91cChldmFzLCBidXR0b25OdW1iZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVTdGFtcCsrLCAw
KTsKLQotICAgIGNvbnN0IGJvb2wgaG9yaXpvbnRhbCA9ICEhKGV2ZW50ICYgRXZhc01vdXNlRXZl
bnRTY3JvbGxMZWZ0IHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFJpZ2h0KTsKLSAgICBj
b25zdCBib29sIHZlcnRpY2FsID0gISEoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwg
ZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbERvd24pOwotICAgIGlmICh2ZXJ0aWNhbCAmJiBo
b3Jpem9udGFsKSB7Ci0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAw
LCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAs
IDApOwotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50
ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwot
ICAgIH0gZWxzZSBpZiAodmVydGljYWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93
aGVlbChldmFzLCAwLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEw
LCB0aW1lU3RhbXAsIDApOwotICAgIGVsc2UgaWYgKGhvcml6b250YWwpCi0gICAgICAgIGV2YXNf
ZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNj
cm9sbExlZnQpID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0KLSAgICBzZXRFdmFzTW9kaWZp
ZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOwotfQotCiBzdGF0aWMgRWluYV9Cb29sIHNl
bmRDbGljayh2b2lkKikKIHsKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dl
dChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50Q2xpY2ssIEV2YXNNb3VzZUJ1
dHRvbkxlZnQsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVu
dEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc0tleU1v
ZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uTGVmdCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2
ZW50KGV2ZW50SW5mbyk7CiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKIH0KIApA
QCAtMjQ5LDggKzI1MSw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICB1cGRhdGVDbGlj
a0NvdW50KGJ1dHRvbik7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1l
bnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFd
KSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3Rf
ZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudERvd24sIGJ1dHRv
biwgbW9kaWZpZXJzKTsKLQorICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91
c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnREb3duLCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PEV2
YXNNb3VzZUJ1dHRvbj4oYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50
SW5mbyk7CiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSBidXR0b247CiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpAQCAtMjcxLDcgKzI3Myw4IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSAwOwogCiAgICAg
RXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGFyZ3VtZW50Q291bnQgPj0gMiA/IG1vZGlmaWVy
c0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkgOiBFdmFzS2V5TW9kaWZpZXJOb25l
OwotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5G
cmFtZSgpKSwgRXZhc01vdXNlRXZlbnRVcCwgdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIoYnV0
dG9uKSwgbW9kaWZpZXJzKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1v
dXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50VXAsIG1vZGlmaWVycywgdHJhbnNsYXRlTW91c2VC
dXR0b25OdW1iZXIoYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5m
byk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0y
ODcsNyArMjkwLDIyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgaWYgKGV4Y2VwdGlv
biAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2Vy
LT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50TW92ZSwgRXZhc01vdXNlQnV0dG9uTm9uZSwg
RXZhc0tleU1vZGlmaWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5l
dyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudE1vdmUpOworICAgIGZlZWRPclF1ZXVlTW91
c2VFdmVudChldmVudEluZm8sIGZhbHNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxlYXBGb3J3YXJkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ID4g
MCkgeworICAgICAgICBjb25zdCB1bG9uZyBsZWFwRm9yd2FyZERlbGF5ID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGdFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGdFdmVudFF1ZXVlLmFwcGVuZChEZWxheWVk
RXZlbnQoMCwgbGVhcEZvcndhcmREZWxheSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBn
RXZlbnRRdWV1ZS5sYXN0KCkuZGVsYXkgPSBsZWFwRm9yd2FyZERlbGF5OworICAgICAgICBnVGlt
ZU9mZnNldCArPSBsZWFwRm9yd2FyZERlbGF5OworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzEzLDE0ICszMzEsMTcgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgbW91c2VTY3JvbGxCeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGkKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGNvbnN0IGludCBob3Jp
em9udGFsID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAvLyBXZSBuZWVkIHRvIGludmVydCBzY29sbGluZyB2
YWx1ZXMgc2luY2UgaW4gRUZMIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgdGhhdAorICAgIC8vIGNh
bnZhcyBpcyBzY3JvbGxpbmcgZG93bgorICAgIGNvbnN0IGludCBob3Jpem9udGFsID0gLShzdGF0
aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2Vw
dGlvbikpKTsKICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICBjb25zdCBpbnQgdmVydGljYWwg
PSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbikpOworICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IC0oc3RhdGljX2Nhc3Q8aW50
PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9l
dmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250
YWxBbmRWZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzTW91c2VCdXR0
b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJ
bmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKGV2YXNNb3VzZUV2ZW50RnJvbUhvcml6b250YWxBbmRW
ZXJ0aWNhbE9mZnNldHMoaG9yaXpvbnRhbCwgdmVydGljYWwpLCBFdmFzS2V5TW9kaWZpZXJOb25l
LCBFdmFzTW91c2VCdXR0b25Ob25lLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgZmVlZE9y
UXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbyk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCkBAIC01NjIsNiArNTgzLDcgQEAgc3RhdGljIEpTU3RhdGljRnVu
Y3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAibW91c2VEb3duIiwgbW91c2VEb3du
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJtb3VzZVVwIiwgbW91c2VVcENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgeyAibW91c2VNb3ZlVG8iLCBtb3VzZU1vdmVUb0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAibGVhcEZvcndhcmQiLCBsZWFwRm9yd2FyZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAi
a2V5RG93biIsIGtleURvd25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNo
cm9ub3VzQ2xpY2siLCBzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICB7ICJzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24iLCBzY2hlZHVsZUFzeW5jaHJvbm91
c0tleURvd25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApAQCAtNjE1LDMgKzYzNyw2OCBAQCBKU09iamVjdFJl
ZiBtYWtlRXZlbnRTZW5kZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgaXNUb3BGcmFtZSkK
IAogICAgIHJldHVybiBKU09iamVjdE1ha2UoY29udGV4dCwgZ2V0Q2xhc3MoY29udGV4dCksIDAp
OwogfQorCitzdGF0aWMgdm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8q
IGV2ZW50SW5mbywgYm9vbCBzaG91bGRGZWVkUXVldWVkRXZlbnRzKQoreworICAgIGlmICghZ0V2
ZW50UXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChnRXZlbnRRdWV1ZS5sYXN0KCkuZXZl
bnRJbmZvKQorICAgICAgICAgICAgZ0V2ZW50UXVldWUubGFzdCgpLmV2ZW50SW5mbyA9IGV2ZW50
SW5mbzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ0V2ZW50UXVldWUuYXBwZW5kKERlbGF5
ZWRFdmVudChldmVudEluZm8pKTsKKworICAgICAgICBpZiAoc2hvdWxkRmVlZFF1ZXVlZEV2ZW50
cykKKyAgICAgICAgICAgIGZlZWRRdWV1ZWRNb3VzZUV2ZW50cygpOworICAgIH0gZWxzZQorICAg
ICAgICBmZWVkTW91c2VFdmVudChldmVudEluZm8pOworfQorCitzdGF0aWMgdm9pZCBmZWVkTW91
c2VFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvKQoreworICAgIGlmICghZXZlbnRJbmZv
KQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAwOworICAgIEV2
YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWluRnJhbWUoKTsKKyAgICBFdmFzKiBl
dmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKG1haW5GcmFtZSk7CisgICAgRXZhc01vdXNlRXZlbnQg
ZXZlbnQgPSBldmVudEluZm8tPmV2ZW50OworCisgICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBl
dmVudEluZm8tPm1vZGlmaWVycyk7CisKKyAgICBFdmFzX0J1dHRvbl9GbGFncyBmbGFncyA9IEVW
QVNfQlVUVE9OX05PTkU7CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwYXNzIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gd2l0aCBvdXIgZXZlbnRzLCBzbyB0aGF0CisgICAgLy8gd2UgY291bGQg
Y29uc3RydWN0IGNvcnJlY3QgUGxhdGZvcm1XaGVlbEV2ZW50LiBBdCB0aGUgbW9tZW50LCBtYXgg
bnVtYmVyCisgICAgLy8gb2YgY2xpY2tzIGlzIDMKKyAgICBpZiAoZ0NsaWNrQ291bnQgPT0gMykK
KyAgICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7CisgICAgZWxzZSBpZiAo
Z0NsaWNrQ291bnQgPT0gMikKKyAgICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9ET1VCTEVfQ0xJ
Q0s7CisKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUpCisgICAgICAgIGV2YXNf
ZXZlbnRfZmVlZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgsIGdMYXN0TW91
c2VQb3NpdGlvblksIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VF
dmVudERvd24pCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9kb3duKGV2YXMsIGV2ZW50
SW5mby0+YnV0dG9uLCBmbGFncywgdGltZVN0YW1wKyssIDApOworICAgIGlmIChldmVudCAmIEV2
YXNNb3VzZUV2ZW50VXApCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV91cChldmFzLCBl
dmVudEluZm8tPmJ1dHRvbiwgZmxhZ3MsIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQg
JiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xs
UmlnaHQpCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCBldmVu
dEluZm8tPmhvcml6b250YWxEZWx0YSwgdGltZVN0YW1wLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBF
dmFzTW91c2VFdmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbERvd24p
CisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCBldmVudEluZm8t
PnZlcnRpY2FsRGVsdGEsIHRpbWVTdGFtcCwgMCk7CisKKyAgICBzZXRFdmFzTW9kaWZpZXJzKGV2
YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOworCisgICAgZGVsZXRlIGV2ZW50SW5mbzsKK30KKwor
c3RhdGljIHZvaWQgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCkKK3sKKyAgICBXVEY6OlZlY3RvcjxE
ZWxheWVkRXZlbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGdFdmVudFF1ZXVlLmJlZ2luKCk7Cisg
ICAgZm9yICg7IGl0ICE9IGdFdmVudFF1ZXVlLmVuZCgpOyBpdCsrKSB7CisgICAgICAgIERlbGF5
ZWRFdmVudCBkZWxheWVkRXZlbnQgPSAqaXQ7CisgICAgICAgIGlmIChkZWxheWVkRXZlbnQuZGVs
YXkpCisgICAgICAgICAgICB1c2xlZXAoZGVsYXllZEV2ZW50LmRlbGF5ICogMTAwMCk7CisgICAg
ICAgIGZlZWRNb3VzZUV2ZW50KGRlbGF5ZWRFdmVudC5ldmVudEluZm8pOworICAgIH0KKyAgICBn
RXZlbnRRdWV1ZS5jbGVhcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140579</attachid>
            <date>2012-05-07 13:41:38 -0700</date>
            <delta_ts>2012-05-07 23:25:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v7.patch</filename>
            <type>text/plain</type>
            <size>18226</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MDBiODRlLi44NjNjOWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUt
MDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyBkdWUgdG8g
dGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAgICAgQWRkZWQgRUZMIHNwZWNp
ZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBvcnQgMkQgd2hlZWwgZXZlbnRz
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDUtMDYgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0
b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gTmV3IHRlc3QgaW50cm9kdWNlZCBp
biByMTE2MjU1IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYmI1Mzc4
Ny4uY2Y2ZDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTksMTAgKzksNiBAQCBm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMg
bm90IGltcGxlbWVudCBkdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQKIGZhc3QvZXZlbnRzL2RyYWct
aW1hZ2UtZmlsZW5hbWUuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGNvcnJl
Y3RseSBzZW5kIGEgc2luZ2xlIHdoZWVsIGV2ZW50IHdoZW4gbW91c2VTY3JvbGxCeSBpcyBjYWxs
ZWQgd2l0aCBib3RoIHggYW5kIHkgbm90LW51bGwKLWZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25z
Y3JvbGwuaHRtbAotCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBjb250
aW51b3VzTW91c2VTY3JvbGxCeSB5ZXQKIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
ZGlyZWN0aW9uLWludmVydGVkLWZyb20tZGV2aWNlLmh0bWwKQEAgLTY3LDcgKzYzLDcgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKICMg
RUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFy
VG91Y2hQb2ludHMsIHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tz
CiBmYXN0L2V2ZW50cy90b3VjaAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxl
bWVudCBsZWFwRm9yd2FyZCB5ZXQKKyMgRUZMJ3MgcG9ydCByZXF1aXJlcyBpbXBsZW1lbnRhdGlv
biBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRFZmwgY2xhc3NlcyBpbiBvcmRlciB0byBz
dXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEz
MC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCkBAIC04OSw3ICs4NSw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRy
b3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4LTEuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwK
QEAgLTk5LDggKzk0LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5kLWFmdGVyLXRh
YmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0xMTEsMTggKzEw
NCwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1pZnJhbWUu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1ieS1kcmFnLWNy
YXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91Ymxl
LWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91
dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24t
cmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81MDU2NjE5Lmh0
bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5odG1sCiBmYXN0
L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xMzgsMzMgKzEyMywxOSBAQCBmYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwKIGZhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbAot
ZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2UtYnV0dG9uLmh0
bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJh
Z2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tpbmctdGltZXJzLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQt
aW4tbW91c2V1cC1kZWVwLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC1pbnNlcnRiYWNrLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC10
d2ljZS5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1jbGlja3MuaHRtbAogZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1i
eS1zaW5nbGUtY2xpY2std2l0aC1zaGlmdC5odG1sCiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWlt
YWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVy
ZS1jbGljay5odG1sCi1mYXN0L2V2ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMv
ZHJhZy1pbnRvLXRleHRhcmVhLmh0bWwKIGZhc3QvZm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFyZWEu
aHRtbAotZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtaGl0LXRlc3QuaHRtbAogZmFzdC9mb3Jt
cy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtY2FuY2Vs
LWJ1dHRvbi1tb3VzZXVwLmh0bWwKIGZhc3QvZm9ybXMvc2VhcmNoLWRpc2FibGVkLXJlYWRvbmx5
Lmh0bWwKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLWRyYWctaW50by1kaXNhYmxlZC5odG1sCiBmYXN0
L2Zvcm1zL3R5cGUtYWZ0ZXItZm9jdXMtcnVsZS1zaHJpbmstd2lkdGguaHRtbAotZmFzdC9mcmFt
ZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwKLWZhc3QvZnJhbWVz
L2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5odG1sCi1mYXN0L2ZyYW1lcy9mcmFtZS13aXRo
LW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAot
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0
aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKIGZhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci5o
dG1sCiBmYXN0L3RhYmxlL2NsaWNrLW5lYXItYW5vbnltb3VzLXRhYmxlLmh0bWwKIGZhc3QvdGV4
dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWlu
LXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxMjdhZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13
aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
RkFJTCBldmVudC53aGVlbERlbHRhWSBzaG91bGQgYmUgLTYwMC4gV2FzIDAuCitQQVNTIGV2ZW50
LndoZWVsRGVsdGFYIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhWSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorRkFJTCBldmVu
dC53aGVlbERlbHRhWCBzaG91bGQgYmUgLTM2MC4gV2FzIDAuCitQQVNTIGV2ZW50LndoZWVsRGVs
dGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKi0xMjAKK1BBU1MgZGl2LnNjcm9sbFRvcCBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3Aqd2luZG93LnBpeGVsc1BlcldoZWVsVGljaworUEFT
UyBkaXYuc2Nyb2xsTGVmdCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0KndpbmRvdy5waXhl
bHNQZXJXaGVlbFRpY2sKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDkwNWJjMzguLjkzMDFkYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNS0wNyAgQWxl
eGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXVtEUlRdIEV2ZW50U2VuZGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGxlYXBGb3J3
YXJkIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudGVkIGxlYXBGb3J3YXJkIGZ1bmN0aW9uIGluIEVmbCdzIERSVC4gVGhpcyBm
dW5jdGlvbiBpcyByZXF1aXJlZAorICAgICAgICB0byBkZWxheSBhbmQgcXVldWUgZXZlbnQgZXhl
Y3V0aW9uIGFuZCBzaW11bGF0ZSByZWFsIHVzZXIgYmVoYXZpb3IuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRGVsYXllZEV2ZW50KToK
KyAgICAgICAgKE1vdXNlRXZlbnRJbmZvOjpNb3VzZUV2ZW50SW5mbyk6CisgICAgICAgIChNb3Vz
ZUV2ZW50SW5mbyk6CisgICAgICAgIChzZW5kQ2xpY2spOgorICAgICAgICAobW91c2VEb3duQ2Fs
bGJhY2spOgorICAgICAgICAobW91c2VVcENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlTW92ZVRv
Q2FsbGJhY2spOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6CisgICAgICAgIChtb3Vz
ZVNjcm9sbEJ5Q2FsbGJhY2spOgorICAgICAgICAoZmVlZE9yUXVldWVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKGZlZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKGZlZWRRdWV1ZWRNb3VzZUV2ZW50cyk6
CisKIDIwMTItMDUtMDYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtwcmVwYXJlLUNoYW5nZUxvZ10gRXhjbHVkZXMgYSByZWZlcmVuY2UgZmlsZSB1c2VkIGJ5
IHJlZnRlc3RzIGZyb20gdGVzdCBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDJiZWQ1YzkuLmM2ZDYwNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBAQCBlbnVtIFpvb21FdmVudCB7
CiAgICAgWm9vbU91dAogfTsKIAorZW51bSBFdmVudFF1ZXVlU3RyYXRlZ3kgeworICAgIEZlZWRR
dWV1ZWRFdmVudHMsCisgICAgRG9Ob3RGZWVkUXVldWVkRXZlbnRzCit9OworCiBzdHJ1Y3QgS2V5
RXZlbnRJbmZvIHsKICAgICBLZXlFdmVudEluZm8oY29uc3QgQ1N0cmluZyYga2V5TmFtZSwgRXZh
c0tleU1vZGlmaWVyIG1vZGlmaWVycykKICAgICAgICAgOiBrZXlOYW1lKGtleU5hbWUpCkBAIC0x
MTQsNiArMTE5LDQwIEBAIHN0cnVjdCBLZXlFdmVudEluZm8gewogICAgIEV2YXNLZXlNb2RpZmll
ciBtb2RpZmllcnM7CiB9OwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm8geworICAgIE1vdXNlRXZl
bnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0g
RXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uIGJ1dHRvbiA9IEV2YXNNb3VzZUJ1
dHRvbk5vbmUsIGludCBob3Jpem9udGFsRGVsdGEgPSAwLCBpbnQgdmVydGljYWxEZWx0YSA9IDAp
CisgICAgICAgIDogZXZlbnQoZXZlbnQpCisgICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVycykK
KyAgICAgICAgLCBidXR0b24oYnV0dG9uKQorICAgICAgICAsIGhvcml6b250YWxEZWx0YShob3Jp
em9udGFsRGVsdGEpCisgICAgICAgICwgdmVydGljYWxEZWx0YSh2ZXJ0aWNhbERlbHRhKQorICAg
IHsKKyAgICB9CisKKyAgICBFdmFzTW91c2VFdmVudCBldmVudDsKKyAgICBFdmFzS2V5TW9kaWZp
ZXIgbW9kaWZpZXJzOworICAgIEV2YXNNb3VzZUJ1dHRvbiBidXR0b247CisgICAgaW50IGhvcml6
b250YWxEZWx0YTsKKyAgICBpbnQgdmVydGljYWxEZWx0YTsKK307CisKK3N0cnVjdCBEZWxheWVk
RXZlbnQgeworICAgIERlbGF5ZWRFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvLCB1bG9u
ZyBkZWxheSA9IDApCisgICAgICAgIDogZXZlbnRJbmZvKGV2ZW50SW5mbykKKyAgICAgICAgLCBk
ZWxheShkZWxheSkKKyAgICB7CisgICAgfQorCisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5m
bzsKKyAgICB1bG9uZyBkZWxheTsKK307CisKK0RFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpWZWN0
b3I8RGVsYXllZEV2ZW50PiwgZ0V2ZW50UXVldWUsICgpKTsKKworc3RhdGljIHZvaWQgZmVlZE9y
UXVldWVNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiwgRXZlbnRRdWV1ZVN0cmF0ZWd5KTsKK3N0
YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKik7CitzdGF0aWMgdm9pZCBm
ZWVkUXVldWVkTW91c2VFdmVudHMoKTsKKwogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhF
dmFzKiBldmFzLCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQogewogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJDb250cm9sIiwgIlNoaWZ0IiwgIkFsdCIsICJT
dXBlciIgfTsKQEAgLTE0MSw0MyArMTgwLDEwIEBAIHN0YXRpYyBFdmFzTW91c2VCdXR0b24gdHJh
bnNsYXRlTW91c2VCdXR0b25OdW1iZXIoaW50IGV2ZW50U2VuZGVyQnV0dG9uTnVtYmVyKQogICAg
IHJldHVybiBFdmFzTW91c2VCdXR0b25MZWZ0OwogfQogCi1zdGF0aWMgdm9pZCBzZW5kTW91c2VF
dmVudChFdmFzKiBldmFzLCBFdmFzTW91c2VFdmVudCBldmVudCwgaW50IGJ1dHRvbk51bWJlciwg
RXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycykKLXsKLSAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAw
OwotCi0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXlvdXRGcmFtZShicm93c2VyLT5t
YWluRnJhbWUoKSk7Ci0KLSAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIG1vZGlmaWVycyk7Ci0g
ICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRNb3ZlKQotICAgICAgICBldmFzX2V2ZW50X2Zl
ZWRfbW91c2VfbW92ZShldmFzLCBnTGFzdE1vdXNlUG9zaXRpb25YLCBnTGFzdE1vdXNlUG9zaXRp
b25ZLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnREb3du
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gMDsKLSAgICAgICAgaWYgKGdDbGlja0NvdW50
ID09IDIpCi0gICAgICAgICAgICBmbGFncyB8PSBFVkFTX0JVVFRPTl9ET1VCTEVfQ0xJQ0s7Ci0g
ICAgICAgIGVsc2UgaWYgKGdDbGlja0NvdW50ID09IDMpCi0gICAgICAgICAgICBmbGFncyB8PSBF
VkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0s7Ci0KLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNl
X2Rvd24oZXZhcywgYnV0dG9uTnVtYmVyLCBzdGF0aWNfY2FzdDxFdmFzX0J1dHRvbl9GbGFncz4o
ZmxhZ3MpLCB0aW1lU3RhbXArKywgMCk7Ci0gICAgfQotICAgIGlmIChldmVudCAmIEV2YXNNb3Vz
ZUV2ZW50VXApCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV91cChldmFzLCBidXR0b25O
dW1iZXIsIEVWQVNfQlVUVE9OX05PTkUsIHRpbWVTdGFtcCsrLCAwKTsKLQotICAgIGNvbnN0IGJv
b2wgaG9yaXpvbnRhbCA9ICEhKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRTY3JvbGxMZWZ0IHwgZXZl
bnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFJpZ2h0KTsKLSAgICBjb25zdCBib29sIHZlcnRpY2Fs
ID0gISEoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFzTW91c2VF
dmVudFNjcm9sbERvd24pOwotICAgIGlmICh2ZXJ0aWNhbCAmJiBob3Jpem9udGFsKSB7Ci0gICAg
ICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCAoZXZlbnQgJiBFdmFzTW91
c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwotICAgICAgICBldmFz
X2V2ZW50X2ZlZWRfbW91c2Vfd2hlZWwoZXZhcywgMSwgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRT
Y3JvbGxMZWZ0KSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwotICAgIH0gZWxzZSBpZiAodmVy
dGljYWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCAoZXZl
bnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwKSA/IDEwIDogLTEwLCB0aW1lU3RhbXAsIDApOwot
ICAgIGVsc2UgaWYgKGhvcml6b250YWwpCi0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93
aGVlbChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQpID8gMTAgOiAt
MTAsIHRpbWVTdGFtcCwgMCk7Ci0KLSAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlN
b2RpZmllck5vbmUpOwotfQotCiBzdGF0aWMgRWluYV9Cb29sIHNlbmRDbGljayh2b2lkKikKIHsK
LSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJh
bWUoKSksIEV2YXNNb3VzZUV2ZW50Q2xpY2ssIEV2YXNNb3VzZUJ1dHRvbkxlZnQsIEV2YXNLZXlN
b2RpZmllck5vbmUpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VF
dmVudEluZm8oRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01v
dXNlQnV0dG9uTGVmdCk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbywgRmVl
ZFF1ZXVlZEV2ZW50cyk7CiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKIH0KIApA
QCAtMjQ5LDggKzI1NSw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICB1cGRhdGVDbGlj
a0NvdW50KGJ1dHRvbik7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1l
bnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFd
KSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3Rf
ZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudERvd24sIGJ1dHRv
biwgbW9kaWZpZXJzKTsKLQorICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91
c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnREb3duLCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PEV2
YXNNb3VzZUJ1dHRvbj4oYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50
SW5mbywgRmVlZFF1ZXVlZEV2ZW50cyk7CiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSBidXR0
b247CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpAQCAtMjcx
LDcgKzI3Nyw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZ0J1dHRvbkN1cnJlbnRs
eURvd24gPSAwOwogCiAgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGFyZ3VtZW50Q291
bnQgPj0gMiA/IG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkgOiBF
dmFzS2V5TW9kaWZpZXJOb25lOwotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNf
Z2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRVcCwgdHJhbnNsYXRlTW91
c2VCdXR0b25OdW1iZXIoYnV0dG9uKSwgbW9kaWZpZXJzKTsKKyAgICBNb3VzZUV2ZW50SW5mbyog
ZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50VXAsIG1vZGlmaWVy
cywgdHJhbnNsYXRlTW91c2VCdXR0b25OdW1iZXIoYnV0dG9uKSk7CisgICAgZmVlZE9yUXVldWVN
b3VzZUV2ZW50KGV2ZW50SW5mbywgRmVlZFF1ZXVlZEV2ZW50cyk7CiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0yODcsNyArMjk0LDIyIEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91
c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNN
b3VzZUV2ZW50TW92ZSwgRXZhc01vdXNlQnV0dG9uTm9uZSwgRXZhc0tleU1vZGlmaWVyTm9uZSk7
CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFz
TW91c2VFdmVudE1vdmUpOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8sIERv
Tm90RmVlZFF1ZXVlZEV2ZW50cyk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBsZWFwRm9yd2FyZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+IDApIHsK
KyAgICAgICAgY29uc3QgdWxvbmcgbGVhcEZvcndhcmREZWxheSA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChnRXZlbnRRdWV1
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBnRXZlbnRRdWV1ZS5hcHBlbmQoRGVsYXllZEV2ZW50
KDAsIGxlYXBGb3J3YXJkRGVsYXkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ0V2ZW50
UXVldWUubGFzdCgpLmRlbGF5ID0gbGVhcEZvcndhcmREZWxheTsKKyAgICAgICAgZ1RpbWVPZmZz
ZXQgKz0gbGVhcEZvcndhcmREZWxheTsKKyAgICB9CisKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTMxMywxNCArMzM1LDE3IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIG1vdXNlU2Nyb2xsQnlDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3RpCiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBjb25zdCBpbnQgaG9yaXpvbnRh
bCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKSk7CisgICAgLy8gV2UgbmVlZCB0byBpbnZlcnQgc2Nyb2xsaW5nIHZhbHVl
cyBzaW5jZSBpbiBFRkwgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyB0aGF0CisgICAgLy8gY2FudmFz
IGlzIHNjcm9sbGluZyBkb3duCisgICAgY29uc3QgaW50IGhvcml6b250YWwgPSAtKHN0YXRpY19j
YXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KSkpOwogICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIGNvbnN0IGludCB2ZXJ0aWNhbCA9IHN0
YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhj
ZXB0aW9uKSk7CisgICAgY29uc3QgaW50IHZlcnRpY2FsID0gLShzdGF0aWNfY2FzdDxpbnQ+KEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpKTsKICAgICBp
ZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNf
Z2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgZXZhc01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFu
ZFZlcnRpY2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2ZXJ0aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5v
bmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8g
PSBuZXcgTW91c2VFdmVudEluZm8oZXZhc01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRp
Y2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2ZXJ0aWNhbCksIEV2YXNLZXlNb2RpZmllck5vbmUsIEV2
YXNNb3VzZUJ1dHRvbk5vbmUsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKKyAgICBmZWVkT3JRdWV1
ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTU2Miw2ICs1ODcsNyBAQCBzdGF0
aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZURv
d24iLCBtb3VzZURvd25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgIm1vdXNlVXAiLCBtb3VzZVVw
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJtb3VzZU1vdmVUbyIsIG1vdXNlTW92ZVRvQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICB7ICJsZWFwRm9yd2FyZCIsIGxlYXBGb3J3YXJkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICB7ICJrZXlEb3duIiwga2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAi
c2NoZWR1bGVBc3luY2hyb25vdXNDbGljayIsIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2tDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgIHsgInNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biIsIHNjaGVk
dWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC02MTUsMyArNjQxLDY4
IEBAIEpTT2JqZWN0UmVmIG1ha2VFdmVudFNlbmRlcihKU0NvbnRleHRSZWYgY29udGV4dCwgYm9v
bCBpc1RvcEZyYW1lKQogCiAgICAgcmV0dXJuIEpTT2JqZWN0TWFrZShjb250ZXh0LCBnZXRDbGFz
cyhjb250ZXh0KSwgMCk7CiB9CisKK3N0YXRpYyB2b2lkIGZlZWRPclF1ZXVlTW91c2VFdmVudChN
b3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvLCBFdmVudFF1ZXVlU3RyYXRlZ3kgc3RyYXRlZ3kpCit7
CisgICAgaWYgKCFnRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGdFdmVudFF1
ZXVlLmxhc3QoKS5ldmVudEluZm8pCisgICAgICAgICAgICBnRXZlbnRRdWV1ZS5sYXN0KCkuZXZl
bnRJbmZvID0gZXZlbnRJbmZvOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnRXZlbnRRdWV1
ZS5hcHBlbmQoRGVsYXllZEV2ZW50KGV2ZW50SW5mbykpOworCisgICAgICAgIGlmIChzdHJhdGVn
eSA9PSBGZWVkUXVldWVkRXZlbnRzKQorICAgICAgICAgICAgZmVlZFF1ZXVlZE1vdXNlRXZlbnRz
KCk7CisgICAgfSBlbHNlCisgICAgICAgIGZlZWRNb3VzZUV2ZW50KGV2ZW50SW5mbyk7Cit9CisK
K3N0YXRpYyB2b2lkIGZlZWRNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8pCit7
CisgICAgaWYgKCFldmVudEluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHRp
bWVTdGFtcCA9IDA7CisgICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGJyb3dzZXItPm1haW5G
cmFtZSgpOworICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUp
OworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5b3V0RnJhbWUobWFpbkZyYW1lKTsK
KyAgICBFdmFzTW91c2VFdmVudCBldmVudCA9IGV2ZW50SW5mby0+ZXZlbnQ7CisKKyAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIGV2ZW50SW5mby0+bW9kaWZpZXJzKTsKKworICAgIEV2YXNfQnV0
dG9uX0ZsYWdzIGZsYWdzID0gRVZBU19CVVRUT05fTk9ORTsKKworICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIHBhc3MgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB3aXRoIG91ciBldmVudHMsIHNvIHRo
YXQKKyAgICAvLyB3ZSBjb3VsZCBjb25zdHJ1Y3QgY29ycmVjdCBQbGF0Zm9ybVdoZWVsRXZlbnQu
IEF0IHRoZSBtb21lbnQsIG1heCBudW1iZXIKKyAgICAvLyBvZiBjbGlja3MgaXMgMworICAgIGlm
IChnQ2xpY2tDb3VudCA9PSAzKQorICAgICAgICBmbGFncyA9IEVWQVNfQlVUVE9OX1RSSVBMRV9D
TElDSzsKKyAgICBlbHNlIGlmIChnQ2xpY2tDb3VudCA9PSAyKQorICAgICAgICBmbGFncyA9IEVW
QVNfQlVUVE9OX0RPVUJMRV9DTElDSzsKKworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50
TW92ZSkKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX21vdmUoZXZhcywgZ0xhc3RNb3Vz
ZVBvc2l0aW9uWCwgZ0xhc3RNb3VzZVBvc2l0aW9uWSwgdGltZVN0YW1wKyssIDApOworICAgIGlm
IChldmVudCAmIEV2YXNNb3VzZUV2ZW50RG93bikKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21v
dXNlX2Rvd24oZXZhcywgZXZlbnRJbmZvLT5idXR0b24sIGZsYWdzLCB0aW1lU3RhbXArKywgMCk7
CisgICAgaWYgKGV2ZW50ICYgRXZhc01vdXNlRXZlbnRVcCkKKyAgICAgICAgZXZhc19ldmVudF9m
ZWVkX21vdXNlX3VwKGV2YXMsIGV2ZW50SW5mby0+YnV0dG9uLCBmbGFncywgdGltZVN0YW1wKyss
IDApOworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCB8IGV2ZW50ICYg
RXZhc01vdXNlRXZlbnRTY3JvbGxSaWdodCkKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNl
X3doZWVsKGV2YXMsIDEsIGV2ZW50SW5mby0+aG9yaXpvbnRhbERlbHRhLCB0aW1lU3RhbXAsIDAp
OworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXAgfCBldmVudCAmIEV2YXNN
b3VzZUV2ZW50U2Nyb2xsRG93bikKKyAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVs
KGV2YXMsIDAsIGV2ZW50SW5mby0+dmVydGljYWxEZWx0YSwgdGltZVN0YW1wLCAwKTsKKworICAg
IHNldEV2YXNNb2RpZmllcnMoZXZhcywgRXZhc0tleU1vZGlmaWVyTm9uZSk7CisKKyAgICBkZWxl
dGUgZXZlbnRJbmZvOworfQorCitzdGF0aWMgdm9pZCBmZWVkUXVldWVkTW91c2VFdmVudHMoKQor
eworICAgIFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZ0V2
ZW50UXVldWUuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZ0V2ZW50UXVldWUuZW5kKCk7IGl0
KyspIHsKKyAgICAgICAgRGVsYXllZEV2ZW50IGRlbGF5ZWRFdmVudCA9ICppdDsKKyAgICAgICAg
aWYgKGRlbGF5ZWRFdmVudC5kZWxheSkKKyAgICAgICAgICAgIHVzbGVlcChkZWxheWVkRXZlbnQu
ZGVsYXkgKiAxMDAwKTsKKyAgICAgICAgZmVlZE1vdXNlRXZlbnQoZGVsYXllZEV2ZW50LmV2ZW50
SW5mbyk7CisgICAgfQorICAgIGdFdmVudFF1ZXVlLmNsZWFyKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140679</attachid>
            <date>2012-05-07 23:25:21 -0700</date>
            <delta_ts>2012-05-08 01:26:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v8.patch</filename>
            <type>text/plain</type>
            <size>18422</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MDBiODRlLi44NjNjOWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUt
MDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyBkdWUgdG8g
dGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAgICAgQWRkZWQgRUZMIHNwZWNp
ZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBvcnQgMkQgd2hlZWwgZXZlbnRz
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDUtMDYgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0
b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gTmV3IHRlc3QgaW50cm9kdWNlZCBp
biByMTE2MjU1IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYmI1Mzc4
Ny4uY2Y2ZDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTksMTAgKzksNiBAQCBm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMg
bm90IGltcGxlbWVudCBkdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQKIGZhc3QvZXZlbnRzL2RyYWct
aW1hZ2UtZmlsZW5hbWUuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGNvcnJl
Y3RseSBzZW5kIGEgc2luZ2xlIHdoZWVsIGV2ZW50IHdoZW4gbW91c2VTY3JvbGxCeSBpcyBjYWxs
ZWQgd2l0aCBib3RoIHggYW5kIHkgbm90LW51bGwKLWZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25z
Y3JvbGwuaHRtbAotCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBjb250
aW51b3VzTW91c2VTY3JvbGxCeSB5ZXQKIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
ZGlyZWN0aW9uLWludmVydGVkLWZyb20tZGV2aWNlLmh0bWwKQEAgLTY3LDcgKzYzLDcgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKICMg
RUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFy
VG91Y2hQb2ludHMsIHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tz
CiBmYXN0L2V2ZW50cy90b3VjaAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxl
bWVudCBsZWFwRm9yd2FyZCB5ZXQKKyMgRUZMJ3MgcG9ydCByZXF1aXJlcyBpbXBsZW1lbnRhdGlv
biBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRFZmwgY2xhc3NlcyBpbiBvcmRlciB0byBz
dXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEz
MC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCkBAIC04OSw3ICs4NSw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRy
b3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4LTEuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwK
QEAgLTk5LDggKzk0LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5kLWFmdGVyLXRh
YmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0xMTEsMTggKzEw
NCwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1pZnJhbWUu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1ieS1kcmFnLWNy
YXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91Ymxl
LWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91
dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC10ZXh0YXJlYS5odG1sCi1mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24t
cmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81MDU2NjE5Lmh0
bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5odG1sCiBmYXN0
L2V2ZW50cy9jbGljay1jb3VudC5odG1sCkBAIC0xMzgsMzMgKzEyMywxOSBAQCBmYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0bWwKIGZhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbAot
ZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hpbGUtcHJlc3NpbmctbW91c2UtYnV0dG9uLmh0
bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJh
Z2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tpbmctdGltZXJzLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQt
aW4tbW91c2V1cC1kZWVwLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC1pbnNlcnRiYWNrLmh0bWwKLWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC10
d2ljZS5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1jbGlja3MuaHRtbAogZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1i
eS1zaW5nbGUtY2xpY2std2l0aC1zaGlmdC5odG1sCiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWlt
YWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVy
ZS1jbGljay5odG1sCi1mYXN0L2V2ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMv
ZHJhZy1pbnRvLXRleHRhcmVhLmh0bWwKIGZhc3QvZm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFyZWEu
aHRtbAotZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtaGl0LXRlc3QuaHRtbAogZmFzdC9mb3Jt
cy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRtbAogZmFzdC9mb3Jtcy9zZWFyY2gtY2FuY2Vs
LWJ1dHRvbi1tb3VzZXVwLmh0bWwKIGZhc3QvZm9ybXMvc2VhcmNoLWRpc2FibGVkLXJlYWRvbmx5
Lmh0bWwKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLWRyYWctaW50by1kaXNhYmxlZC5odG1sCiBmYXN0
L2Zvcm1zL3R5cGUtYWZ0ZXItZm9jdXMtcnVsZS1zaHJpbmstd2lkdGguaHRtbAotZmFzdC9mcmFt
ZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwKLWZhc3QvZnJhbWVz
L2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5odG1sCi1mYXN0L2ZyYW1lcy9mcmFtZS13aXRo
LW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAot
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0
aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKIGZhc3QvbGlzdHMvZHJhZy1pbnRvLW1hcmtlci5o
dG1sCiBmYXN0L3RhYmxlL2NsaWNrLW5lYXItYW5vbnltb3VzLXRhYmxlLmh0bWwKIGZhc3QvdGV4
dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWlu
LXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxMjdhZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13
aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
RkFJTCBldmVudC53aGVlbERlbHRhWSBzaG91bGQgYmUgLTYwMC4gV2FzIDAuCitQQVNTIGV2ZW50
LndoZWVsRGVsdGFYIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQqLTEyMAorUEFTUyBldmVu
dC53aGVlbERlbHRhWSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AqLTEyMAorRkFJTCBldmVu
dC53aGVlbERlbHRhWCBzaG91bGQgYmUgLTM2MC4gV2FzIDAuCitQQVNTIGV2ZW50LndoZWVsRGVs
dGEgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKi0xMjAKK1BBU1MgZGl2LnNjcm9sbFRvcCBp
cyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3Aqd2luZG93LnBpeGVsc1BlcldoZWVsVGljaworUEFT
UyBkaXYuc2Nyb2xsTGVmdCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0KndpbmRvdy5waXhl
bHNQZXJXaGVlbFRpY2sKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDkwNWJjMzguLjkzMDFkYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNS0wNyAgQWxl
eGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKworICAgICAg
ICBbRUZMXVtEUlRdIEV2ZW50U2VuZGVyIG5lZWRzIGltcGxlbWVudGF0aW9uIG9mIGxlYXBGb3J3
YXJkIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudGVkIGxlYXBGb3J3YXJkIGZ1bmN0aW9uIGluIEVmbCdzIERSVC4gVGhpcyBm
dW5jdGlvbiBpcyByZXF1aXJlZAorICAgICAgICB0byBkZWxheSBhbmQgcXVldWUgZXZlbnQgZXhl
Y3V0aW9uIGFuZCBzaW11bGF0ZSByZWFsIHVzZXIgYmVoYXZpb3IuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRGVsYXllZEV2ZW50KToK
KyAgICAgICAgKE1vdXNlRXZlbnRJbmZvOjpNb3VzZUV2ZW50SW5mbyk6CisgICAgICAgIChNb3Vz
ZUV2ZW50SW5mbyk6CisgICAgICAgIChzZW5kQ2xpY2spOgorICAgICAgICAobW91c2VEb3duQ2Fs
bGJhY2spOgorICAgICAgICAobW91c2VVcENhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlTW92ZVRv
Q2FsbGJhY2spOgorICAgICAgICAobGVhcEZvcndhcmRDYWxsYmFjayk6CisgICAgICAgIChtb3Vz
ZVNjcm9sbEJ5Q2FsbGJhY2spOgorICAgICAgICAoZmVlZE9yUXVldWVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKGZlZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKGZlZWRRdWV1ZWRNb3VzZUV2ZW50cyk6
CisKIDIwMTItMDUtMDYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtwcmVwYXJlLUNoYW5nZUxvZ10gRXhjbHVkZXMgYSByZWZlcmVuY2UgZmlsZSB1c2VkIGJ5
IHJlZnRlc3RzIGZyb20gdGVzdCBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDJiZWQ1YzkuLjlmZGJlZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBAQCBlbnVtIFpvb21FdmVudCB7
CiAgICAgWm9vbU91dAogfTsKIAorZW51bSBFdmVudFF1ZXVlU3RyYXRlZ3kgeworICAgIEZlZWRR
dWV1ZWRFdmVudHMsCisgICAgRG9Ob3RGZWVkUXVldWVkRXZlbnRzCit9OworCiBzdHJ1Y3QgS2V5
RXZlbnRJbmZvIHsKICAgICBLZXlFdmVudEluZm8oY29uc3QgQ1N0cmluZyYga2V5TmFtZSwgRXZh
c0tleU1vZGlmaWVyIG1vZGlmaWVycykKICAgICAgICAgOiBrZXlOYW1lKGtleU5hbWUpCkBAIC0x
MTQsNiArMTE5LDQ1IEBAIHN0cnVjdCBLZXlFdmVudEluZm8gewogICAgIEV2YXNLZXlNb2RpZmll
ciBtb2RpZmllcnM7CiB9OwogCitzdHJ1Y3QgTW91c2VFdmVudEluZm8geworICAgIE1vdXNlRXZl
bnRJbmZvKEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0g
RXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uIGJ1dHRvbiA9IEV2YXNNb3VzZUJ1
dHRvbk5vbmUsIGludCBob3Jpem9udGFsRGVsdGEgPSAwLCBpbnQgdmVydGljYWxEZWx0YSA9IDAp
CisgICAgICAgIDogZXZlbnQoZXZlbnQpCisgICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVycykK
KyAgICAgICAgLCBidXR0b24oYnV0dG9uKQorICAgICAgICAsIGhvcml6b250YWxEZWx0YShob3Jp
em9udGFsRGVsdGEpCisgICAgICAgICwgdmVydGljYWxEZWx0YSh2ZXJ0aWNhbERlbHRhKQorICAg
IHsKKyAgICB9CisKKyAgICBFdmFzTW91c2VFdmVudCBldmVudDsKKyAgICBFdmFzS2V5TW9kaWZp
ZXIgbW9kaWZpZXJzOworICAgIEV2YXNNb3VzZUJ1dHRvbiBidXR0b247CisgICAgaW50IGhvcml6
b250YWxEZWx0YTsKKyAgICBpbnQgdmVydGljYWxEZWx0YTsKK307CisKK3N0cnVjdCBEZWxheWVk
RXZlbnQgeworICAgIERlbGF5ZWRFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvLCB1bG9u
ZyBkZWxheSA9IDApCisgICAgICAgIDogZXZlbnRJbmZvKGV2ZW50SW5mbykKKyAgICAgICAgLCBk
ZWxheShkZWxheSkKKyAgICB7CisgICAgfQorCisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5m
bzsKKyAgICB1bG9uZyBkZWxheTsKK307CisKK3N0YXRpYyBXVEY6OlZlY3RvcjxEZWxheWVkRXZl
bnQ+JiBkZWxheWVkRXZlbnRRdWV1ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6
OlZlY3RvcjxEZWxheWVkRXZlbnQ+LCBzdGF0aWNEZWxheWVkRXZlbnRRdWV1ZSwgKCkpOworICAg
IHJldHVybiBzdGF0aWNEZWxheWVkRXZlbnRRdWV1ZTsKK30KKworCitzdGF0aWMgdm9pZCBmZWVk
T3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBFdmVudFF1ZXVlU3RyYXRlZ3kpOwor
c3RhdGljIHZvaWQgZmVlZE1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qKTsKK3N0YXRpYyB2b2lk
IGZlZWRRdWV1ZWRNb3VzZUV2ZW50cygpOworCiBzdGF0aWMgdm9pZCBzZXRFdmFzTW9kaWZpZXJz
KEV2YXMqIGV2YXMsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIG1vZGlmaWVyTmFtZXNbXSA9IHsgIkNvbnRyb2wiLCAiU2hpZnQiLCAiQWx0Iiwg
IlN1cGVyIiB9OwpAQCAtMTQxLDQzICsxODUsMTAgQEAgc3RhdGljIEV2YXNNb3VzZUJ1dHRvbiB0
cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihpbnQgZXZlbnRTZW5kZXJCdXR0b25OdW1iZXIpCiAg
ICAgcmV0dXJuIEV2YXNNb3VzZUJ1dHRvbkxlZnQ7CiB9CiAKLXN0YXRpYyB2b2lkIHNlbmRNb3Vz
ZUV2ZW50KEV2YXMqIGV2YXMsIEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBpbnQgYnV0dG9uTnVtYmVy
LCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQotewotICAgIHVuc2lnbmVkIHRpbWVTdGFtcCA9
IDA7Ci0KLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKGJyb3dzZXIt
Pm1haW5GcmFtZSgpKTsKLQotICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgbW9kaWZpZXJzKTsK
LSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUpCi0gICAgICAgIGV2YXNfZXZlbnRf
ZmVlZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgsIGdMYXN0TW91c2VQb3Np
dGlvblksIHRpbWVTdGFtcCsrLCAwKTsKLSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudERv
d24pIHsKLSAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSAwOwotICAgICAgICBpZiAoZ0NsaWNrQ291
bnQgPT0gMikKLSAgICAgICAgICAgIGZsYWdzIHw9IEVWQVNfQlVUVE9OX0RPVUJMRV9DTElDSzsK
LSAgICAgICAgZWxzZSBpZiAoZ0NsaWNrQ291bnQgPT0gMykKLSAgICAgICAgICAgIGZsYWdzIHw9
IEVWQVNfQlVUVE9OX1RSSVBMRV9DTElDSzsKLQotICAgICAgICBldmFzX2V2ZW50X2ZlZWRfbW91
c2VfZG93bihldmFzLCBidXR0b25OdW1iZXIsIHN0YXRpY19jYXN0PEV2YXNfQnV0dG9uX0ZsYWdz
PihmbGFncyksIHRpbWVTdGFtcCsrLCAwKTsKLSAgICB9Ci0gICAgaWYgKGV2ZW50ICYgRXZhc01v
dXNlRXZlbnRVcCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3VwKGV2YXMsIGJ1dHRv
bk51bWJlciwgRVZBU19CVVRUT05fTk9ORSwgdGltZVN0YW1wKyssIDApOwotCi0gICAgY29uc3Qg
Ym9vbCBob3Jpem9udGFsID0gISEoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQgfCBl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsUmlnaHQpOwotICAgIGNvbnN0IGJvb2wgdmVydGlj
YWwgPSAhIShldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXAgfCBldmVudCAmIEV2YXNNb3Vz
ZUV2ZW50U2Nyb2xsRG93bik7Ci0gICAgaWYgKHZlcnRpY2FsICYmIGhvcml6b250YWwpIHsKLSAg
ICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIChldmVudCAmIEV2YXNN
b3VzZUV2ZW50U2Nyb2xsVXApID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0gICAgICAgIGV2
YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCAoZXZlbnQgJiBFdmFzTW91c2VFdmVu
dFNjcm9sbExlZnQpID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0gICAgfSBlbHNlIGlmICh2
ZXJ0aWNhbCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAsIChl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXApID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7
Ci0gICAgZWxzZSBpZiAoaG9yaXpvbnRhbCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNl
X3doZWVsKGV2YXMsIDEsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsTGVmdCkgPyAxMCA6
IC0xMCwgdGltZVN0YW1wLCAwKTsKLQotICAgIHNldEV2YXNNb2RpZmllcnMoZXZhcywgRXZhc0tl
eU1vZGlmaWVyTm9uZSk7Ci19Ci0KIHN0YXRpYyBFaW5hX0Jvb2wgc2VuZENsaWNrKHZvaWQqKQog
ewotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5G
cmFtZSgpKSwgRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc01vdXNlQnV0dG9uTGVmdCwgRXZhc0tl
eU1vZGlmaWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3Vz
ZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudENsaWNrLCBFdmFzS2V5TW9kaWZpZXJOb25lLCBFdmFz
TW91c2VCdXR0b25MZWZ0KTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBG
ZWVkUXVldWVkRXZlbnRzKTsKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwogfQog
CkBAIC0yNDksOCArMjYwLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VEb3duQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogICAgIHVwZGF0ZUNs
aWNrQ291bnQoYnV0dG9uKTsKIAogICAgIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMgPSBhcmd1
bWVudENvdW50ID49IDIgPyBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250ZXh0LCBhcmd1bWVudHNb
MV0pIDogRXZhc0tleU1vZGlmaWVyTm9uZTsKLSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVj
dF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50RG93biwgYnV0
dG9uLCBtb2RpZmllcnMpOwotCisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBN
b3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudERvd24sIG1vZGlmaWVycywgc3RhdGljX2Nhc3Q8
RXZhc01vdXNlQnV0dG9uPihidXR0b24pKTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZl
bnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsKICAgICBnQnV0dG9uQ3VycmVudGx5RG93biA9IGJ1
dHRvbjsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC0y
NzEsNyArMjgyLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAgICBnQnV0dG9uQ3VycmVu
dGx5RG93biA9IDA7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1lbnRD
b3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFdKSA6
IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZh
c19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudFVwLCB0cmFuc2xhdGVN
b3VzZUJ1dHRvbk51bWJlcihidXR0b24pLCBtb2RpZmllcnMpOworICAgIE1vdXNlRXZlbnRJbmZv
KiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNlRXZlbnRVcCwgbW9kaWZp
ZXJzLCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihidXR0b24pKTsKKyAgICBmZWVkT3JRdWV1
ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTI4Nyw3ICsyOTksMjIgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHNlbmRN
b3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZh
c01vdXNlRXZlbnRNb3ZlLCBFdmFzTW91c2VCdXR0b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25l
KTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1vdXNlRXZlbnRJbmZvKEV2
YXNNb3VzZUV2ZW50TW92ZSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2ZW50KGV2ZW50SW5mbywg
RG9Ob3RGZWVkUXVldWVkRXZlbnRzKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxlYXBGb3J3YXJkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ID4gMCkg
eworICAgICAgICBjb25zdCB1bG9uZyBsZWFwRm9yd2FyZERlbGF5ID0gSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGRlbGF5ZWRF
dmVudFF1ZXVlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGVsYXllZEV2ZW50UXVldWUoKS5h
cHBlbmQoRGVsYXllZEV2ZW50KDAsIGxlYXBGb3J3YXJkRGVsYXkpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZGVsYXllZEV2ZW50UXVldWUoKS5sYXN0KCkuZGVsYXkgPSBsZWFwRm9yd2Fy
ZERlbGF5OworICAgICAgICBnVGltZU9mZnNldCArPSBsZWFwRm9yd2FyZERlbGF5OworICAgIH0K
KwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMzEz
LDE0ICszNDAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VTY3JvbGxCeUNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IAotICAgIGNvbnN0IGludCBob3Jpem9udGFsID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAvLyBXZSBuZWVk
IHRvIGludmVydCBzY3JvbGxpbmcgdmFsdWVzIHNpbmNlIGluIEVGTCBuZWdhdGl2ZSB6IHZhbHVl
IG1lYW5zIHRoYXQKKyAgICAvLyBjYW52YXMgaXMgc2Nyb2xsaW5nIGRvd24KKyAgICBjb25zdCBp
bnQgaG9yaXpvbnRhbCA9IC0oc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSk7CiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhj
ZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0g
ICAgY29uc3QgaW50IHZlcnRpY2FsID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBjb25zdCBpbnQgdmVydGlj
YWwgPSAtKHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50
c1sxXSwgZXhjZXB0aW9uKSkpOwogICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgc2VuZE1v
dXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBldmFz
TW91c2VFdmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGljYWxPZmZzZXRzKGhvcml6b250YWwsIHZl
cnRpY2FsKSwgRXZhc01vdXNlQnV0dG9uTm9uZSwgRXZhc0tleU1vZGlmaWVyTm9uZSk7CisgICAg
TW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhldmFzTW91c2VF
dmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGljYWxPZmZzZXRzKGhvcml6b250YWwsIHZlcnRpY2Fs
KSwgRXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uTm9uZSwgaG9yaXpvbnRhbCwg
dmVydGljYWwpOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVudEluZm8sIEZlZWRRdWV1
ZWRFdmVudHMpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IApAQCAtNTYyLDYgKzU5Miw3IEBAIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0
aW9uc1tdID0gewogICAgIHsgIm1vdXNlRG93biIsIG1vdXNlRG93bkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgeyAibW91c2VVcCIsIG1vdXNlVXBDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgIm1vdXNl
TW92ZVRvIiwgbW91c2VNb3ZlVG9DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImxlYXBGb3J3YXJk
IiwgbGVhcEZvcndhcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgImtleURvd24iLCBrZXlEb3du
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrIiwgc2No
ZWR1bGVBc3luY2hyb25vdXNDbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAic2NoZWR1bGVB
c3luY2hyb25vdXNLZXlEb3duIiwgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKQEAgLTYxNSwzICs2NDYsNjggQEAgSlNPYmplY3RSZWYgbWFrZUV2ZW50U2VuZGVy
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJhbWUpCiAKICAgICByZXR1cm4gSlNP
YmplY3RNYWtlKGNvbnRleHQsIGdldENsYXNzKGNvbnRleHQpLCAwKTsKIH0KKworc3RhdGljIHZv
aWQgZmVlZE9yUXVldWVNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8sIEV2ZW50
UXVldWVTdHJhdGVneSBzdHJhdGVneSkKK3sKKyAgICBpZiAoIWRlbGF5ZWRFdmVudFF1ZXVlKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkZWxheWVkRXZlbnRRdWV1ZSgpLmxhc3QoKS5ldmVu
dEluZm8pCisgICAgICAgICAgICBkZWxheWVkRXZlbnRRdWV1ZSgpLmxhc3QoKS5ldmVudEluZm8g
PSBldmVudEluZm87CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGF5ZWRFdmVudFF1ZXVl
KCkuYXBwZW5kKERlbGF5ZWRFdmVudChldmVudEluZm8pKTsKKworICAgICAgICBpZiAoc3RyYXRl
Z3kgPT0gRmVlZFF1ZXVlZEV2ZW50cykKKyAgICAgICAgICAgIGZlZWRRdWV1ZWRNb3VzZUV2ZW50
cygpOworICAgIH0gZWxzZQorICAgICAgICBmZWVkTW91c2VFdmVudChldmVudEluZm8pOworfQor
CitzdGF0aWMgdm9pZCBmZWVkTW91c2VFdmVudChNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvKQor
eworICAgIGlmICghZXZlbnRJbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB0
aW1lU3RhbXAgPSAwOworICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWlu
RnJhbWUoKTsKKyAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQobWFpbkZyYW1l
KTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZyYW1lKG1haW5GcmFtZSk7
CisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQgPSBldmVudEluZm8tPmV2ZW50OworCisgICAgc2V0
RXZhc01vZGlmaWVycyhldmFzLCBldmVudEluZm8tPm1vZGlmaWVycyk7CisKKyAgICBFdmFzX0J1
dHRvbl9GbGFncyBmbGFncyA9IEVWQVNfQlVUVE9OX05PTkU7CisKKyAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBwYXNzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gd2l0aCBvdXIgZXZlbnRzLCBzbyB0
aGF0CisgICAgLy8gd2UgY291bGQgY29uc3RydWN0IGNvcnJlY3QgUGxhdGZvcm1XaGVlbEV2ZW50
LiBBdCB0aGUgbW9tZW50LCBtYXggbnVtYmVyCisgICAgLy8gb2YgY2xpY2tzIGlzIDMKKyAgICBp
ZiAoZ0NsaWNrQ291bnQgPT0gMykKKyAgICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9UUklQTEVf
Q0xJQ0s7CisgICAgZWxzZSBpZiAoZ0NsaWNrQ291bnQgPT0gMikKKyAgICAgICAgZmxhZ3MgPSBF
VkFTX0JVVFRPTl9ET1VCTEVfQ0xJQ0s7CisKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVu
dE1vdmUpCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91
c2VQb3NpdGlvblgsIGdMYXN0TW91c2VQb3NpdGlvblksIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBp
ZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudERvd24pCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9t
b3VzZV9kb3duKGV2YXMsIGV2ZW50SW5mby0+YnV0dG9uLCBmbGFncywgdGltZVN0YW1wKyssIDAp
OworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50VXApCisgICAgICAgIGV2YXNfZXZlbnRf
ZmVlZF9tb3VzZV91cChldmFzLCBldmVudEluZm8tPmJ1dHRvbiwgZmxhZ3MsIHRpbWVTdGFtcCsr
LCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQgfCBldmVudCAm
IEV2YXNNb3VzZUV2ZW50U2Nyb2xsUmlnaHQpCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3Vz
ZV93aGVlbChldmFzLCAxLCBldmVudEluZm8tPmhvcml6b250YWxEZWx0YSwgdGltZVN0YW1wLCAw
KTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVwIHwgZXZlbnQgJiBFdmFz
TW91c2VFdmVudFNjcm9sbERvd24pCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVl
bChldmFzLCAwLCBldmVudEluZm8tPnZlcnRpY2FsRGVsdGEsIHRpbWVTdGFtcCwgMCk7CisKKyAg
ICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5vbmUpOworCisgICAgZGVs
ZXRlIGV2ZW50SW5mbzsKK30KKworc3RhdGljIHZvaWQgZmVlZFF1ZXVlZE1vdXNlRXZlbnRzKCkK
K3sKKyAgICBXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGRl
bGF5ZWRFdmVudFF1ZXVlKCkuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZGVsYXllZEV2ZW50
UXVldWUoKS5lbmQoKTsgaXQrKykgeworICAgICAgICBEZWxheWVkRXZlbnQgZGVsYXllZEV2ZW50
ID0gKml0OworICAgICAgICBpZiAoZGVsYXllZEV2ZW50LmRlbGF5KQorICAgICAgICAgICAgdXNs
ZWVwKGRlbGF5ZWRFdmVudC5kZWxheSAqIDEwMDApOworICAgICAgICBmZWVkTW91c2VFdmVudChk
ZWxheWVkRXZlbnQuZXZlbnRJbmZvKTsKKyAgICB9CisgICAgZGVsYXllZEV2ZW50UXVldWUoKS5j
bGVhcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140689</attachid>
            <date>2012-05-08 01:26:55 -0700</date>
            <delta_ts>2012-05-08 16:21:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>efl_leapForward_v9.patch</filename>
            <type>text/plain</type>
            <size>18437</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MDBiODRlLi44NjNjOWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUt
MDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBsZW1lbnRhdGlvbiBvZiBs
ZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXBwaW5nIGZldyB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyBkdWUgdG8g
dGhlIG1pc3NpbmcgbGVhcEZvcndhcmQgZnVuY3Rpb24KKyAgICAgICAgQWRkZWQgRUZMIHNwZWNp
ZmljIHRlc3QgcmVzdWx0LCBzaW5jZSBFRkwgZG9lc250IHN1cHBvcnQgMkQgd2hlZWwgZXZlbnRz
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDUtMDYgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0
b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gTmV3IHRlc3QgaW50cm9kdWNlZCBp
biByMTE2MjU1IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggYmI1Mzc4
Ny4uNzY3YmFmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTksMTAgKzksNiBAQCBm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMg
bm90IGltcGxlbWVudCBkdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQKIGZhc3QvZXZlbnRzL2RyYWct
aW1hZ2UtZmlsZW5hbWUuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGNvcnJl
Y3RseSBzZW5kIGEgc2luZ2xlIHdoZWVsIGV2ZW50IHdoZW4gbW91c2VTY3JvbGxCeSBpcyBjYWxs
ZWQgd2l0aCBib3RoIHggYW5kIHkgbm90LW51bGwKLWZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25z
Y3JvbGwuaHRtbAotCiAjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBjb250
aW51b3VzTW91c2VTY3JvbGxCeSB5ZXQKIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQt
ZGlyZWN0aW9uLWludmVydGVkLWZyb20tZGV2aWNlLmh0bWwKQEAgLTY3LDcgKzYzLDcgQEAgaHR0
cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKICMg
RUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFy
VG91Y2hQb2ludHMsIHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tz
CiBmYXN0L2V2ZW50cy90b3VjaAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxl
bWVudCBsZWFwRm9yd2FyZCB5ZXQKKyMgRUZMJ3MgcG9ydCByZXF1aXJlcyBpbXBsZW1lbnRhdGlv
biBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRFZmwgY2xhc3NlcyBpbiBvcmRlciB0byBz
dXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1k
cm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEz
MC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5o
dG1sCkBAIC04OSw3ICs4NSw2IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRy
b3AtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4LTEuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNDg5NTQyOC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzMzM3MjUuaHRtbAotZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtYmlkaS1maXJzdC1hbmQtbGFzdC1sZXR0ZXJzLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LWx0ci0yLWxlZnQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
Y2FyZXQtbHRyLTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbHRyLXJpZ2h0Lmh0bWwK
QEAgLTk5LDggKzk0LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtcnRsLXJpZ2h0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXJ0bC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWZvcmUtYW5kLWFmdGVyLXRh
YmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jcmFzaC1vbi1kcmFnLXdpdGgtbXV0YXRpb24tZXZlbnRzLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCkBAIC0xMTEsMTcgKzEw
NCwxMCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1pZnJhbWUu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLW92ZXItZmlsZS1pbnB1dC1ieS1kcmFnLWNy
YXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91Ymxl
LWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC00Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQtNS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC1jb250ZW50ZWRpdGFibGUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91
dC1vZi1mbG9hdGVkLWlucHV0Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2Yt
ZmxvYXRlZC10ZXh0YXJlYS5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24t
cmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2V2ZW50cy81MDU2NjE5Lmh0
bWwKIGZhc3QvZXZlbnRzL2JvZ3VzLWRyb3BFZmZlY3QtZWZmZWN0QWxsb3dlZC5odG1sCkBAIC0x
MzgsMzMgKzEyNCwyMyBAQCBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAogZmFzdC9ldmVu
dHMvZHJvcHpvbmUtMDAyLmh0bWwKIGZhc3QvZXZlbnRzL2Ryb3B6b25lLTAwMy5odG1sCiBmYXN0
L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbAotZmFzdC9ldmVudHMvZmlyZS1tb3VzZWRvd24td2hp
bGUtcHJlc3NpbmctbW91c2UtYnV0dG9uLmh0bWwKLWZhc3QvZXZlbnRzL2ZyYW1lLWNsaWNrLWZv
Y3VzLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJhZ2VudGVyLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJv
cC10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tpbmctdGltZXJzLmh0bWwK
LWZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC1kZWVwLmh0bWwKLWZhc3QvZXZl
bnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC1pbnNlcnRiYWNrLmh0bWwKLWZhc3QvZXZlbnRz
L3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC10d2ljZS5odG1sCi1mYXN0L2V2ZW50cy9yZW1vdmUt
dGFyZ2V0LWluLW1vdXNldXAuaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91Ymxl
LXRyaXBsZS1jbGlja3MuaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1s
Ci1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1zaW5nbGUtY2xpY2std2l0aC1zaGlmdC5odG1s
CiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWltYWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCiBmYXN0L2V2ZW50cy96b29t
LWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMvZHJhZy1pbnRvLXRleHRhcmVhLmh0bWwKIGZhc3Qv
Zm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFyZWEuaHRtbAotZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5w
dXQtaGl0LXRlc3QuaHRtbAogZmFzdC9mb3Jtcy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRt
bAogZmFzdC9mb3Jtcy9zZWFyY2gtY2FuY2VsLWJ1dHRvbi1tb3VzZXVwLmh0bWwKIGZhc3QvZm9y
bXMvc2VhcmNoLWRpc2FibGVkLXJlYWRvbmx5Lmh0bWwKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLWRy
YWctaW50by1kaXNhYmxlZC5odG1sCi1mYXN0L2Zvcm1zL3R5cGUtYWZ0ZXItZm9jdXMtcnVsZS1z
aHJpbmstd2lkdGguaHRtbAotZmFzdC9mcmFtZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9t
LWZyYW1lc2V0Lmh0bWwKIGZhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5o
dG1sCiBmYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVy
LXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAogZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6
ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKK2Zh
c3QvZm9ybXMvdHlwZS1hZnRlci1mb2N1cy1ydWxlLXNocmluay13aWR0aC5odG1sCiBmYXN0L2xp
c3RzL2RyYWctaW50by1tYXJrZXIuaHRtbAogZmFzdC90YWJsZS9jbGljay1uZWFyLWFub255bW91
cy10YWJsZS5odG1sCiBmYXN0L3RleHQvb2Zmc2V0Rm9yUG9zaXRpb24tY29tcGxleC1mYWxsYmFj
ay5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9ldmVudHMv
cGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNj
cm9sbGluZy1kaXYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM1MTI3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
ZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDkgQEAKK0ZBSUwgZXZlbnQud2hlZWxEZWx0YVkgc2hvdWxkIGJlIC02
MDAuIFdhcyAwLgorUEFTUyBldmVudC53aGVlbERlbHRhWCBpcyB3aW5kb3cuZXhwZWN0ZWRTY3Jv
bGxMZWZ0Ki0xMjAKK1BBU1MgZXZlbnQud2hlZWxEZWx0YSBpcyB3aW5kb3cuZXhwZWN0ZWRTY3Jv
bGxMZWZ0Ki0xMjAKK1BBU1MgZXZlbnQud2hlZWxEZWx0YVkgaXMgd2luZG93LmV4cGVjdGVkU2Ny
b2xsVG9wKi0xMjAKK0ZBSUwgZXZlbnQud2hlZWxEZWx0YVggc2hvdWxkIGJlIC0zNjAuIFdhcyAw
LgorUEFTUyBldmVudC53aGVlbERlbHRhIGlzIHdpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCotMTIw
CitQQVNTIGRpdi5zY3JvbGxUb3AgaXMgd2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wKndpbmRvdy5w
aXhlbHNQZXJXaGVlbFRpY2sKK1BBU1MgZGl2LnNjcm9sbExlZnQgaXMgd2luZG93LmV4cGVjdGVk
U2Nyb2xsTGVmdCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNrCisKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MDViYzM4Li45MzAxZGMyIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMDUtMDcgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1v
dkBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBFdmVudFNlbmRlciBuZWVkcyBpbXBs
ZW1lbnRhdGlvbiBvZiBsZWFwRm9yd2FyZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBsZWFwRm9yd2FyZCBmdW5jdGlv
biBpbiBFZmwncyBEUlQuIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQKKyAgICAgICAgdG8gZGVs
YXkgYW5kIHF1ZXVlIGV2ZW50IGV4ZWN1dGlvbiBhbmQgc2ltdWxhdGUgcmVhbCB1c2VyIGJlaGF2
aW9yLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAg
ICAgICAgKERlbGF5ZWRFdmVudCk6CisgICAgICAgIChNb3VzZUV2ZW50SW5mbzo6TW91c2VFdmVu
dEluZm8pOgorICAgICAgICAoTW91c2VFdmVudEluZm8pOgorICAgICAgICAoc2VuZENsaWNrKToK
KyAgICAgICAgKG1vdXNlRG93bkNhbGxiYWNrKToKKyAgICAgICAgKG1vdXNlVXBDYWxsYmFjayk6
CisgICAgICAgIChtb3VzZU1vdmVUb0NhbGxiYWNrKToKKyAgICAgICAgKGxlYXBGb3J3YXJkQ2Fs
bGJhY2spOgorICAgICAgICAobW91c2VTY3JvbGxCeUNhbGxiYWNrKToKKyAgICAgICAgKGZlZWRP
clF1ZXVlTW91c2VFdmVudCk6CisgICAgICAgIChmZWVkTW91c2VFdmVudCk6CisgICAgICAgIChm
ZWVkUXVldWVkTW91c2VFdmVudHMpOgorCiAyMDEyLTA1LTA2ICBIYXlhdG8gSXRvICA8aGF5YXRv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbcHJlcGFyZS1DaGFuZ2VMb2ddIEV4Y2x1ZGVzIGEg
cmVmZXJlbmNlIGZpbGUgdXNlZCBieSByZWZ0ZXN0cyBmcm9tIHRlc3QgZmlsZXMuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCAyYmVkNWM5Li4xYjlhNDUyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKQEAgLTEwMyw2ICsxMDMs
MTEgQEAgZW51bSBab29tRXZlbnQgewogICAgIFpvb21PdXQKIH07CiAKK2VudW0gRXZlbnRRdWV1
ZVN0cmF0ZWd5IHsKKyAgICBGZWVkUXVldWVkRXZlbnRzLAorICAgIERvTm90RmVlZFF1ZXVlZEV2
ZW50cworfTsKKwogc3RydWN0IEtleUV2ZW50SW5mbyB7CiAgICAgS2V5RXZlbnRJbmZvKGNvbnN0
IENTdHJpbmcmIGtleU5hbWUsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMpCiAgICAgICAgIDog
a2V5TmFtZShrZXlOYW1lKQpAQCAtMTE0LDYgKzExOSw0NSBAQCBzdHJ1Y3QgS2V5RXZlbnRJbmZv
IHsKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzOwogfTsKIAorc3RydWN0IE1vdXNlRXZl
bnRJbmZvIHsKKyAgICBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudCBldmVudCwgRXZhc0tl
eU1vZGlmaWVyIG1vZGlmaWVycyA9IEV2YXNLZXlNb2RpZmllck5vbmUsIEV2YXNNb3VzZUJ1dHRv
biBidXR0b24gPSBFdmFzTW91c2VCdXR0b25Ob25lLCBpbnQgaG9yaXpvbnRhbERlbHRhID0gMCwg
aW50IHZlcnRpY2FsRGVsdGEgPSAwKQorICAgICAgICA6IGV2ZW50KGV2ZW50KQorICAgICAgICAs
IG1vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgICwgYnV0dG9uKGJ1dHRvbikKKyAgICAgICAg
LCBob3Jpem9udGFsRGVsdGEoaG9yaXpvbnRhbERlbHRhKQorICAgICAgICAsIHZlcnRpY2FsRGVs
dGEodmVydGljYWxEZWx0YSkKKyAgICB7CisgICAgfQorCisgICAgRXZhc01vdXNlRXZlbnQgZXZl
bnQ7CisgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVyczsKKyAgICBFdmFzTW91c2VCdXR0b24g
YnV0dG9uOworICAgIGludCBob3Jpem9udGFsRGVsdGE7CisgICAgaW50IHZlcnRpY2FsRGVsdGE7
Cit9OworCitzdHJ1Y3QgRGVsYXllZEV2ZW50IHsKKyAgICBEZWxheWVkRXZlbnQoTW91c2VFdmVu
dEluZm8qIGV2ZW50SW5mbywgdWxvbmcgZGVsYXkgPSAwKQorICAgICAgICA6IGV2ZW50SW5mbyhl
dmVudEluZm8pCisgICAgICAgICwgZGVsYXkoZGVsYXkpCisgICAgeworICAgIH0KKworICAgIE1v
dXNlRXZlbnRJbmZvKiBldmVudEluZm87CisgICAgdWxvbmcgZGVsYXk7Cit9OworCitXVEY6OlZl
Y3RvcjxEZWxheWVkRXZlbnQ+JiBkZWxheWVkRXZlbnRRdWV1ZSgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+LCBzdGF0aWNEZWxheWVkRXZlbnRR
dWV1ZSwgKCkpOworICAgIHJldHVybiBzdGF0aWNEZWxheWVkRXZlbnRRdWV1ZTsKK30KKworCitz
dGF0aWMgdm9pZCBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8qLCBFdmVudFF1
ZXVlU3RyYXRlZ3kpOworc3RhdGljIHZvaWQgZmVlZE1vdXNlRXZlbnQoTW91c2VFdmVudEluZm8q
KTsKK3N0YXRpYyB2b2lkIGZlZWRRdWV1ZWRNb3VzZUV2ZW50cygpOworCiBzdGF0aWMgdm9pZCBz
ZXRFdmFzTW9kaWZpZXJzKEV2YXMqIGV2YXMsIEV2YXNLZXlNb2RpZmllciBtb2RpZmllcnMpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1vZGlmaWVyTmFtZXNbXSA9IHsgIkNvbnRyb2wiLCAi
U2hpZnQiLCAiQWx0IiwgIlN1cGVyIiB9OwpAQCAtMTQxLDQzICsxODUsMTAgQEAgc3RhdGljIEV2
YXNNb3VzZUJ1dHRvbiB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihpbnQgZXZlbnRTZW5kZXJC
dXR0b25OdW1iZXIpCiAgICAgcmV0dXJuIEV2YXNNb3VzZUJ1dHRvbkxlZnQ7CiB9CiAKLXN0YXRp
YyB2b2lkIHNlbmRNb3VzZUV2ZW50KEV2YXMqIGV2YXMsIEV2YXNNb3VzZUV2ZW50IGV2ZW50LCBp
bnQgYnV0dG9uTnVtYmVyLCBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJzKQotewotICAgIHVuc2ln
bmVkIHRpbWVTdGFtcCA9IDA7Ci0KLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91
dEZyYW1lKGJyb3dzZXItPm1haW5GcmFtZSgpKTsKLQotICAgIHNldEV2YXNNb2RpZmllcnMoZXZh
cywgbW9kaWZpZXJzKTsKLSAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudE1vdmUpCi0gICAg
ICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9tb3ZlKGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgs
IGdMYXN0TW91c2VQb3NpdGlvblksIHRpbWVTdGFtcCsrLCAwKTsKLSAgICBpZiAoZXZlbnQgJiBF
dmFzTW91c2VFdmVudERvd24pIHsKLSAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSAwOwotICAgICAg
ICBpZiAoZ0NsaWNrQ291bnQgPT0gMikKLSAgICAgICAgICAgIGZsYWdzIHw9IEVWQVNfQlVUVE9O
X0RPVUJMRV9DTElDSzsKLSAgICAgICAgZWxzZSBpZiAoZ0NsaWNrQ291bnQgPT0gMykKLSAgICAg
ICAgICAgIGZsYWdzIHw9IEVWQVNfQlVUVE9OX1RSSVBMRV9DTElDSzsKLQotICAgICAgICBldmFz
X2V2ZW50X2ZlZWRfbW91c2VfZG93bihldmFzLCBidXR0b25OdW1iZXIsIHN0YXRpY19jYXN0PEV2
YXNfQnV0dG9uX0ZsYWdzPihmbGFncyksIHRpbWVTdGFtcCsrLCAwKTsKLSAgICB9Ci0gICAgaWYg
KGV2ZW50ICYgRXZhc01vdXNlRXZlbnRVcCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNl
X3VwKGV2YXMsIGJ1dHRvbk51bWJlciwgRVZBU19CVVRUT05fTk9ORSwgdGltZVN0YW1wKyssIDAp
OwotCi0gICAgY29uc3QgYm9vbCBob3Jpem9udGFsID0gISEoZXZlbnQgJiBFdmFzTW91c2VFdmVu
dFNjcm9sbExlZnQgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsUmlnaHQpOwotICAgIGNv
bnN0IGJvb2wgdmVydGljYWwgPSAhIShldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXAgfCBl
dmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsRG93bik7Ci0gICAgaWYgKHZlcnRpY2FsICYmIGhv
cml6b250YWwpIHsKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDAs
IChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXApID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwg
MCk7Ci0gICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCAoZXZlbnQg
JiBFdmFzTW91c2VFdmVudFNjcm9sbExlZnQpID8gMTAgOiAtMTAsIHRpbWVTdGFtcCwgMCk7Ci0g
ICAgfSBlbHNlIGlmICh2ZXJ0aWNhbCkKLSAgICAgICAgZXZhc19ldmVudF9mZWVkX21vdXNlX3do
ZWVsKGV2YXMsIDAsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsVXApID8gMTAgOiAtMTAs
IHRpbWVTdGFtcCwgMCk7Ci0gICAgZWxzZSBpZiAoaG9yaXpvbnRhbCkKLSAgICAgICAgZXZhc19l
dmVudF9mZWVkX21vdXNlX3doZWVsKGV2YXMsIDEsIChldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Ny
b2xsTGVmdCkgPyAxMCA6IC0xMCwgdGltZVN0YW1wLCAwKTsKLQotICAgIHNldEV2YXNNb2RpZmll
cnMoZXZhcywgRXZhc0tleU1vZGlmaWVyTm9uZSk7Ci19Ci0KIHN0YXRpYyBFaW5hX0Jvb2wgc2Vu
ZENsaWNrKHZvaWQqKQogewotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0
KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRDbGljaywgRXZhc01vdXNlQnV0
dG9uTGVmdCwgRXZhc0tleU1vZGlmaWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50
SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudENsaWNrLCBFdmFzS2V5TW9k
aWZpZXJOb25lLCBFdmFzTW91c2VCdXR0b25MZWZ0KTsKKyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZl
bnQoZXZlbnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJB
Q0tfQ0FOQ0VMOwogfQogCkBAIC0yNDksOCArMjYwLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91
c2VEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LAogICAgIHVwZGF0ZUNsaWNrQ291bnQoYnV0dG9uKTsKIAogICAgIEV2YXNLZXlNb2RpZmllciBt
b2RpZmllcnMgPSBhcmd1bWVudENvdW50ID49IDIgPyBtb2RpZmllcnNGcm9tSlNWYWx1ZShjb250
ZXh0LCBhcmd1bWVudHNbMV0pIDogRXZhc0tleU1vZGlmaWVyTm9uZTsKLSAgICBzZW5kTW91c2VF
dmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3Vz
ZUV2ZW50RG93biwgYnV0dG9uLCBtb2RpZmllcnMpOwotCisgICAgTW91c2VFdmVudEluZm8qIGV2
ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50SW5mbyhFdmFzTW91c2VFdmVudERvd24sIG1vZGlmaWVy
cywgc3RhdGljX2Nhc3Q8RXZhc01vdXNlQnV0dG9uPihidXR0b24pKTsKKyAgICBmZWVkT3JRdWV1
ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsKICAgICBnQnV0dG9uQ3Vy
cmVudGx5RG93biA9IGJ1dHRvbjsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CkBAIC0yNzEsNyArMjgyLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VVcENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlMKICAg
ICBnQnV0dG9uQ3VycmVudGx5RG93biA9IDA7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZp
ZXJzID0gYXJndW1lbnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwg
YXJndW1lbnRzWzFdKSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgc2VuZE1vdXNlRXZlbnQo
ZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVu
dFVwLCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihidXR0b24pLCBtb2RpZmllcnMpOworICAg
IE1vdXNlRXZlbnRJbmZvKiBldmVudEluZm8gPSBuZXcgTW91c2VFdmVudEluZm8oRXZhc01vdXNl
RXZlbnRVcCwgbW9kaWZpZXJzLCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihidXR0b24pKTsK
KyAgICBmZWVkT3JRdWV1ZU1vdXNlRXZlbnQoZXZlbnRJbmZvLCBGZWVkUXVldWVkRXZlbnRzKTsK
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTI4Nyw3
ICsyOTksMjIgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBpZiAoZXhjZXB0aW9uICYm
ICpleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIAotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1h
aW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnRNb3ZlLCBFdmFzTW91c2VCdXR0b25Ob25lLCBFdmFz
S2V5TW9kaWZpZXJOb25lKTsKKyAgICBNb3VzZUV2ZW50SW5mbyogZXZlbnRJbmZvID0gbmV3IE1v
dXNlRXZlbnRJbmZvKEV2YXNNb3VzZUV2ZW50TW92ZSk7CisgICAgZmVlZE9yUXVldWVNb3VzZUV2
ZW50KGV2ZW50SW5mbywgRG9Ob3RGZWVkUXVldWVkRXZlbnRzKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxlYXBGb3J3
YXJkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1
bWVudENvdW50ID4gMCkgeworICAgICAgICBjb25zdCB1bG9uZyBsZWFwRm9yd2FyZERlbGF5ID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAg
ICAgaWYgKGRlbGF5ZWRFdmVudFF1ZXVlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgZGVsYXll
ZEV2ZW50UXVldWUoKS5hcHBlbmQoRGVsYXllZEV2ZW50KDAsIGxlYXBGb3J3YXJkRGVsYXkpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVsYXllZEV2ZW50UXVldWUoKS5sYXN0KCkuZGVs
YXkgPSBsZWFwRm9yd2FyZERlbGF5OworICAgICAgICBnVGltZU9mZnNldCArPSBsZWFwRm9yd2Fy
ZERlbGF5OworICAgIH0KKwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIApAQCAtMzEzLDE0ICszNDAsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VTY3Jv
bGxCeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIAotICAgIGNvbnN0IGludCBob3Jpem9udGFsID0gc3RhdGljX2Nhc3Q8
aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICAvLyBXZSBuZWVkIHRvIGludmVydCBzY3JvbGxpbmcgdmFsdWVzIHNpbmNlIGluIEVGTCBu
ZWdhdGl2ZSB6IHZhbHVlIG1lYW5zIHRoYXQKKyAgICAvLyBjYW52YXMgaXMgc2Nyb2xsaW5nIGRv
d24KKyAgICBjb25zdCBpbnQgaG9yaXpvbnRhbCA9IC0oc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKSk7CiAgICAgaWYgKGV4
Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Ci0gICAgY29uc3QgaW50IHZlcnRpY2FsID0gc3RhdGljX2Nhc3Q8aW50PihK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBj
b25zdCBpbnQgdmVydGljYWwgPSAtKHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSkpOwogICAgIGlmIChleGNlcHRpb24gJiYg
KmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OwogCi0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFp
bkZyYW1lKCkpLCBldmFzTW91c2VFdmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGljYWxPZmZzZXRz
KGhvcml6b250YWwsIHZlcnRpY2FsKSwgRXZhc01vdXNlQnV0dG9uTm9uZSwgRXZhc0tleU1vZGlm
aWVyTm9uZSk7CisgICAgTW91c2VFdmVudEluZm8qIGV2ZW50SW5mbyA9IG5ldyBNb3VzZUV2ZW50
SW5mbyhldmFzTW91c2VFdmVudEZyb21Ib3Jpem9udGFsQW5kVmVydGljYWxPZmZzZXRzKGhvcml6
b250YWwsIHZlcnRpY2FsKSwgRXZhc0tleU1vZGlmaWVyTm9uZSwgRXZhc01vdXNlQnV0dG9uTm9u
ZSwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworICAgIGZlZWRPclF1ZXVlTW91c2VFdmVudChldmVu
dEluZm8sIEZlZWRRdWV1ZWRFdmVudHMpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KIApAQCAtNTYyLDYgKzU5Miw3IEBAIHN0YXRpYyBKU1N0YXRpY0Z1bmN0
aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlRG93biIsIG1vdXNlRG93bkNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91c2VVcCIsIG1vdXNlVXBDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgIHsgIm1vdXNlTW92ZVRvIiwgbW91c2VNb3ZlVG9DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
IHsgImxlYXBGb3J3YXJkIiwgbGVhcEZvcndhcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgImtl
eURvd24iLCBrZXlEb3duQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJzY2hlZHVsZUFzeW5jaHJv
bm91c0NsaWNrIiwgc2NoZWR1bGVBc3luY2hyb25vdXNDbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgeyAic2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duIiwgc2NoZWR1bGVBc3luY2hyb25vdXNL
ZXlEb3duQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYxNSwzICs2NDYsNjggQEAgSlNPYmplY3RSZWYg
bWFrZUV2ZW50U2VuZGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGlzVG9wRnJhbWUpCiAK
ICAgICByZXR1cm4gSlNPYmplY3RNYWtlKGNvbnRleHQsIGdldENsYXNzKGNvbnRleHQpLCAwKTsK
IH0KKworc3RhdGljIHZvaWQgZmVlZE9yUXVldWVNb3VzZUV2ZW50KE1vdXNlRXZlbnRJbmZvKiBl
dmVudEluZm8sIEV2ZW50UXVldWVTdHJhdGVneSBzdHJhdGVneSkKK3sKKyAgICBpZiAoIWRlbGF5
ZWRFdmVudFF1ZXVlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkZWxheWVkRXZlbnRRdWV1
ZSgpLmxhc3QoKS5ldmVudEluZm8pCisgICAgICAgICAgICBkZWxheWVkRXZlbnRRdWV1ZSgpLmxh
c3QoKS5ldmVudEluZm8gPSBldmVudEluZm87CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRl
bGF5ZWRFdmVudFF1ZXVlKCkuYXBwZW5kKERlbGF5ZWRFdmVudChldmVudEluZm8pKTsKKworICAg
ICAgICBpZiAoc3RyYXRlZ3kgPT0gRmVlZFF1ZXVlZEV2ZW50cykKKyAgICAgICAgICAgIGZlZWRR
dWV1ZWRNb3VzZUV2ZW50cygpOworICAgIH0gZWxzZQorICAgICAgICBmZWVkTW91c2VFdmVudChl
dmVudEluZm8pOworfQorCitzdGF0aWMgdm9pZCBmZWVkTW91c2VFdmVudChNb3VzZUV2ZW50SW5m
byogZXZlbnRJbmZvKQoreworICAgIGlmICghZXZlbnRJbmZvKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCB0aW1lU3RhbXAgPSAwOworICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUg
PSBicm93c2VyLT5tYWluRnJhbWUoKTsKKyAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZh
c19nZXQobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmxheW91dEZy
YW1lKG1haW5GcmFtZSk7CisgICAgRXZhc01vdXNlRXZlbnQgZXZlbnQgPSBldmVudEluZm8tPmV2
ZW50OworCisgICAgc2V0RXZhc01vZGlmaWVycyhldmFzLCBldmVudEluZm8tPm1vZGlmaWVycyk7
CisKKyAgICBFdmFzX0J1dHRvbl9GbGFncyBmbGFncyA9IEVWQVNfQlVUVE9OX05PTkU7CisKKyAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBwYXNzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gd2l0aCBv
dXIgZXZlbnRzLCBzbyB0aGF0CisgICAgLy8gd2UgY291bGQgY29uc3RydWN0IGNvcnJlY3QgUGxh
dGZvcm1XaGVlbEV2ZW50LiBBdCB0aGUgbW9tZW50LCBtYXggbnVtYmVyCisgICAgLy8gb2YgY2xp
Y2tzIGlzIDMKKyAgICBpZiAoZ0NsaWNrQ291bnQgPT0gMykKKyAgICAgICAgZmxhZ3MgPSBFVkFT
X0JVVFRPTl9UUklQTEVfQ0xJQ0s7CisgICAgZWxzZSBpZiAoZ0NsaWNrQ291bnQgPT0gMikKKyAg
ICAgICAgZmxhZ3MgPSBFVkFTX0JVVFRPTl9ET1VCTEVfQ0xJQ0s7CisKKyAgICBpZiAoZXZlbnQg
JiBFdmFzTW91c2VFdmVudE1vdmUpCisgICAgICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9tb3Zl
KGV2YXMsIGdMYXN0TW91c2VQb3NpdGlvblgsIGdMYXN0TW91c2VQb3NpdGlvblksIHRpbWVTdGFt
cCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudERvd24pCisgICAgICAgIGV2
YXNfZXZlbnRfZmVlZF9tb3VzZV9kb3duKGV2YXMsIGV2ZW50SW5mby0+YnV0dG9uLCBmbGFncywg
dGltZVN0YW1wKyssIDApOworICAgIGlmIChldmVudCAmIEV2YXNNb3VzZUV2ZW50VXApCisgICAg
ICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV91cChldmFzLCBldmVudEluZm8tPmJ1dHRvbiwgZmxh
Z3MsIHRpbWVTdGFtcCsrLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9s
bExlZnQgfCBldmVudCAmIEV2YXNNb3VzZUV2ZW50U2Nyb2xsUmlnaHQpCisgICAgICAgIGV2YXNf
ZXZlbnRfZmVlZF9tb3VzZV93aGVlbChldmFzLCAxLCBldmVudEluZm8tPmhvcml6b250YWxEZWx0
YSwgdGltZVN0YW1wLCAwKTsKKyAgICBpZiAoZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbFVw
IHwgZXZlbnQgJiBFdmFzTW91c2VFdmVudFNjcm9sbERvd24pCisgICAgICAgIGV2YXNfZXZlbnRf
ZmVlZF9tb3VzZV93aGVlbChldmFzLCAwLCBldmVudEluZm8tPnZlcnRpY2FsRGVsdGEsIHRpbWVT
dGFtcCwgMCk7CisKKyAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIEV2YXNLZXlNb2RpZmllck5v
bmUpOworCisgICAgZGVsZXRlIGV2ZW50SW5mbzsKK30KKworc3RhdGljIHZvaWQgZmVlZFF1ZXVl
ZE1vdXNlRXZlbnRzKCkKK3sKKyAgICBXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGRlbGF5ZWRFdmVudFF1ZXVlKCkuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQg
IT0gZGVsYXllZEV2ZW50UXVldWUoKS5lbmQoKTsgaXQrKykgeworICAgICAgICBEZWxheWVkRXZl
bnQgZGVsYXllZEV2ZW50ID0gKml0OworICAgICAgICBpZiAoZGVsYXllZEV2ZW50LmRlbGF5KQor
ICAgICAgICAgICAgdXNsZWVwKGRlbGF5ZWRFdmVudC5kZWxheSAqIDEwMDApOworICAgICAgICBm
ZWVkTW91c2VFdmVudChkZWxheWVkRXZlbnQuZXZlbnRJbmZvKTsKKyAgICB9CisgICAgZGVsYXll
ZEV2ZW50UXVldWUoKS5jbGVhcigpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>