<?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>146290</bug_id>
          
          <creation_ts>2015-06-24 14:45:27 -0700</creation_ts>
          <short_desc>[iOS] Hardware Keyboard: All combinations of arrow keys and space key do not scroll the view.</short_desc>
          <delta_ts>2015-06-29 10:48:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104487</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-24 14:45:27 -0700</bug_when>
    <thetext>We should support on iOS with HW keyboard the same behavior we have on OS X where it is possible to scroll by line/page using the arrow keys combinations as well as the space key.

rdar://problem/18466015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104515</commentid>
    <comment_count>1</comment_count>
      <attachid>255519</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-24 15:44:10 -0700</bug_when>
    <thetext>Created attachment 255519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104523</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-24 15:46:58 -0700</bug_when>
    <thetext>Attachment 255519 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:70:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2150:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2172:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2173:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2175:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2178:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2608:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2610:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2611:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2612:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2613:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2686:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 32 in 5 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>1104526</commentid>
    <comment_count>3</comment_count>
      <attachid>255519</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-24 15:54:18 -0700</bug_when>
    <thetext>Comment on attachment 255519
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1205
&gt; +    [_contentView willStartZoomOrScroll];
&gt; +    
&gt; +    CGPoint boundedOffset = contentOffsetBoundedInValidRange(_scrollView.get(), currentOffset + offset);
&gt; +    
&gt; +    if (!CGPointEqualToPoint(boundedOffset, currentOffset))
&gt; +        [_scrollView setContentOffset:boundedOffset animated:YES];

You should only call -willStartZoomOrScroll if you call setContentOffset:boundedOffset:

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2179
&gt; +    return @[[UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputLeftArrow modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputRightArrow modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow modifierFlags:UIKeyModifierCommand action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow modifierFlags:UIKeyModifierCommand action:@selector(_arrowKey:)],
&gt; +             
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow modifierFlags:UIKeyModifierShift action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow modifierFlags:UIKeyModifierShift action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputLeftArrow modifierFlags:UIKeyModifierShift action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputRightArrow modifierFlags:UIKeyModifierShift action:@selector(_arrowKey:)],
&gt; +
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow modifierFlags:UIKeyModifierAlternate action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow modifierFlags:UIKeyModifierAlternate action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputLeftArrow modifierFlags:UIKeyModifierAlternate action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputRightArrow modifierFlags:UIKeyModifierAlternate action:@selector(_arrowKey:)],
&gt; +             
&gt; +             [UIKeyCommand keyCommandWithInput:@&quot; &quot; modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:@&quot; &quot; modifierFlags:UIKeyModifierShift action:@selector(_arrowKey:)],
&gt; +
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputPageDown modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +             [UIKeyCommand keyCommandWithInput:UIKeyInputPageDown modifierFlags:0 action:@selector(_arrowKey:)],
&gt; +
&gt; +             [UIKeyCommand keyCommandWithInput:@&quot;\t&quot; modifierFlags:0 action:@selector(_nextAccessoryTab:)],
&gt;               [UIKeyCommand keyCommandWithInput:@&quot;\t&quot; modifierFlags:UIKeyModifierShift action:@selector(_prevAccessoryTab:)]];

Can this be a static NSArray*?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2585
&gt; +    // If this is not an event from the HW keyboard or if we are entering text in an input element

Please spell out hardware.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2680
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputLeftArrow]) {
&gt; +        [_webView _scrollByOffset:FloatPoint(-Scrollbar::pixelsPerLineStep(), 0)];
&gt; +        return YES;
&gt; +    }
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputUpArrow]) {
&gt; +        if (option)
&gt; +            [_webView _scrollByOffset:FloatPoint(0, -_page-&gt;unobscuredContentRect().height())];
&gt; +        else
&gt; +            [_webView _scrollByOffset:FloatPoint(0, command ? -[self bounds].size.height : -Scrollbar::pixelsPerLineStep())];
&gt; +        return YES;
&gt; +    }
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputRightArrow]) {
&gt; +        [_webView _scrollByOffset:FloatPoint(Scrollbar::pixelsPerLineStep(), 0)];
&gt; +        return YES;
&gt; +    }
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputDownArrow]) {
&gt; +        if (option)
&gt; +            [_webView _scrollByOffset:FloatPoint(0, _page-&gt;unobscuredContentRect().height())];
&gt; +        else
&gt; +            [_webView _scrollByOffset:FloatPoint(0, command ? [self bounds].size.height : Scrollbar::pixelsPerLineStep())];
&gt; +        return YES;
&gt; +    }
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputPageDown]) {
&gt; +        [_webView _scrollByOffset:FloatPoint(0, _page-&gt;unobscuredContentRect().height())];
&gt; +        return YES;
&gt; +    }
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputPageUp]) {
&gt; +        [_webView _scrollByOffset:FloatPoint(0, -_page-&gt;unobscuredContentRect().height())];
&gt; +        return YES;

Can we just fetch charactersIgnoringModifiers once, and compute a FloatPoint, then call _scrollByOffset: in just one place?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2686
&gt; +    if ([characters length] == 0)

if (![characters length]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104531</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-24 16:28:21 -0700</bug_when>
    <thetext>I&apos;ll address your comments in a new patch. This one also doesn&apos;t build with the public SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104721</commentid>
    <comment_count>5</comment_count>
      <attachid>255572</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-25 14:31:48 -0700</bug_when>
    <thetext>Created attachment 255572
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104722</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 14:33:21 -0700</bug_when>
    <thetext>Attachment 255572 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1429:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2154:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2166:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2172:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2173:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2174:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2175:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2180:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2181:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2602:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2604:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2606:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Platform/spi/ios/UIKitSPI.h:125:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/Platform/spi/ios/UIKitSPI.h:131:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 36 in 5 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>1104739</commentid>
    <comment_count>7</comment_count>
      <attachid>255579</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-25 15:09:30 -0700</bug_when>
    <thetext>Created attachment 255579
Patch3

Trying to fix the iOS EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104740</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 15:10:46 -0700</bug_when>
    <thetext>Attachment 255579 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1429:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2154:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2166:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2172:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2173:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2174:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2175:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2180:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2181:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2602:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2604:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2606:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/Platform/spi/ios/UIKitSPI.h:125:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 35 in 5 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>1104792</commentid>
    <comment_count>9</comment_count>
      <attachid>255596</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-25 16:47:10 -0700</bug_when>
    <thetext>Created attachment 255596
Patch4

Hopefully the last build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104794</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 16:48:37 -0700</bug_when>
    <thetext>Attachment 255596 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1429:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2154:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2166:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2172:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2173:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2174:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2175:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2180:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2181:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2602:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2604:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2606:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 34 in 5 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>1105207</commentid>
    <comment_count>11</comment_count>
      <attachid>255596</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-27 14:46:25 -0700</bug_when>
    <thetext>Comment on attachment 255596
Patch4

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1207
&gt; +    if (!CGPointEqualToPoint(boundedOffset, currentOffset)) {
&gt; +        [_contentView willStartZoomOrScroll];
&gt; +        [_scrollView setContentOffset:boundedOffset animated:YES];
&gt; +    }

I like early return for this kind of thing.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2659
&gt; +               scrollOffset.setX(Scrollbar::pixelsPerLineStep());

Incorrect indentation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105420</commentid>
    <comment_count>12</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-06-29 10:48:58 -0700</bug_when>
    <thetext>Committed revision 186073.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255519</attachid>
            <date>2015-06-24 15:44:10 -0700</date>
            <delta_ts>2015-06-25 14:31:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>hwkeyboardscroll.txt</filename>
            <type>text/plain</type>
            <size>18940</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTkzMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA2LTI0ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSGFyZHdhcmUgS2V5
Ym9hcmQ6IEFsbCBjb21iaW5hdGlvbnMgb2YgYXJyb3cga2V5cyBhbmQgc3BhY2Uga2V5IGRvIG5v
dCBzY3JvbGwgdGhlIHZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYyOTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMTg0NjYwMTUKKworICAg
ICAgICBXZSBkb24ndCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBrZXlib2FyZCB0byBoYW5k
bGUgdGhlIGV2ZW50IGlmIHdlIGFyZSBub3QKKyAgICAgICAgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0
YWJsZSBjb250ZW50LiBJbiBvcmRlciB0byByZWNlaXZlIGFsbCB0aGUgaGFyZHdhcmUga2V5Ym9h
cmQgZXZlbnRzCisgICAgICAgIHdlIG5lZWQgdG8gaW1wbGVtZW50IF9oYW5kbGVLZXlVSUV2ZW50
IHdoaWNoIGlzIGNhbGxlZCBmb3IgZXZlcnkga2V5IGV2ZW50CisgICAgICAgIHdoZW4gdGhlIHZp
ZXcgaXMgZmlyc3QgcmVzcG9uZGVyLiBUaGlzIGdpdmVzIHVzIHRoZSBvcHBvcnR1bml0eSB0byBz
ZW5kIGVhY2gga2V5c3Ryb2tlCisgICAgICAgIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGxldCBhbnkg
SmF2YXNjcmlwdCBoYW5kbGVyIGludGVyY2VwdCBpdCBhbmQgdGhlbiBwZXJmb3JtIHRoZSBkZWZh
dWx0CisgICAgICAgIGFjdGlvbiBmb3IgdGhlIGtleSBjb21iaW5hdGlvbi4KKyAgICAgICAgVW5m
b3J0dW5hdGVseSB0aGlzIG1lY2hhbmlzbSBkb2VzIG5vdCBwcm92aWRlIGtleSByZXBlYXQsIHdo
aWNoIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICBrZXlib2FyZCBsYXllci4gSW4gb3Jk
ZXIgdG8gaGF2ZSBpdCBhdCBsZWFzdCBmb3IgdGhlIGFycm93IGtleXMsIHdlIHVzZSB0aGUga2V5
Q29tbWFuZHMKKyAgICAgICAgbWVjaGFuaXNtIG9ubHkgZm9yIHRob3NlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbFRvUmVjdDpvcmlnaW46bWluaW11bVNjcm9sbERp
c3RhbmNlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0Ol0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3pvb21PdXRXaXRoT3JpZ2luOmFuaW1hdGVkOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBrZXlDb21tYW5kc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcnJv
d0tleTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1aXJlc0tleUV2ZW50c10pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVLZXlVSUV2ZW50Ol0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGhhbmRsZUtleUV2ZW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9pbnRlcnByZXRLZXlFdmVudDppc0NoYXJFdmVudDpdKToKKwogMjAxNS0wNi0yNCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFTZXNzaW9uOiBwcm9w
YWdhdGUgTWVkaWFTZXNzaW9uTWV0YWRhdGEgdG8gV2ViUGFnZVByb3h5CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lvbiAxODU5MjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGlja2VyQ29udGVudFZpZXdf
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3X1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJUHJlc2VudGF0aW9uQ29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxV
SUtpdC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdf
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1ByaXZhdGUuaD4KICNp
bXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRlLmg+CkBAIC0xMjksNiArMTMwLDEw
IEBAIHR5cGVkZWYgZW51bSB7CiAtIChpZClpbml0V2l0aENHSW1hZ2U6KENHSW1hZ2VSZWYpQ0dJ
bWFnZSBpbWFnZU9yaWVudGF0aW9uOihVSUltYWdlT3JpZW50YXRpb24paW1hZ2VPcmllbnRhdGlv
bjsKIEBlbmQKIAorQGludGVyZmFjZSBVSUtleUNvbW1hbmQgKERldGFpbHMpCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRXZlbnQgKl90cmlnZ2VyaW5nRXZlbnQ7CitAZW5kCisK
IEBwcm90b2NvbCBVSUtleWJvYXJkSW1wbEdlb21ldHJ5RGVsZWdhdGUKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkd3JpdGUsIGdldHRlcj1pc01pbmltaXplZCkgQk9PTCBtaW5pbWl6ZWQ7CiAt
ICh2b2lkKXByZXBhcmVGb3JJbXBsQm91bmRzSGVpZ2h0Q2hhbmdlOihDR0Zsb2F0KWVuZERlbHRh
IHN1cHByZXNzTm90aWZpY2F0aW9uOihCT09MKXN1cHByZXNzTm90aWZpY2F0aW9uOwpAQCAtMjE2
LDYgKzIyMSwxMCBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0TWFnbmlmaWVyRW5hYmxlZDopIEJPT0wgX21hZ25pZmllckVuYWJsZWQ7CiBAZW5kCiAK
K0BpbnRlcmZhY2UgVUlSZXNwb25kZXIgKERldGFpbHMpCistICh2b2lkKV9oYW5kbGVLZXlVSUV2
ZW50OihVSUV2ZW50ICopZXZlbnQ7CitAZW5kCisKIEBpbnRlcmZhY2UgVUlTY3JvbGxWaWV3IChE
ZXRhaWxzKQogLSAodm9pZClfc3RvcFNjcm9sbGluZ0FuZFpvb21pbmdBbmltYXRpb25zOwogLSAo
dm9pZClfem9vbVRvQ2VudGVyOihDR1BvaW50KWNlbnRlciBzY2FsZTooQ0dGbG9hdClzY2FsZSBk
dXJhdGlvbjooQ0ZUaW1lSW50ZXJ2YWwpZHVyYXRpb24gZm9yY2U6KEJPT0wpZm9yY2U7CkBAIC03
NDIsNCArNzUxLDcgQEAgZXh0ZXJuIGNvbnN0IGZsb2F0IFVJV2ViVmlld0dyb3dzQW5kU2hyaQog
ZXh0ZXJuIGNvbnN0IGZsb2F0IFVJV2ViVmlld1NjYWxlc1RvRml0U2NhbGU7CiBleHRlcm4gY29u
c3QgZmxvYXQgVUlXZWJWaWV3U3RhbmRhcmRWaWV3cG9ydFdpZHRoOwogCitleHRlcm4gTlNTdHJp
bmcgKmNvbnN0IFVJS2V5SW5wdXRQYWdlVXA7CitleHRlcm4gTlNTdHJpbmcgKmNvbnN0IFVJS2V5
SW5wdXRQYWdlRG93bjsKKwogV1RGX0VYVEVSTl9DX0VORApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE4NTkyNSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgQGludGVyZmFjZSBVSVNjcm9sbFZpZXcgKFVJ
U2Nyb2xsVmlld0ludAogLSAodm9pZClfYWRqdXN0Rm9yQXV0b21hdGljS2V5Ym9hcmRJbmZvOihO
U0RpY3Rpb25hcnkqKWluZm8gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgbGFzdEFkanVzdG1lbnQ6
KENHRmxvYXQqKWxhc3RBZGp1c3RtZW50OwogLSAoQk9PTClfaXNTY3JvbGxpbmdUb1RvcDsKIC0g
KEJPT0wpX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uOworLSAoQ0dQb2ludClfYW5pbWF0ZWRU
YXJnZXRPZmZzZXQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlQZXJpcGhlcmFsSG9zdChVSUtpdElu
dGVybmFsKQpAQCAtMTE5Miw2ICsxMTkzLDE4IEBAIC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2Vi
Q29yZTo6RmxvYXRSZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLSAodm9pZClfc2Nyb2xsQnlP
ZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zmc2V0Cit7CisgICAgQ0dQb2ludCBjdXJyZW50
T2Zmc2V0ID0gKFtfc2Nyb2xsVmlldyBfaXNBbmltYXRpbmdTY3JvbGxdKSA/IFtfc2Nyb2xsVmll
dyBfYW5pbWF0ZWRUYXJnZXRPZmZzZXRdIDogW19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdOwor
CisgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRab29tT3JTY3JvbGxdOworICAgIAorICAgIENH
UG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKF9z
Y3JvbGxWaWV3LmdldCgpLCBjdXJyZW50T2Zmc2V0ICsgb2Zmc2V0KTsKKyAgICAKKyAgICBpZiAo
IUNHUG9pbnRFcXVhbFRvUG9pbnQoYm91bmRlZE9mZnNldCwgY3VycmVudE9mZnNldCkpCisgICAg
ICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmJvdW5kZWRPZmZzZXQgYW5pbWF0ZWQ6
WUVTXTsKK30KKwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9p
bnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkCiB7CiAgICAgW3NlbGYgX3pvb21Ub1Bv
aW50Om9yaWdpbiBhdFNjYWxlOltfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSBhbmltYXRl
ZDphbmltYXRlZF07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxODU5MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IFByaW50SW5mbzsKIAogLSAodm9pZClf
c2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXQ7
CiAtIChCT09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9y
aWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihm
bG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CistICh2b2lkKV9zY3JvbGxCeU9mZnNldDooV2Vi
Q29yZTo6RmxvYXRQb2ludClvZmZzZXQ7CiAtICh2b2lkKV96b29tVG9Gb2N1c1JlY3Q6KFdlYkNv
cmU6OkZsb2F0UmVjdClmb2N1c2VkRWxlbWVudFJlY3Qgc2VsZWN0aW9uUmVjdDooV2ViQ29yZTo6
RmxvYXRSZWN0KXNlbGVjdGlvblJlY3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMgZm9udFNpemU6KGZs
b2F0KWZvbnRTaXplIG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2Nh
bGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgYWxsb3dTY2FsaW5nOihCT09MKWFsbG93U2NhbGluZyBm
b3JjZVNjcm9sbDooQk9PTClmb3JjZVNjcm9sbDsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNv
cmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQp
b3JpZ2luIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRv
dWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmlt
dW1TY3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClf
em9vbU91dFdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihC
T09MKWFuaW1hdGVkOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE4NTkyNSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTksMTcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29y
ZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91
bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMhCiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2VJT1MuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorQGludGVyZmFjZSBVSUV2
ZW50KFVJRXZlbnRJbnRlcm5hbCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLGFzc2lnbikgVUlLZXli
b2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CitAZW5kCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMjE0MiwxMCArMjE0Nyw0NCBAQCAt
ICh2b2lkKWFjY2Vzc29yeURvbmUKIAogLSAoTlNBcnJheSAqKWtleUNvbW1hbmRzCiB7Ci0gICAg
cmV0dXJuIEBbW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVy
RmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOildLAorICAgIGlmIChf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkKKyAgICAgICAgcmV0dXJuIEBb
W1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6MCBh
Y3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOildLAorICAgICAgICAgICAgICAgICBb
VUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczpVSUtl
eU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJldkFjY2Vzc29yeVRhYjopXV07Cisg
ICAgCisgICAgcmV0dXJuIEBbW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5
SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTop
XSwKKyAgICAgICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJ
bnB1dERvd25BcnJvdyBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6
KV0sCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5
SW5wdXRMZWZ0QXJyb3cgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5
OildLAorICAgICAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtl
eUlucHV0UmlnaHRBcnJvdyBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dL
ZXk6KV0sCisgICAgICAgICAgICAgCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21t
YW5kV2l0aElucHV0OlVJS2V5SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmll
ckNvbW1hbmQgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgICAgICAgW1VJ
S2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXREb3duQXJyb3cgbW9kaWZp
ZXJGbGFnczpVSUtleU1vZGlmaWVyQ29tbWFuZCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTop
XSwKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRX
aXRoSW5wdXQ6VUlLZXlJbnB1dFVwQXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hp
ZnQgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgICAgICAgW1VJS2V5Q29t
bWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXREb3duQXJyb3cgbW9kaWZpZXJGbGFn
czpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAg
ICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRMZWZ0
QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3Rvcihf
YXJyb3dLZXk6KV0sCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElu
cHV0OlVJS2V5SW5wdXRSaWdodEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0
IGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAorCisgICAgICAgICAgICAgW1VJS2V5Q29t
bWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6
VUlLZXlNb2RpZmllckFsdGVybmF0ZSBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAg
ICAgICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERv
d25BcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0aW9uOkBzZWxl
Y3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5k
V2l0aElucHV0OlVJS2V5SW5wdXRMZWZ0QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVy
QWx0ZXJuYXRlIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgICAgICAgIFtV
SUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtleUlucHV0UmlnaHRBcnJvdyBtb2Rp
ZmllckZsYWdzOlVJS2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dL
ZXk6KV0sCisgICAgICAgICAgICAgCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21t
YW5kV2l0aElucHV0OkAiICIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93
S2V5OildLAorICAgICAgICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpA
IiAiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3IoX2Fy
cm93S2V5OildLAorCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElu
cHV0OlVJS2V5SW5wdXRQYWdlRG93biBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3Rvcihf
YXJyb3dLZXk6KV0sCisgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElu
cHV0OlVJS2V5SW5wdXRQYWdlRG93biBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3Rvcihf
YXJyb3dLZXk6KV0sCisKKyAgICAgICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRo
SW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3Nv
cnlUYWI6KV0sCiAgICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3Io
X3ByZXZBY2Nlc3NvcnlUYWI6KV1dOwogfQogCistICh2b2lkKV9hcnJvd0tleTooaWQpc2VuZGVy
Cit7CisgICAgVUlLZXlDb21tYW5kKiBjb21tYW5kID0gc2VuZGVyOworICAgIFtzZWxmIGhhbmRs
ZUtleUV2ZW50OmNvbW1hbmQuX3RyaWdnZXJpbmdFdmVudF07Cit9CisKIC0gKHZvaWQpX25leHRB
Y2Nlc3NvcnlUYWI6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIGFjY2Vzc29yeVRhYjpZRVNdOwpA
QCAtMjU0MSw2ICsyNTgwLDQyIEBAIC0gKEJPT0wpcmVxdWlyZXNLZXlFdmVudHMKICAgICByZXR1
cm4gWUVTOwogfQogCistICh2b2lkKV9oYW5kbGVLZXlVSUV2ZW50Oig6OlVJRXZlbnQgKilldmVu
dAoreworICAgIC8vIElmIHRoaXMgaXMgbm90IGFuIGV2ZW50IGZyb20gdGhlIEhXIGtleWJvYXJk
IG9yIGlmIHdlIGFyZSBlbnRlcmluZyB0ZXh0IGluIGFuIGlucHV0IGVsZW1lbnQKKyAgICAvLyB3
ZSB3YW50IHRvIGxldCBrZXlib2FyZCBoYW5kbGUgaXQuCisgICAgaWYgKCFldmVudC5faGlkRXZl
bnQgfHwgX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAgICAg
W3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIFRoZSBzYW1lIGlzIGFsc28gdHJ1ZSBmb3IgdGhlIGFycm93IGtleXMgd2hlbiB3
ZSBhcmUgbm90IGluIGVkaXRhYmxlIGNvbnRlbnQsIHNpbmNlIHdlIGFyZSBoYW5kbGluZyB0aG9z
ZQorICAgIC8vIHZpYSB0aGUga2V5Y29tbWFuZHMgbWVjaGFuaXNtLgorICAgIGlmIChbZXZlbnQu
X3VubW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dExlZnRBcnJvd10gfHwg
W2V2ZW50Ll91bm1vZGlmaWVkSW5wdXQgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRVcEFycm93
XQorICAgICAgICB8fCBbZXZlbnQuX3VubW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlL
ZXlJbnB1dFJpZ2h0QXJyb3ddIHx8IFtldmVudC5fdW5tb2RpZmllZElucHV0IGlzRXF1YWxUb1N0
cmluZzpVSUtleUlucHV0RG93bkFycm93XQorICAgICAgICB8fCBbZXZlbnQuX3VubW9kaWZpZWRJ
bnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VEb3duXSB8fCBbZXZlbnQuX3VubW9k
aWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VVcF0pIHsKKyAgICAgICAg
W3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFtzZWxmIGhhbmRsZUtleUV2ZW50OmV2ZW50XTsKK30KKworLSAodm9pZCloYW5kbGVL
ZXlFdmVudDooOjpVSUV2ZW50ICopZXZlbnQKK3sKKyAgICA6OldlYkV2ZW50ICp3ZWJFdmVudCA9
IFtbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlE
b3duKSA/IFdlYkV2ZW50S2V5RG93biA6IFdlYkV2ZW50S2V5VXAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wOmV2ZW50
LnRpbWVzdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnQuX21vZGlmaWVkSW5wdXQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmV2ZW50Ll91bm1vZGlmaWVkSW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOmV2ZW50Ll9tb2RpZmllckZsYWdz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc1JlcGVhdGluZzooZXZlbnQuX2lucHV0RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0UmVwZWF0
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aXRoRmxhZ3M6ZXZlbnQuX2lucHV0RmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOjAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGFi
S2V5OltldmVudC5fbW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
clNldDpXZWJFdmVudENoYXJhY3RlclNldFVuaWNvZGVdIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAg
ICBbc2VsZiBoYW5kbGVLZXlXZWJFdmVudDp3ZWJFdmVudF07ICAgIAorfQogLSAodm9pZCloYW5k
bGVLZXlXZWJFdmVudDooV2ViSU9TRXZlbnQgKil0aGVFdmVudAogewogICAgIF9wYWdlLT5oYW5k
bGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKQEAgLTI1
NjMsODggKzI2MzgsOTUgQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KFdlYklPU0V2ZW50
IAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViQmFja3NwYWNlS2V5ID0gMHgwMDA4Owog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViUmV0dXJuS2V5ID0gMHgwMDBEOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRGVsZXRlS2V5ID0gMHgwMDdGOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBrV2ViTGVmdEFycm93S2V5ID0gMHgwMEFDOwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBrV2ViVXBBcnJvd0tleSA9IDB4MDBBRDsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQga1dlYlJpZ2h0QXJyb3dLZXkgPSAweDAwQUU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGtXZWJEb3duQXJyb3dLZXkgPSAweDAwQUY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGtXZWJEZWxldGVGb3J3YXJkS2V5ID0gMHhGNzI4OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCiAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5p
c0NvbnRlbnRFZGl0YWJsZSAmJiBldmVudC5pc1RhYktleSkKICAgICAgICAgcmV0dXJuIE5POwog
CiAgICAgQk9PTCBzaGlmdCA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNr
U2hpZnQ7CisgICAgQk9PTCBjb21tYW5kID0gZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50
RmxhZ01hc2tDb21tYW5kOworICAgIEJPT0wgb3B0aW9uID0gZXZlbnQubW9kaWZpZXJGbGFncyAm
IFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGU7CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwogCi0g
ICAgc3dpdGNoIChldmVudC5jaGFyYWN0ZXJTZXQpIHsKLSAgICBjYXNlIFdlYkV2ZW50Q2hhcmFj
dGVyU2V0U3ltYm9sOiB7Ci0gICAgICAgIFN0cmluZyBjb21tYW5kOwotICAgICAgICBOU1N0cmlu
ZyAqY2hhcmFjdGVycyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAg
ICAgICBpZiAoW2NoYXJhY3RlcnMgbGVuZ3RoXSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIHN3aXRjaCAoW2NoYXJhY3RlcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAg
ICBjYXNlIGtXZWJMZWZ0QXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBB
U0NJSUxpdGVyYWwoIm1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAgQVNDSUlMaXRlcmFs
KCJtb3ZlTGVmdCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBrV2ViVXBB
cnJvd0tleToKLSAgICAgICAgICAgIGNvbW1hbmQgPSBzaGlmdCA/IEFTQ0lJTGl0ZXJhbCgibW92
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAgQVNDSUlMaXRlcmFsKCJtb3ZlVXAiKTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1
YWxUb1N0cmluZzpVSUtleUlucHV0TGVmdEFycm93XSkgeworICAgICAgICBbX3dlYlZpZXcgX3Nj
cm9sbEJ5T2Zmc2V0OkZsb2F0UG9pbnQoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwg
MCldOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICBpZiAoW2NoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKSB7CisgICAg
ICAgIGlmIChvcHRpb24pCisgICAgICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0OkZs
b2F0UG9pbnQoMCwgLV9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSldOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0OkZsb2F0
UG9pbnQoMCwgY29tbWFuZCA/IC1bc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IDogLVNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSldOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAg
ICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJ
bnB1dFJpZ2h0QXJyb3ddKSB7CisgICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6Rmxv
YXRQb2ludChTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIDApXTsKKyAgICAgICAgcmV0
dXJuIFlFUzsKKyAgICB9CisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNF
cXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3duQXJyb3ddKSB7CisgICAgICAgIGlmIChvcHRpb24p
CisgICAgICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0OkZsb2F0UG9pbnQoMCwgX3Bh
Z2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKV07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6RmxvYXRQb2ludCgwLCBjb21tYW5k
ID8gW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCA6IFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSldOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICBpZiAoW2NoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VEb3duXSkgewor
ICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0OkZsb2F0UG9pbnQoMCwgX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKV07CisgICAgICAgIHJldHVybiBZRVM7Cisg
ICAgfQorICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmlu
ZzpVSUtleUlucHV0UGFnZVVwXSkgeworICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0
OkZsb2F0UG9pbnQoMCwgLV9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSld
OworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICAKKyAgICBVSUtleWJvYXJkSW1wbCAq
a2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdOworICAgIE5TU3RyaW5n
ICpjaGFyYWN0ZXJzID0gW2V2ZW50IGNoYXJhY3RlcnNdOworICAgIAorICAgIGlmIChbY2hhcmFj
dGVycyBsZW5ndGhdID09IDApCisgICAgICAgIHJldHVybiBOTzsKIAotICAgICAgICBjYXNlIGtX
ZWJSaWdodEFycm93S2V5OgotICAgICAgICAgICAgY29tbWFuZCA9IHNoaWZ0ID8gQVNDSUlMaXRl
cmFsKCJtb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iKSA6ICBBU0NJSUxpdGVyYWwoIm1vdmVS
aWdodCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgc3dpdGNoIChbY2hhcmFjdGVycyBjaGFy
YWN0ZXJBdEluZGV4OjBdKSB7CisgICAgY2FzZSBrV2ViQmFja3NwYWNlS2V5OgorICAgIGNhc2Ug
a1dlYkRlbGV0ZUtleToKKyAgICAgICAgLy8gRklYTUU6IHJlbW92ZSBkZWxldGVGcm9tSW5wdXQg
b25jZSBVSUtpdCBhZG9wdHMgZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzCisgICAgICAgIGlmIChb
a2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkZWxldGVGcm9tSW5wdXRXaXRo
RmxhZ3M6KV0pCisgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdz
OmV2ZW50LmtleWJvYXJkRmxhZ3NdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBba2V5Ym9h
cmQgZGVsZXRlRnJvbUlucHV0XTsKKyAgICAgICAgcmV0dXJuIFlFUzsKIAotICAgICAgICBjYXNl
IGtXZWJEb3duQXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBBU0NJSUxp
dGVyYWwoIm1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAgQVNDSUlMaXRlcmFsKCJtb3Zl
RG93biIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV2ViU3BhY2VLZXk6CisgICAg
ICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAg
ICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6RmxvYXRQb2ludCgwLCBzaGlmdCA/IC1f
cGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkgOiBfcGFnZS0+dW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpXTsKKyAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCFjb21tYW5kLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgX3Bh
Z2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kKTsKKyAgICAgICAgaWYgKGlzQ2hhckV2ZW50
KSB7CisgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVy
cyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CiAgICAgICAgICAgICByZXR1cm4gWUVT
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFdlYkV2ZW50Q2hh
cmFjdGVyU2V0QVNDSUk6Ci0gICAgY2FzZSBXZWJFdmVudENoYXJhY3RlclNldFVuaWNvZGU6IHsK
LSAgICAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBbZXZlbnQgY2hhcmFjdGVyc107Ci0gICAg
ICAgIGlmIChbY2hhcmFjdGVycyBsZW5ndGhdID09IDApCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgVUlLZXlib2FyZEltcGwgKmtleWJvYXJkID0gW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZElu
c3RhbmNlXTsKLSAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVycyBjaGFyYWN0ZXJBdEluZGV4OjBd
KSB7Ci0gICAgICAgIGNhc2Uga1dlYkJhY2tzcGFjZUtleToKLSAgICAgICAgY2FzZSBrV2ViRGVs
ZXRlS2V5OgotICAgICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSBkZWxldGVGcm9tSW5wdXQgb25j
ZSBVSUtpdCBhZG9wdHMgZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzCi0gICAgICAgICAgICBpZiAo
W2tleWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGVsZXRlRnJvbUlucHV0V2l0
aEZsYWdzOildKQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRXaXRo
RmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dF07CisKKyAgICBjYXNlIGtXZWJFbnRlcktl
eToKKyAgICBjYXNlIGtXZWJSZXR1cm5LZXk6CisgICAgICAgIGlmIChpc0NoYXJFdmVudCkgewor
ICAgICAgICAgICAgLy8gTWFwIFxyIGZyb20gSFcga2V5Ym9hcmQgdG8gXG4gdG8gbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIHRoZSBzb2Z0IGtleWJvYXJkLgorICAgICAgICAgICAgW2tleWJvYXJkIGFk
ZElucHV0U3RyaW5nOkAiXG4iIHdpdGhGbGFnczowXTsKICAgICAgICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBrV2ViRW50ZXJLZXk6
Ci0gICAgICAgIGNhc2Uga1dlYlJldHVybktleToKLSAgICAgICAgICAgIGlmIChpc0NoYXJFdmVu
dCkgewotICAgICAgICAgICAgICAgIC8vIE1hcCBcciBmcm9tIEhXIGtleWJvYXJkIHRvIFxuIHRv
IG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgc29mdCBrZXlib2FyZC4KLSAgICAgICAgICAgICAg
ICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6QCJcbiIgd2l0aEZsYWdzOjBdOwotICAgICAgICAg
ICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTk87
CisgICAgY2FzZSBrV2ViRGVsZXRlRm9yd2FyZEtleToKKyAgICAgICAgX3BhZ2UtPmV4ZWN1dGVF
ZGl0Q29tbWFuZChBU0NJSUxpdGVyYWwoImRlbGV0ZUZvcndhcmQiKSk7CisgICAgICAgIHJldHVy
biBZRVM7CiAKLSAgICAgICAgY2FzZSBrV2ViRGVsZXRlRm9yd2FyZEtleToKLSAgICAgICAgICAg
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoQVNDSUlMaXRlcmFsKCJkZWxldGVGb3J3YXJkIikp
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChpc0NoYXJFdmVudCkgeworICAgICAgICAgICAg
W2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3RlcnMgd2l0aEZsYWdzOmV2ZW50
LmtleWJvYXJkRmxhZ3NdOwogICAgICAgICAgICAgcmV0dXJuIFlFUzsKLQotICAgICAgICBkZWZh
dWx0OiB7Ci0gICAgICAgICAgICBpZiAoaXNDaGFyRXZlbnQpIHsKLSAgICAgICAgICAgICAgICBb
a2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQu
a2V5Ym9hcmRGbGFnc107Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgfQotICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9CiAKICAg
ICByZXR1cm4gTk87CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255572</attachid>
            <date>2015-06-25 14:31:48 -0700</date>
            <delta_ts>2015-06-25 15:09:30 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>hwkeyboardscroll.txt</filename>
            <type>text/plain</type>
            <size>19585</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA2LTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSGFyZHdhcmUgS2V5
Ym9hcmQ6IEFsbCBjb21iaW5hdGlvbnMgb2YgYXJyb3cga2V5cyBhbmQgc3BhY2Uga2V5IGRvIG5v
dCBzY3JvbGwgdGhlIHZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYyOTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMTg0NjYwMTUKKworICAg
ICAgICBXZSBkb24ndCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBrZXlib2FyZCB0byBoYW5k
bGUgdGhlIGV2ZW50IGlmIHdlIGFyZSBub3QKKyAgICAgICAgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0
YWJsZSBjb250ZW50LiBJbiBvcmRlciB0byByZWNlaXZlIGFsbCB0aGUgaGFyZHdhcmUga2V5Ym9h
cmQgZXZlbnRzCisgICAgICAgIHdlIG5lZWQgdG8gaW1wbGVtZW50IF9oYW5kbGVLZXlVSUV2ZW50
IHdoaWNoIGlzIGNhbGxlZCBmb3IgZXZlcnkga2V5IGV2ZW50CisgICAgICAgIHdoZW4gdGhlIHZp
ZXcgaXMgZmlyc3QgcmVzcG9uZGVyLiBUaGlzIGdpdmVzIHVzIHRoZSBvcHBvcnR1bml0eSB0byBz
ZW5kIGVhY2gga2V5c3Ryb2tlCisgICAgICAgIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGxldCBhbnkg
SmF2YXNjcmlwdCBoYW5kbGVyIGludGVyY2VwdCBpdCBhbmQgdGhlbiBwZXJmb3JtIHRoZSBkZWZh
dWx0CisgICAgICAgIGFjdGlvbiBmb3IgdGhlIGtleSBjb21iaW5hdGlvbi4KKyAgICAgICAgVW5m
b3J0dW5hdGVseSB0aGlzIG1lY2hhbmlzbSBkb2VzIG5vdCBwcm92aWRlIGtleSByZXBlYXQsIHdo
aWNoIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICBrZXlib2FyZCBsYXllci4gSW4gb3Jk
ZXIgdG8gaGF2ZSBpdCBhdCBsZWFzdCBmb3IgdGhlIGFycm93IGtleXMsIHdlIHVzZSB0aGUga2V5
Q29tbWFuZHMKKyAgICAgICAgbWVjaGFuaXNtIG9ubHkgZm9yIHRob3NlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcga2V5Q29tbWFuZHNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXJyb3dLZXk6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZUtleVVJRXZlbnQ6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5RXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2lu
dGVycHJldEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorCiAyMDE1LTA2LTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1baU9TXSBEcm9wIFdlYktpdE5l
dHdvcmtDYWNoZVRlbXBvcmFyaWx5RGlzYWJsZWRGb3JUZXN0aW5nIE5TVXNlckRlZmF1bHRzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lv
biAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGlja2Vy
Q29udGVudFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3X1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUHJlc2VudGF0aW9uQ29udHJvbGxlcl9Qcml2YXRlLmg+
CisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRlLmg+CkBAIC0x
MTAsNiArMTExLDI3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJRGF0ZVBpY2tlclAK
IEBlbmQKIAogdHlwZWRlZiBlbnVtIHsKKyAgICBrVUlLZXlib2FyZElucHV0UmVwZWF0ICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBrVUlLZXlib2FyZElucHV0UG9wdXBWYXJpYW50ICAg
ICAgICAgICA9IDEgPDwgMSwKKyAgICBrVUlLZXlib2FyZElucHV0TXVsdGl0YXAgICAgICAgICAg
ICAgICA9IDEgPDwgMiwKKyAgICBrVUlLZXlib2FyZElucHV0U2tpcENhbmRpZGF0ZVNlbGVjdGlv
biA9IDEgPDwgMywKKyAgICBrVUlLZXlib2FyZElucHV0RGVhZEtleSAgICAgICAgICAgICAgICA9
IDEgPDwgNCwKKyAgICBrVUlLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQgICA9IDEg
PDwgNSwKKyAgICBrVUlLZXlib2FyZElucHV0RmxpY2sgICAgICAgICAgICAgICAgICA9IDEgPDwg
NiwKKyAgICBrVUlLZXlib2FyZElucHV0UHJlUHJvY2Vzc2VkICAgICAgICAgICA9IDEgPDwgNywK
K30gVUlLZXlib2FyZElucHV0RmxhZ3M7CisKK0BpbnRlcmZhY2UgVUlFdmVudCAoRGV0YWlscykK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLHJlYWRvbmx5KSBVSUtleWJvYXJkSW5wdXRGbGFncyBfaW5w
dXRGbGFnczsKKy0gKElPSElERXZlbnRSZWYpX2hpZEV2ZW50OworLSAoTlNTdHJpbmcgKilfdW5t
b2RpZmllZElucHV0OworLSAoTlNTdHJpbmcgKilfbW9kaWZpZWRJbnB1dDsKKy0gKE5TSW50ZWdl
cilfbW9kaWZpZXJGbGFnczsKKy0gKEJPT0wpX2lzS2V5RG93bjsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLHJlYWRvbmx5KSBVSUtleWJvYXJkSW5wdXRGbGFncyBfaW5wdXRGbGFnczsKK0BlbmQKKwor
dHlwZWRlZiBlbnVtIHsKICAgICBVSUZvbnRUcmFpdFBsYWluID0gMHgwMDAwMDAwMCwKIH0gVUlG
b250VHJhaXQ7CiAKQEAgLTEyOSw2ICsxNTEsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKGlkKWlu
aXRXaXRoQ0dJbWFnZTooQ0dJbWFnZVJlZilDR0ltYWdlIGltYWdlT3JpZW50YXRpb246KFVJSW1h
Z2VPcmllbnRhdGlvbilpbWFnZU9yaWVudGF0aW9uOwogQGVuZAogCitAaW50ZXJmYWNlIFVJS2V5
Q29tbWFuZCAoRGV0YWlscykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFdmVu
dCAqX3RyaWdnZXJpbmdFdmVudDsKK0BlbmQKKwogQHByb3RvY29sIFVJS2V5Ym9hcmRJbXBsR2Vv
bWV0cnlEZWxlZ2F0ZQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgZ2V0dGVyPWlz
TWluaW1pemVkKSBCT09MIG1pbmltaXplZDsKIC0gKHZvaWQpcHJlcGFyZUZvckltcGxCb3VuZHNI
ZWlnaHRDaGFuZ2U6KENHRmxvYXQpZW5kRGVsdGEgc3VwcHJlc3NOb3RpZmljYXRpb246KEJPT0wp
c3VwcHJlc3NOb3RpZmljYXRpb247CkBAIC0yMTYsNiArMjQyLDEwIEBAIHR5cGVkZWYgZW51bSB7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNYWduaWZpZXJFbmFibGVkOikgQk9P
TCBfbWFnbmlmaWVyRW5hYmxlZDsKIEBlbmQKIAorQGludGVyZmFjZSBVSVJlc3BvbmRlciAoRGV0
YWlscykKKy0gKHZvaWQpX2hhbmRsZUtleVVJRXZlbnQ6KFVJRXZlbnQgKilldmVudDsKK0BlbmQK
KwogQGludGVyZmFjZSBVSVNjcm9sbFZpZXcgKERldGFpbHMpCiAtICh2b2lkKV9zdG9wU2Nyb2xs
aW5nQW5kWm9vbWluZ0FuaW1hdGlvbnM7CiAtICh2b2lkKV96b29tVG9DZW50ZXI6KENHUG9pbnQp
Y2VudGVyIHNjYWxlOihDR0Zsb2F0KXNjYWxlIGR1cmF0aW9uOihDRlRpbWVJbnRlcnZhbClkdXJh
dGlvbiBmb3JjZTooQk9PTClmb3JjZTsKQEAgLTc0Myw0ICs3NzMsNyBAQCBleHRlcm4gY29uc3Qg
ZmxvYXQgVUlXZWJWaWV3R3Jvd3NBbmRTaHJpCiBleHRlcm4gY29uc3QgZmxvYXQgVUlXZWJWaWV3
U2NhbGVzVG9GaXRTY2FsZTsKIGV4dGVybiBjb25zdCBmbG9hdCBVSVdlYlZpZXdTdGFuZGFyZFZp
ZXdwb3J0V2lkdGg7CiAKK2V4dGVybiBOU1N0cmluZyAqY29uc3QgVUlLZXlJbnB1dFBhZ2VVcDsK
K2V4dGVybiBOU1N0cmluZyAqY29uc3QgVUlLZXlJbnB1dFBhZ2VEb3duOworCiBXVEZfRVhURVJO
X0NfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQkocmV2aXNpb24gMTg1OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBA
QCBAaW50ZXJmYWNlIFVJU2Nyb2xsVmlldyAoVUlTY3JvbGxWaWV3SW50CiAtICh2b2lkKV9hZGp1
c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSopaW5mbyBhbmltYXRlZDoo
Qk9PTClhbmltYXRlZCBsYXN0QWRqdXN0bWVudDooQ0dGbG9hdCopbGFzdEFkanVzdG1lbnQ7CiAt
IChCT09MKV9pc1Njcm9sbGluZ1RvVG9wOwogLSAoQk9PTClfaXNJbnRlcnJ1cHRpbmdEZWNlbGVy
YXRpb247CistIChDR1BvaW50KV9hbmltYXRlZFRhcmdldE9mZnNldDsKIEBlbmQKIAogQGludGVy
ZmFjZSBVSVBlcmlwaGVyYWxIb3N0KFVJS2l0SW50ZXJuYWwpCkBAIC0xMTk0LDYgKzExOTUsMTgg
QEAgLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlYwogICAgIHJldHVybiB0
cnVlOwogfQogCistICh2b2lkKV9zY3JvbGxCeU9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClv
ZmZzZXQKK3sKKyAgICBDR1BvaW50IGN1cnJlbnRPZmZzZXQgPSAoW19zY3JvbGxWaWV3IF9pc0Fu
aW1hdGluZ1Njcm9sbF0pID8gW19zY3JvbGxWaWV3IF9hbmltYXRlZFRhcmdldE9mZnNldF0gOiBb
X3Njcm9sbFZpZXcgY29udGVudE9mZnNldF07CisKKyAgICBDR1BvaW50IGJvdW5kZWRPZmZzZXQg
PSBjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShfc2Nyb2xsVmlldy5nZXQoKSwgY3Vy
cmVudE9mZnNldCArIG9mZnNldCk7CisgICAgCisgICAgaWYgKCFDR1BvaW50RXF1YWxUb1BvaW50
KGJvdW5kZWRPZmZzZXQsIGN1cnJlbnRPZmZzZXQpKSB7CisgICAgICAgIFtfY29udGVudFZpZXcg
d2lsbFN0YXJ0Wm9vbU9yU2Nyb2xsXTsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRP
ZmZzZXQ6Ym91bmRlZE9mZnNldCBhbmltYXRlZDpZRVNdOworICAgIH0KK30KKwogLSAodm9pZClf
em9vbU91dFdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihC
T09MKWFuaW1hdGVkCiB7CiAgICAgW3NlbGYgX3pvb21Ub1BvaW50Om9yaWdpbiBhdFNjYWxlOltf
c2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSBhbmltYXRlZDphbmltYXRlZF07CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oCShyZXZpc2lvbiAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgy
LDcgQEAgc3RydWN0IFByaW50SW5mbzsKIAogLSAodm9pZClfc2Nyb2xsVG9Db250ZW50T2Zmc2V0
OihXZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXQ7CiAtIChCT09MKV9zY3JvbGxUb1Jl
Y3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQ
b2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdCltaW5pbXVtU2Nyb2xsRGlz
dGFuY2U7CistICh2b2lkKV9zY3JvbGxCeU9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZz
ZXQ7CiAtICh2b2lkKV96b29tVG9Gb2N1c1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClmb2N1c2Vk
RWxlbWVudFJlY3Qgc2VsZWN0aW9uUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXNlbGVjdGlvblJl
Y3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMgZm9udFNpemU6KGZsb2F0KWZvbnRTaXplIG1pbmltdW1T
Y2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2Nh
bGUgYWxsb3dTY2FsaW5nOihCT09MKWFsbG93U2NhbGluZyBmb3JjZVNjcm9sbDooQk9PTClmb3Jj
ZVNjcm9sbDsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRS
ZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6
KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdl
YkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
OSwxMiArNTksMTcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlu
a2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0
IGhlYWRlcnMhCiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2VJT1MuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAorQGludGVyZmFjZSBVSUV2ZW50KFVJRXZlbnRJbnRlcm5hbCkK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJS2V5Ym9hcmRJbnB1dEZsYWdzIF9pbnB1
dEZsYWdzOworQGVuZAorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTE0MjEsNiArMTQyNiw5IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlv
bjooU0VMKWFjdGlvbiB3aXQKIHsKICAgICBCT09MIGhhc1dlYlNlbGVjdGlvbiA9IF93ZWJTZWxl
Y3Rpb25Bc3Npc3RhbnQgJiYgIUNHUmVjdElzRW1wdHkoX3dlYlNlbGVjdGlvbkFzc2lzdGFudC5n
ZXQoKS5zZWxlY3Rpb25GcmFtZSk7CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihfYXJy
b3dLZXk6KSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIGlzRmlyc3RSZXNwb25kZXJdOworICAgICAg
ICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihfc2hvd1RleHRTdHlsZU9wdGlvbnM6KSkK
ICAgICAgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRh
YmxlICYmIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UgJiYgIV9zaG93aW5n
VGV4dFN0eWxlT3B0aW9uczsKICAgICBpZiAoX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zKQpAQCAt
MjE0Miw4ICsyMTUwLDQ0IEBAIC0gKHZvaWQpYWNjZXNzb3J5RG9uZQogCiAtIChOU0FycmF5ICop
a2V5Q29tbWFuZHMKIHsKLSAgICByZXR1cm4gQFtbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRo
SW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3Nv
cnlUYWI6KV0sCi0gICAgICAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3Io
X3ByZXZBY2Nlc3NvcnlUYWI6KV1dOworICAgIHN0YXRpYyBOU0FycmF5KiBub25FZGl0YWJsZUtl
eUNvbW1hbmRzID0gW0BbCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OlVJS2V5SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJv
d0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJ
bnB1dERvd25BcnJvdyBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6
KV0sCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRM
ZWZ0QXJyb3cgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAor
ICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtleUlucHV0UmlnaHRB
cnJvdyBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAg
ICAgCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRV
cEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllckNvbW1hbmQgYWN0aW9uOkBzZWxlY3Rv
cihfYXJyb3dLZXk6KV0sCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OlVJS2V5SW5wdXREb3duQXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyQ29tbWFuZCBh
Y3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICAKKyAgICAgICBbVUlLZXlDb21t
YW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFVwQXJyb3cgbW9kaWZpZXJGbGFnczpV
SUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAg
W1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXREb3duQXJyb3cgbW9k
aWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6
KV0sCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRM
ZWZ0QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3Rv
cihfYXJyb3dLZXk6KV0sCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OlVJS2V5SW5wdXRSaWdodEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFj
dGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIAorICAgICAgIFtVSUtleUNvbW1h
bmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtleUlucHV0VXBBcnJvdyBtb2RpZmllckZsYWdzOlVJ
S2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAg
ICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXREb3duQXJyb3cg
bW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyQWx0ZXJuYXRlIGFjdGlvbjpAc2VsZWN0b3IoX2Fy
cm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtl
eUlucHV0TGVmdEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllckFsdGVybmF0ZSBhY3Rp
b246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1h
bmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFJpZ2h0QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlm
aWVyQWx0ZXJuYXRlIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIAorICAg
ICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIiAiIG1vZGlmaWVyRmxhZ3M6
MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtl
eUNvbW1hbmRXaXRoSW5wdXQ6QCIgIiBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBh
Y3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICAKKyAgICAgICBbVUlLZXlDb21t
YW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFBhZ2VEb3duIG1vZGlmaWVyRmxhZ3M6
MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtl
eUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFBhZ2VEb3duIG1vZGlmaWVyRmxhZ3M6MCBhY3Rp
b246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICBdIHJldGFpbl07CisKKyAgICBzdGF0aWMg
TlNBcnJheSogZWRpdGFibGVLZXlDb21tYW5kcyA9IFtAWworICAgICAgIFtVSUtleUNvbW1hbmQg
a2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3Rv
cihfbmV4dEFjY2Vzc29yeVRhYjopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRX
aXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBz
ZWxlY3RvcihfcHJldkFjY2Vzc29yeVRhYjopXQorICAgIF0gcmV0YWluXTsKKyAgICAKKyAgICBy
ZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKSA/IGVkaXRhYmxl
S2V5Q29tbWFuZHMgOiBub25FZGl0YWJsZUtleUNvbW1hbmRzOworfQorCistICh2b2lkKV9hcnJv
d0tleTooaWQpc2VuZGVyCit7CisgICAgVUlLZXlDb21tYW5kKiBjb21tYW5kID0gc2VuZGVyOwor
ICAgIFtzZWxmIGhhbmRsZUtleUV2ZW50OmNvbW1hbmQuX3RyaWdnZXJpbmdFdmVudF07CiB9CiAK
IC0gKHZvaWQpX25leHRBY2Nlc3NvcnlUYWI6KGlkKXNlbmRlcgpAQCAtMjU0MSw2ICsyNTg1LDMy
IEBAIC0gKEJPT0wpcmVxdWlyZXNLZXlFdmVudHMKICAgICByZXR1cm4gWUVTOwogfQogCistICh2
b2lkKV9oYW5kbGVLZXlVSUV2ZW50Oig6OlVJRXZlbnQgKilldmVudAoreworICAgIC8vIFdlIG9u
bHkgd2FudCB0byBoYW5kbGUga2V5IGV2ZW50IGZyb20gdGhlIGhhcmR3YXJlIGtleWJvYXJkIHdo
ZW4gd2UgYXJlCisgICAgLy8gZmlyc3QgcmVzcG9uZGVyIGFuZCB3ZSBhcmUgbm90IGludGVyYWN0
aW5nIHdpdGggZWRpdGFibGUgY29udGVudC4KKyAgICBpZiAoW3NlbGYgaXNGaXJzdFJlc3BvbmRl
cl0gJiYgZXZlbnQuX2hpZEV2ZW50ICYmICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRF
ZGl0YWJsZSkKKyAgICAgICAgW3NlbGYgaGFuZGxlS2V5RXZlbnQ6ZXZlbnRdOworCisgICAgW3N1
cGVyIF9oYW5kbGVLZXlVSUV2ZW50OmV2ZW50XTsKK30KKworLSAodm9pZCloYW5kbGVLZXlFdmVu
dDooOjpVSUV2ZW50ICopZXZlbnQKK3sKKyAgICA6OldlYkV2ZW50ICp3ZWJFdmVudCA9IFtbWzo6
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlEb3duKSA/
IFdlYkV2ZW50S2V5RG93biA6IFdlYkV2ZW50S2V5VXAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wOmV2ZW50LnRpbWVz
dGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnM6ZXZlbnQuX21vZGlmaWVkSW5wdXQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50
Ll91bm1vZGlmaWVkSW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOmV2ZW50Ll9tb2RpZmllckZsYWdzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jl
cGVhdGluZzooZXZlbnQuX2lucHV0RmxhZ3MgJiBrVUlLZXlib2FyZElucHV0UmVwZWF0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aXRoRmxhZ3M6ZXZlbnQuX2lucHV0RmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOjAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGFiS2V5Oltl
dmVudC5fbW9kaWZpZWRJbnB1dCBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlclNldDpX
ZWJFdmVudENoYXJhY3RlclNldFVuaWNvZGVdIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBbc2Vs
ZiBoYW5kbGVLZXlXZWJFdmVudDp3ZWJFdmVudF07ICAgIAorfQorCiAtICh2b2lkKWhhbmRsZUtl
eVdlYkV2ZW50OihXZWJJT1NFdmVudCAqKXRoZUV2ZW50CiB7CiAgICAgX3BhZ2UtPmhhbmRsZUtl
eWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh0aGVFdmVudCkpOwpAQCAtMjU2Myw4
OCArMjYzMyw5NiBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9TRXZlbnQgCiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJCYWNrc3BhY2VLZXkgPSAweDAwMDg7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJSZXR1cm5LZXkgPSAweDAwMEQ7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGtXZWJEZWxldGVLZXkgPSAweDAwN0Y7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGtXZWJMZWZ0QXJyb3dLZXkgPSAweDAwQUM7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGtXZWJVcEFycm93S2V5ID0gMHgwMEFEOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBrV2ViUmlnaHRBcnJvd0tleSA9IDB4MDBBRTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
a1dlYkRvd25BcnJvd0tleSA9IDB4MDBBRjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dl
YkRlbGV0ZUZvcndhcmRLZXkgPSAweEY3Mjg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtX
ZWJTcGFjZUtleSA9IDB4MjA7CiAKICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29u
dGVudEVkaXRhYmxlICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICByZXR1cm4gTk87CiAKICAg
ICBCT09MIHNoaWZ0ID0gZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlm
dDsKKyAgICBCT09MIGNvbW1hbmQgPSBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFn
TWFza0NvbW1hbmQ7CisgICAgQk9PTCBvcHRpb24gPSBldmVudC5tb2RpZmllckZsYWdzICYgV2Vi
RXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgQk9P
TCBzaG91bGRTY3JvbGwgPSBZRVM7CisgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQ7CisKKyAg
ICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJ
bnB1dExlZnRBcnJvd10pCisgICAgICAgIHNjcm9sbE9mZnNldC5zZXRYKC1TY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRVcEFycm93XSkgeworICAgICAgICBpZiAo
b3B0aW9uKQorICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLV9wYWdlLT51bm9ic2N1cmVk
Q29udGVudFJlY3QoKS5oZWlnaHQoKSk7CisgICAgICAgIGVsc2UgaWYgKGNvbW1hbmQpCisgICAg
ICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WSgtW3NlbGYgYm91bmRzXS5zaXplLmhlaWdodCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjcm9sbE9mZnNldC5zZXRZKC1TY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFJpZ2h0QXJyb3ddKQorICAgICAgICAg
ICAgICAgc2Nyb2xsT2Zmc2V0LnNldFgoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmlu
ZzpVSUtleUlucHV0RG93bkFycm93XSkgeworICAgICAgICBpZiAob3B0aW9uKQorICAgICAgICAg
ICAgc2Nyb2xsT2Zmc2V0LnNldFkoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdo
dCgpKTsKKyAgICAgICAgZWxzZSBpZiAoY29tbWFuZCkKKyAgICAgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzY3JvbGxPZmZzZXQuc2V0WShTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJp
bmc6VUlLZXlJbnB1dFBhZ2VEb3duXSkKKyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoX3BhZ2Ut
PnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UGFnZVVwXSkK
KyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLV9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3Qo
KS5oZWlnaHQoKSk7CisgICAgZWxzZQorICAgICAgICBzaG91bGRTY3JvbGwgPSBOTzsKIAotICAg
IHN3aXRjaCAoZXZlbnQuY2hhcmFjdGVyU2V0KSB7Ci0gICAgY2FzZSBXZWJFdmVudENoYXJhY3Rl
clNldFN5bWJvbDogewotICAgICAgICBTdHJpbmcgY29tbWFuZDsKLSAgICAgICAgTlNTdHJpbmcg
KmNoYXJhY3RlcnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICAg
ICAgaWYgKFtjaGFyYWN0ZXJzIGxlbmd0aF0gPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBzd2l0Y2ggKFtjaGFyYWN0ZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKLSAgICAgICAg
Y2FzZSBrV2ViTGVmdEFycm93S2V5OgotICAgICAgICAgICAgY29tbWFuZCA9IHNoaWZ0ID8gQVND
SUlMaXRlcmFsKCJtb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpIDogIEFTQ0lJTGl0ZXJhbCgi
bW92ZUxlZnQiKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChzaG91bGRTY3JvbGwpIHsK
KyAgICAgICAgW193ZWJWaWV3IF9zY3JvbGxCeU9mZnNldDpzY3JvbGxPZmZzZXRdOworICAgICAg
ICByZXR1cm4gWUVTOworICAgIH0KIAotICAgICAgICBjYXNlIGtXZWJVcEFycm93S2V5OgotICAg
ICAgICAgICAgY29tbWFuZCA9IHNoaWZ0ID8gQVNDSUlMaXRlcmFsKCJtb3ZlVXBBbmRNb2RpZnlT
ZWxlY3Rpb24iKSA6ICBBU0NJSUxpdGVyYWwoIm1vdmVVcCIpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgVUlLZXlib2FyZEltcGwgKmtleWJvYXJkID0gW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZElu
c3RhbmNlXTsKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtldmVudCBjaGFyYWN0ZXJzXTsK
KyAgICAKKyAgICBpZiAoIVtjaGFyYWN0ZXJzIGxlbmd0aF0pCisgICAgICAgIHJldHVybiBOTzsK
IAotICAgICAgICBjYXNlIGtXZWJSaWdodEFycm93S2V5OgotICAgICAgICAgICAgY29tbWFuZCA9
IHNoaWZ0ID8gQVNDSUlMaXRlcmFsKCJtb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iKSA6ICBB
U0NJSUxpdGVyYWwoIm1vdmVSaWdodCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgc3dpdGNo
IChbY2hhcmFjdGVycyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7CisgICAgY2FzZSBrV2ViQmFja3Nw
YWNlS2V5OgorICAgIGNhc2Uga1dlYkRlbGV0ZUtleToKKyAgICAgICAgLy8gRklYTUU6IHJlbW92
ZSBkZWxldGVGcm9tSW5wdXQgb25jZSBVSUtpdCBhZG9wdHMgZGVsZXRlRnJvbUlucHV0V2l0aEZs
YWdzCisgICAgICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihk
ZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6KV0pCisgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRl
RnJvbUlucHV0V2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0XTsKKyAgICAgICAgcmV0dXJuIFlF
UzsKIAotICAgICAgICBjYXNlIGtXZWJEb3duQXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5k
ID0gc2hpZnQgPyBBU0NJSUxpdGVyYWwoIm1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAg
QVNDSUlMaXRlcmFsKCJtb3ZlRG93biIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBr
V2ViU3BhY2VLZXk6CisgICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50
RWRpdGFibGUpIHsKKyAgICAgICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6RmxvYXRQ
b2ludCgwLCBzaGlmdCA/IC1fcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkg
OiBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpXTsKKyAgICAgICAgICAg
IHJldHVybiBZRVM7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFjb21tYW5kLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kKTsKKyAgICAg
ICAgaWYgKGlzQ2hhckV2ZW50KSB7CisgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJp
bmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CiAgICAg
ICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBjYXNlIFdlYkV2ZW50Q2hhcmFjdGVyU2V0QVNDSUk6Ci0gICAgY2FzZSBXZWJFdmVudENoYXJh
Y3RlclNldFVuaWNvZGU6IHsKLSAgICAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBbZXZlbnQg
Y2hhcmFjdGVyc107Ci0gICAgICAgIGlmIChbY2hhcmFjdGVycyBsZW5ndGhdID09IDApCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgVUlLZXlib2FyZEltcGwgKmtleWJvYXJkID0gW1VJS2V5
Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXTsKLSAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVycyBj
aGFyYWN0ZXJBdEluZGV4OjBdKSB7Ci0gICAgICAgIGNhc2Uga1dlYkJhY2tzcGFjZUtleToKLSAg
ICAgICAgY2FzZSBrV2ViRGVsZXRlS2V5OgotICAgICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSBk
ZWxldGVGcm9tSW5wdXQgb25jZSBVSUtpdCBhZG9wdHMgZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdz
Ci0gICAgICAgICAgICBpZiAoW2tleWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZGVsZXRlRnJvbUlucHV0V2l0aEZsYWdzOildKQotICAgICAgICAgICAgICAgIFtrZXlib2FyZCBk
ZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dF07CisKKyAg
ICBjYXNlIGtXZWJFbnRlcktleToKKyAgICBjYXNlIGtXZWJSZXR1cm5LZXk6CisgICAgICAgIGlm
IChpc0NoYXJFdmVudCkgeworICAgICAgICAgICAgLy8gTWFwIFxyIGZyb20gSFcga2V5Ym9hcmQg
dG8gXG4gdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBzb2Z0IGtleWJvYXJkLgorICAgICAg
ICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOkAiXG4iIHdpdGhGbGFnczowXTsKICAgICAg
ICAgICAgIHJldHVybiBZRVM7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBrV2ViRW50ZXJLZXk6Ci0gICAgICAgIGNhc2Uga1dlYlJldHVybktleToKLSAgICAgICAg
ICAgIGlmIChpc0NoYXJFdmVudCkgewotICAgICAgICAgICAgICAgIC8vIE1hcCBcciBmcm9tIEhX
IGtleWJvYXJkIHRvIFxuIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgc29mdCBrZXlib2Fy
ZC4KLSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6QCJcbiIgd2l0aEZs
YWdzOjBdOwotICAgICAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gTk87CisgICAgY2FzZSBrV2ViRGVsZXRlRm9yd2FyZEtleToKKyAgICAg
ICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChBU0NJSUxpdGVyYWwoImRlbGV0ZUZvcndhcmQi
KSk7CisgICAgICAgIHJldHVybiBZRVM7CiAKLSAgICAgICAgY2FzZSBrV2ViRGVsZXRlRm9yd2Fy
ZEtleToKLSAgICAgICAgICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoQVNDSUlMaXRlcmFs
KCJkZWxldGVGb3J3YXJkIikpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChpc0NoYXJFdmVu
dCkgeworICAgICAgICAgICAgW2tleWJvYXJkIGFkZElucHV0U3RyaW5nOmV2ZW50LmNoYXJhY3Rl
cnMgd2l0aEZsYWdzOmV2ZW50LmtleWJvYXJkRmxhZ3NdOwogICAgICAgICAgICAgcmV0dXJuIFlF
UzsKLQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBpZiAoaXNDaGFyRXZlbnQpIHsK
LSAgICAgICAgICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVy
cyB3aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFlFUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgfQot
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBOTzsKLSAgICB9CiAKICAgICByZXR1cm4gTk87CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255579</attachid>
            <date>2015-06-25 15:09:30 -0700</date>
            <delta_ts>2015-06-25 16:47:10 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>hwkeyboardscroll.txt</filename>
            <type>text/plain</type>
            <size>19512</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA2LTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSGFyZHdhcmUgS2V5
Ym9hcmQ6IEFsbCBjb21iaW5hdGlvbnMgb2YgYXJyb3cga2V5cyBhbmQgc3BhY2Uga2V5IGRvIG5v
dCBzY3JvbGwgdGhlIHZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYyOTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMTg0NjYwMTUKKworICAg
ICAgICBXZSBkb24ndCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBrZXlib2FyZCB0byBoYW5k
bGUgdGhlIGV2ZW50IGlmIHdlIGFyZSBub3QKKyAgICAgICAgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0
YWJsZSBjb250ZW50LiBJbiBvcmRlciB0byByZWNlaXZlIGFsbCB0aGUgaGFyZHdhcmUga2V5Ym9h
cmQgZXZlbnRzCisgICAgICAgIHdlIG5lZWQgdG8gaW1wbGVtZW50IF9oYW5kbGVLZXlVSUV2ZW50
IHdoaWNoIGlzIGNhbGxlZCBmb3IgZXZlcnkga2V5IGV2ZW50CisgICAgICAgIHdoZW4gdGhlIHZp
ZXcgaXMgZmlyc3QgcmVzcG9uZGVyLiBUaGlzIGdpdmVzIHVzIHRoZSBvcHBvcnR1bml0eSB0byBz
ZW5kIGVhY2gga2V5c3Ryb2tlCisgICAgICAgIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGxldCBhbnkg
SmF2YXNjcmlwdCBoYW5kbGVyIGludGVyY2VwdCBpdCBhbmQgdGhlbiBwZXJmb3JtIHRoZSBkZWZh
dWx0CisgICAgICAgIGFjdGlvbiBmb3IgdGhlIGtleSBjb21iaW5hdGlvbi4KKyAgICAgICAgVW5m
b3J0dW5hdGVseSB0aGlzIG1lY2hhbmlzbSBkb2VzIG5vdCBwcm92aWRlIGtleSByZXBlYXQsIHdo
aWNoIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICBrZXlib2FyZCBsYXllci4gSW4gb3Jk
ZXIgdG8gaGF2ZSBpdCBhdCBsZWFzdCBmb3IgdGhlIGFycm93IGtleXMsIHdlIHVzZSB0aGUga2V5
Q29tbWFuZHMKKyAgICAgICAgbWVjaGFuaXNtIG9ubHkgZm9yIHRob3NlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcga2V5Q29tbWFuZHNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXJyb3dLZXk6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZUtleVVJRXZlbnQ6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5RXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2lu
dGVycHJldEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorCiAyMDE1LTA2LTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1baU9TXSBEcm9wIFdlYktpdE5l
dHdvcmtDYWNoZVRlbXBvcmFyaWx5RGlzYWJsZWRGb3JUZXN0aW5nIE5TVXNlckRlZmF1bHRzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lv
biAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGlja2Vy
Q29udGVudFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3X1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUHJlc2VudGF0aW9uQ29udHJvbGxlcl9Qcml2YXRlLmg+
CisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRlLmg+CkBAIC0x
MTAsNiArMTExLDI2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJRGF0ZVBpY2tlclAK
IEBlbmQKIAogdHlwZWRlZiBlbnVtIHsKKyAgICBrVUlLZXlib2FyZElucHV0UmVwZWF0ICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBrVUlLZXlib2FyZElucHV0UG9wdXBWYXJpYW50ICAg
ICAgICAgICA9IDEgPDwgMSwKKyAgICBrVUlLZXlib2FyZElucHV0TXVsdGl0YXAgICAgICAgICAg
ICAgICA9IDEgPDwgMiwKKyAgICBrVUlLZXlib2FyZElucHV0U2tpcENhbmRpZGF0ZVNlbGVjdGlv
biA9IDEgPDwgMywKKyAgICBrVUlLZXlib2FyZElucHV0RGVhZEtleSAgICAgICAgICAgICAgICA9
IDEgPDwgNCwKKyAgICBrVUlLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQgICA9IDEg
PDwgNSwKKyAgICBrVUlLZXlib2FyZElucHV0RmxpY2sgICAgICAgICAgICAgICAgICA9IDEgPDwg
NiwKKyAgICBrVUlLZXlib2FyZElucHV0UHJlUHJvY2Vzc2VkICAgICAgICAgICA9IDEgPDwgNywK
K30gVUlLZXlib2FyZElucHV0RmxhZ3M7CisKK0BpbnRlcmZhY2UgVUlFdmVudCAoRGV0YWlscykK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLHJlYWRvbmx5KSBVSUtleWJvYXJkSW5wdXRGbGFncyBfaW5w
dXRGbGFnczsKKy0gKHZvaWQgKilfaGlkRXZlbnQ7CistIChOU1N0cmluZyAqKV91bm1vZGlmaWVk
SW5wdXQ7CistIChOU1N0cmluZyAqKV9tb2RpZmllZElucHV0OworLSAoTlNJbnRlZ2VyKV9tb2Rp
ZmllckZsYWdzOworLSAoQk9PTClfaXNLZXlEb3duOworQGVuZAorCit0eXBlZGVmIGVudW0gewog
ICAgIFVJRm9udFRyYWl0UGxhaW4gPSAweDAwMDAwMDAwLAogfSBVSUZvbnRUcmFpdDsKIApAQCAt
MTI5LDYgKzE1MCwxMCBAQCB0eXBlZGVmIGVudW0gewogLSAoaWQpaW5pdFdpdGhDR0ltYWdlOihD
R0ltYWdlUmVmKUNHSW1hZ2UgaW1hZ2VPcmllbnRhdGlvbjooVUlJbWFnZU9yaWVudGF0aW9uKWlt
YWdlT3JpZW50YXRpb247CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlLZXlDb21tYW5kIChEZXRhaWxz
KQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUV2ZW50ICpfdHJpZ2dlcmluZ0V2
ZW50OworQGVuZAorCiBAcHJvdG9jb2wgVUlLZXlib2FyZEltcGxHZW9tZXRyeURlbGVnYXRlCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBnZXR0ZXI9aXNNaW5pbWl6ZWQpIEJPT0wg
bWluaW1pemVkOwogLSAodm9pZClwcmVwYXJlRm9ySW1wbEJvdW5kc0hlaWdodENoYW5nZTooQ0dG
bG9hdCllbmREZWx0YSBzdXBwcmVzc05vdGlmaWNhdGlvbjooQk9PTClzdXBwcmVzc05vdGlmaWNh
dGlvbjsKQEAgLTIxNiw2ICsyNDEsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldE1hZ25pZmllckVuYWJsZWQ6KSBCT09MIF9tYWduaWZpZXJFbmFi
bGVkOwogQGVuZAogCitAaW50ZXJmYWNlIFVJUmVzcG9uZGVyIChEZXRhaWxzKQorLSAodm9pZClf
aGFuZGxlS2V5VUlFdmVudDooVUlFdmVudCAqKWV2ZW50OworQGVuZAorCiBAaW50ZXJmYWNlIFVJ
U2Nyb2xsVmlldyAoRGV0YWlscykKIC0gKHZvaWQpX3N0b3BTY3JvbGxpbmdBbmRab29taW5nQW5p
bWF0aW9uczsKIC0gKHZvaWQpX3pvb21Ub0NlbnRlcjooQ0dQb2ludCljZW50ZXIgc2NhbGU6KENH
RmxvYXQpc2NhbGUgZHVyYXRpb246KENGVGltZUludGVydmFsKWR1cmF0aW9uIGZvcmNlOihCT09M
KWZvcmNlOwpAQCAtNzQzLDQgKzc3Miw3IEBAIGV4dGVybiBjb25zdCBmbG9hdCBVSVdlYlZpZXdH
cm93c0FuZFNocmkKIGV4dGVybiBjb25zdCBmbG9hdCBVSVdlYlZpZXdTY2FsZXNUb0ZpdFNjYWxl
OwogZXh0ZXJuIGNvbnN0IGZsb2F0IFVJV2ViVmlld1N0YW5kYXJkVmlld3BvcnRXaWR0aDsKIAor
ZXh0ZXJuIE5TU3RyaW5nICpjb25zdCBVSUtleUlucHV0UGFnZVVwOworZXh0ZXJuIE5TU3RyaW5n
ICpjb25zdCBVSUtleUlucHV0UGFnZURvd247CisKIFdURl9FWFRFUk5fQ19FTkQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIEBpbnRlcmZhY2UgVUlT
Y3JvbGxWaWV3IChVSVNjcm9sbFZpZXdJbnQKIC0gKHZvaWQpX2FkanVzdEZvckF1dG9tYXRpY0tl
eWJvYXJkSW5mbzooTlNEaWN0aW9uYXJ5KilpbmZvIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGxh
c3RBZGp1c3RtZW50OihDR0Zsb2F0KilsYXN0QWRqdXN0bWVudDsKIC0gKEJPT0wpX2lzU2Nyb2xs
aW5nVG9Ub3A7CiAtIChCT09MKV9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbjsKKy0gKENHUG9p
bnQpX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0OwogQGVuZAogCiBAaW50ZXJmYWNlIFVJUGVyaXBoZXJh
bEhvc3QoVUlLaXRJbnRlcm5hbCkKQEAgLTExOTQsNiArMTE5NSwxOCBAQCAtIChCT09MKV9zY3Jv
bGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy0gKHZv
aWQpX3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldAoreworICAgIENH
UG9pbnQgY3VycmVudE9mZnNldCA9IChbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Nyb2xsXSkg
PyBbX3Njcm9sbFZpZXcgX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0XSA6IFtfc2Nyb2xsVmlldyBjb250
ZW50T2Zmc2V0XTsKKworICAgIENHUG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRlbnRPZmZzZXRC
b3VuZGVkSW5WYWxpZFJhbmdlKF9zY3JvbGxWaWV3LmdldCgpLCBjdXJyZW50T2Zmc2V0ICsgb2Zm
c2V0KTsKKyAgICAKKyAgICBpZiAoIUNHUG9pbnRFcXVhbFRvUG9pbnQoYm91bmRlZE9mZnNldCwg
Y3VycmVudE9mZnNldCkpIHsKKyAgICAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRab29tT3JT
Y3JvbGxdOworICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpib3VuZGVkT2Zm
c2V0IGFuaW1hdGVkOllFU107CisgICAgfQorfQorCiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdp
bjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKIHsK
ICAgICBbc2VsZiBfem9vbVRvUG9pbnQ6b3JpZ2luIGF0U2NhbGU6W19zY3JvbGxWaWV3IG1pbmlt
dW1ab29tU2NhbGVdIGFuaW1hdGVkOmFuaW1hdGVkXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHJldmlz
aW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgUHJp
bnRJbmZvOwogCiAtICh2b2lkKV9zY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0
UG9pbnQpY29udGVudE9mZnNldDsKIC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6Rmxv
YXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBtaW5p
bXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0gKHZvaWQp
X3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldDsKIC0gKHZvaWQpX3pv
b21Ub0ZvY3VzUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KWZvY3VzZWRFbGVtZW50UmVjdCBzZWxl
Y3Rpb25SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3Qpc2VsZWN0aW9uUmVjdEluRG9jdW1lbnRDb29y
ZGluYXRlcyBmb250U2l6ZTooZmxvYXQpZm9udFNpemUgbWluaW11bVNjYWxlOihkb3VibGUpbWlu
aW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBhbGxvd1NjYWxpbmc6
KEJPT0wpYWxsb3dTY2FsaW5nIGZvcmNlU2Nyb2xsOihCT09MKWZvcmNlU2Nyb2xsOwogLSAoQk9P
TClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjoo
V2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVjdDooQk9PTClmaXRFbnRpcmVS
ZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJs
ZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdCltaW5pbXVtU2Nyb2xs
RGlzdGFuY2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2lu
dClvcmlnaW4gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQko
cmV2aXNpb24gMTg1OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDEyICs1OSwxNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5o
PiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCitAaW50ZXJmYWNlIFVJRXZlbnQoVUlFdmVudEludGVybmFsKQorQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CitAZW5kCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAt
MTQyMSw2ICsxNDI2LDkgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0aW9uIHdp
dAogewogICAgIEJPT0wgaGFzV2ViU2VsZWN0aW9uID0gX3dlYlNlbGVjdGlvbkFzc2lzdGFudCAm
JiAhQ0dSZWN0SXNFbXB0eShfd2ViU2VsZWN0aW9uQXNzaXN0YW50LmdldCgpLnNlbGVjdGlvbkZy
YW1lKTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9hcnJvd0tleTopKQorICAgICAg
ICByZXR1cm4gW3NlbGYgaXNGaXJzdFJlc3BvbmRlcl07CisgICAgICAgIAogICAgIGlmIChhY3Rp
b24gPT0gQHNlbGVjdG9yKF9zaG93VGV4dFN0eWxlT3B0aW9uczopKQogICAgICAgICByZXR1cm4g
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgX3BhZ2UtPmVk
aXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSAmJiAhX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25z
OwogICAgIGlmIChfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnMpCkBAIC0yMTQyLDggKzIxNTAsNDQg
QEAgLSAodm9pZClhY2Nlc3NvcnlEb25lCiAKIC0gKE5TQXJyYXkgKilrZXlDb21tYW5kcwogewot
ICAgIHJldHVybiBAW1tVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2Rp
ZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfbmV4dEFjY2Vzc29yeVRhYjopXSwKLSAgICAg
ICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJG
bGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJldkFjY2Vzc29yeVRh
YjopXV07CisgICAgc3RhdGljIE5TQXJyYXkqIG5vbkVkaXRhYmxlS2V5Q29tbWFuZHMgPSBbQFsK
KyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFVwQXJy
b3cgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAg
IFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtleUlucHV0RG93bkFycm93IG1v
ZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlL
ZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dExlZnRBcnJvdyBtb2RpZmll
ckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgW1VJS2V5Q29t
bWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRSaWdodEFycm93IG1vZGlmaWVyRmxh
Z3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICAKKyAgICAgICBbVUlL
ZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFVwQXJyb3cgbW9kaWZpZXJG
bGFnczpVSUtleU1vZGlmaWVyQ29tbWFuZCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwK
KyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERvd25B
cnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJDb21tYW5kIGFjdGlvbjpAc2VsZWN0b3Io
X2Fycm93S2V5OildLAorICAgICAgIAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdp
dGhJbnB1dDpVSUtleUlucHV0VXBBcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlm
dCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtl
eUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERvd25BcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5
TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlL
ZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dExlZnRBcnJvdyBtb2RpZmll
ckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwK
KyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFJpZ2h0
QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3Rvcihf
YXJyb3dLZXk6KV0sCisgICAgICAgCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0
aElucHV0OlVJS2V5SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllckFsdGVy
bmF0ZSBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5k
IGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERvd25BcnJvdyBtb2RpZmllckZsYWdzOlVJ
S2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAg
ICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRMZWZ0QXJyb3cg
bW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyQWx0ZXJuYXRlIGFjdGlvbjpAc2VsZWN0b3IoX2Fy
cm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtl
eUlucHV0UmlnaHRBcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0
aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgCisgICAgICAgW1VJS2V5Q29tbWFu
ZCBrZXlDb21tYW5kV2l0aElucHV0OkAiICIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0
b3IoX2Fycm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1
dDpAIiAiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3Io
X2Fycm93S2V5OildLAorICAgICAgIAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdp
dGhJbnB1dDpVSUtleUlucHV0UGFnZURvd24gbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0
b3IoX2Fycm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1
dDpVSUtleUlucHV0UGFnZURvd24gbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fy
cm93S2V5OildLAorICAgIF0gcmV0YWluXTsKKworICAgIHN0YXRpYyBOU0FycmF5KiBlZGl0YWJs
ZUtleUNvbW1hbmRzID0gW0BbCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElu
cHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5
VGFiOildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBt
b2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9wcmV2QWNj
ZXNzb3J5VGFiOildCisgICAgXSByZXRhaW5dOworICAgIAorICAgIHJldHVybiAoX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpID8gZWRpdGFibGVLZXlDb21tYW5kcyA6IG5v
bkVkaXRhYmxlS2V5Q29tbWFuZHM7Cit9CisKKy0gKHZvaWQpX2Fycm93S2V5OihpZClzZW5kZXIK
K3sKKyAgICBVSUtleUNvbW1hbmQqIGNvbW1hbmQgPSBzZW5kZXI7CisgICAgW3NlbGYgaGFuZGxl
S2V5RXZlbnQ6Y29tbWFuZC5fdHJpZ2dlcmluZ0V2ZW50XTsKIH0KIAogLSAodm9pZClfbmV4dEFj
Y2Vzc29yeVRhYjooaWQpc2VuZGVyCkBAIC0yNTQxLDYgKzI1ODUsMzIgQEAgLSAoQk9PTClyZXF1
aXJlc0tleUV2ZW50cwogICAgIHJldHVybiBZRVM7CiB9CiAKKy0gKHZvaWQpX2hhbmRsZUtleVVJ
RXZlbnQ6KDo6VUlFdmVudCAqKWV2ZW50Cit7CisgICAgLy8gV2Ugb25seSB3YW50IHRvIGhhbmRs
ZSBrZXkgZXZlbnQgZnJvbSB0aGUgaGFyZHdhcmUga2V5Ym9hcmQgd2hlbiB3ZSBhcmUKKyAgICAv
LyBmaXJzdCByZXNwb25kZXIgYW5kIHdlIGFyZSBub3QgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0YWJs
ZSBjb250ZW50LgorICAgIGlmIChbc2VsZiBpc0ZpcnN0UmVzcG9uZGVyXSAmJiBldmVudC5faGlk
RXZlbnQgJiYgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQorICAgICAg
ICBbc2VsZiBoYW5kbGVLZXlFdmVudDpldmVudF07CisKKyAgICBbc3VwZXIgX2hhbmRsZUtleVVJ
RXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZlbnQgKill
dmVudAoreworICAgIDo6V2ViRXZlbnQgKndlYkV2ZW50ID0gW1tbOjpXZWJFdmVudCBhbGxvY10g
aW5pdFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24pID8gV2ViRXZlbnRLZXlEb3du
IDogV2ViRXZlbnRLZXlVcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6ZXZlbnQudGltZXN0YW1wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
czpldmVudC5fbW9kaWZpZWRJbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6ZXZlbnQuX3VubW9kaWZpZWRJbnB1
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllcnM6ZXZlbnQuX21vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVwZWF0aW5nOihldmVudC5f
aW5wdXRGbGFncyAmIGtVSUtleWJvYXJkSW5wdXRSZXBlYXQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGbGFnczpldmVudC5f
aW5wdXRGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtleUNvZGU6MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUYWJLZXk6W2V2ZW50Ll9tb2RpZmllZElu
cHV0IGlzRXF1YWxUb1N0cmluZzpAIlx0Il0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyU2V0OldlYkV2ZW50Q2hhcmFjdGVy
U2V0VW5pY29kZV0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIFtzZWxmIGhhbmRsZUtleVdlYkV2
ZW50OndlYkV2ZW50XTsgICAgCit9CisKIC0gKHZvaWQpaGFuZGxlS2V5V2ViRXZlbnQ6KFdlYklP
U0V2ZW50ICopdGhlRXZlbnQKIHsKICAgICBfcGFnZS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KHRoZUV2ZW50KSk7CkBAIC0yNTYzLDg4ICsyNjMzLDk2IEBAIC0g
KEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQga1dlYkJhY2tzcGFjZUtleSA9IDB4MDAwODsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQga1dlYlJldHVybktleSA9IDB4MDAwRDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
a1dlYkRlbGV0ZUtleSA9IDB4MDA3RjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYkxl
ZnRBcnJvd0tleSA9IDB4MDBBQzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlVwQXJy
b3dLZXkgPSAweDAwQUQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJSaWdodEFycm93
S2V5ID0gMHgwMEFFOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRG93bkFycm93S2V5
ID0gMHgwMEFGOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRGVsZXRlRm9yd2FyZEtl
eSA9IDB4RjcyODsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0gMHgy
MDsKIAogICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUgJiYg
ZXZlbnQuaXNUYWJLZXkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIEJPT0wgc2hpZnQgPSBl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1NoaWZ0OworICAgIEJPT0wgY29t
bWFuZCA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZDsKKyAg
ICBCT09MIG9wdGlvbiA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0
ZXJuYXRlOworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbZXZl
bnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICBCT09MIHNob3VsZFNjcm9sbCA9
IFlFUzsKKyAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldDsKKworICAgIGlmIChbY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0TGVmdEFycm93XSkK
KyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFgoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAo
KSk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9T
dHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKSB7CisgICAgICAgIGlmIChvcHRpb24pCisgICAgICAg
ICAgICBzY3JvbGxPZmZzZXQuc2V0WSgtX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhl
aWdodCgpKTsKKyAgICAgICAgZWxzZSBpZiAoY29tbWFuZCkKKyAgICAgICAgICAgIHNjcm9sbE9m
ZnNldC5zZXRZKC1bc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAo
KSk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxU
b1N0cmluZzpVSUtleUlucHV0UmlnaHRBcnJvd10pCisgICAgICAgICAgICAgICBzY3JvbGxPZmZz
ZXQuc2V0WChTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3du
QXJyb3ddKSB7CisgICAgICAgIGlmIChvcHRpb24pCisgICAgICAgICAgICBzY3JvbGxPZmZzZXQu
c2V0WShfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpOworICAgICAgICBl
bHNlIGlmIChjb21tYW5kKQorICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoW3NlbGYgYm91
bmRzXS5zaXplLmhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UGFn
ZURvd25dKQorICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShfcGFnZS0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0KCkuaGVpZ2h0KCkpOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICBzY3JvbGxP
ZmZzZXQuc2V0WSgtX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIHNob3VsZFNjcm9sbCA9IE5POwogCi0gICAgc3dpdGNoIChldmVudC5j
aGFyYWN0ZXJTZXQpIHsKLSAgICBjYXNlIFdlYkV2ZW50Q2hhcmFjdGVyU2V0U3ltYm9sOiB7Ci0g
ICAgICAgIFN0cmluZyBjb21tYW5kOwotICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtl
dmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgICAgICBpZiAoW2NoYXJhY3Rl
cnMgbGVuZ3RoXSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN3aXRjaCAoW2No
YXJhY3RlcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAgICBjYXNlIGtXZWJMZWZ0QXJy
b3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBBU0NJSUxpdGVyYWwoIm1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAgQVNDSUlMaXRlcmFsKCJtb3ZlTGVmdCIpOwotICAg
ICAgICAgICAgYnJlYWs7CisgICAgaWYgKHNob3VsZFNjcm9sbCkgeworICAgICAgICBbX3dlYlZp
ZXcgX3Njcm9sbEJ5T2Zmc2V0OnNjcm9sbE9mZnNldF07CisgICAgICAgIHJldHVybiBZRVM7Cisg
ICAgfQogCi0gICAgICAgIGNhc2Uga1dlYlVwQXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5k
ID0gc2hpZnQgPyBBU0NJSUxpdGVyYWwoIm1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpIDogIEFT
Q0lJTGl0ZXJhbCgibW92ZVVwIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBVSUtleWJvYXJk
SW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdOworICAgIE5T
U3RyaW5nICpjaGFyYWN0ZXJzID0gW2V2ZW50IGNoYXJhY3RlcnNdOworICAgIAorICAgIGlmICgh
W2NoYXJhY3RlcnMgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAgIGNhc2Ug
a1dlYlJpZ2h0QXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBBU0NJSUxp
dGVyYWwoIm1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpIDogIEFTQ0lJTGl0ZXJhbCgibW92
ZVJpZ2h0Iik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKFtjaGFyYWN0ZXJzIGNo
YXJhY3RlckF0SW5kZXg6MF0pIHsKKyAgICBjYXNlIGtXZWJCYWNrc3BhY2VLZXk6CisgICAgY2Fz
ZSBrV2ViRGVsZXRlS2V5OgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZyb21JbnB1
dCBvbmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MKKyAgICAgICAgaWYg
KFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRlbGV0ZUZyb21JbnB1dFdp
dGhGbGFnczopXSkKKyAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRXaXRoRmxh
Z3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtrZXli
b2FyZCBkZWxldGVGcm9tSW5wdXRdOworICAgICAgICByZXR1cm4gWUVTOwogCi0gICAgICAgIGNh
c2Uga1dlYkRvd25BcnJvd0tleToKLSAgICAgICAgICAgIGNvbW1hbmQgPSBzaGlmdCA/IEFTQ0lJ
TGl0ZXJhbCgibW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKSA6ICBBU0NJSUxpdGVyYWwoIm1v
dmVEb3duIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXZWJTcGFjZUtleToKKyAg
ICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAg
ICAgICAgICAgW193ZWJWaWV3IF9zY3JvbGxCeU9mZnNldDpGbG9hdFBvaW50KDAsIHNoaWZ0ID8g
LV9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSA6IF9wYWdlLT51bm9ic2N1
cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSldOworICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAg
ICAgICAgfQotICAgICAgICBpZiAoIWNvbW1hbmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBf
cGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmQpOworICAgICAgICBpZiAoaXNDaGFyRXZl
bnQpIHsKKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5jaGFyYWN0
ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsKICAgICAgICAgICAgIHJldHVybiBZ
RVM7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgV2ViRXZlbnRD
aGFyYWN0ZXJTZXRBU0NJSToKLSAgICBjYXNlIFdlYkV2ZW50Q2hhcmFjdGVyU2V0VW5pY29kZTog
ewotICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKLSAg
ICAgICAgaWYgKFtjaGFyYWN0ZXJzIGxlbmd0aF0gPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBVSUtleWJvYXJkSW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVk
SW5zdGFuY2VdOwotICAgICAgICBzd2l0Y2ggKFtjaGFyYWN0ZXJzIGNoYXJhY3RlckF0SW5kZXg6
MF0pIHsKLSAgICAgICAgY2FzZSBrV2ViQmFja3NwYWNlS2V5OgotICAgICAgICBjYXNlIGtXZWJE
ZWxldGVLZXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZyb21JbnB1dCBv
bmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MKLSAgICAgICAgICAgIGlm
IChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkZWxldGVGcm9tSW5wdXRX
aXRoRmxhZ3M6KV0pCi0gICAgICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21JbnB1dFdp
dGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0XTsKKworICAgIGNhc2Uga1dlYkVudGVy
S2V5OgorICAgIGNhc2Uga1dlYlJldHVybktleToKKyAgICAgICAgaWYgKGlzQ2hhckV2ZW50KSB7
CisgICAgICAgICAgICAvLyBNYXAgXHIgZnJvbSBIVyBrZXlib2FyZCB0byBcbiB0byBtYXRjaCB0
aGUgYmVoYXZpb3Igb2YgdGhlIHNvZnQga2V5Ym9hcmQuCisgICAgICAgICAgICBba2V5Ym9hcmQg
YWRkSW5wdXRTdHJpbmc6QCJcbiIgd2l0aEZsYWdzOjBdOwogICAgICAgICAgICAgcmV0dXJuIFlF
UzsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIGtXZWJFbnRlcktl
eToKLSAgICAgICAgY2FzZSBrV2ViUmV0dXJuS2V5OgotICAgICAgICAgICAgaWYgKGlzQ2hhckV2
ZW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFwIFxyIGZyb20gSFcga2V5Ym9hcmQgdG8gXG4g
dG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBzb2Z0IGtleWJvYXJkLgotICAgICAgICAgICAg
ICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpAIlxuIiB3aXRoRmxhZ3M6MF07Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBO
TzsKKyAgICBjYXNlIGtXZWJEZWxldGVGb3J3YXJkS2V5OgorICAgICAgICBfcGFnZS0+ZXhlY3V0
ZUVkaXRDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiZGVsZXRlRm9yd2FyZCIpKTsKKyAgICAgICAgcmV0
dXJuIFlFUzsKIAotICAgICAgICBjYXNlIGtXZWJEZWxldGVGb3J3YXJkS2V5OgotICAgICAgICAg
ICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChBU0NJSUxpdGVyYWwoImRlbGV0ZUZvcndhcmQi
KSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGlzQ2hhckV2ZW50KSB7CisgICAgICAgICAg
ICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxhZ3M6ZXZl
bnQua2V5Ym9hcmRGbGFnc107CiAgICAgICAgICAgICByZXR1cm4gWUVTOwotCi0gICAgICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgICAgIGlmIChpc0NoYXJFdmVudCkgewotICAgICAgICAgICAgICAg
IFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFnczpldmVu
dC5rZXlib2FyZEZsYWdzXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICB9Ci0gICAgfQogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE5POwotICAgIH0KIAog
ICAgIHJldHVybiBOTzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255596</attachid>
            <date>2015-06-25 16:47:10 -0700</date>
            <delta_ts>2015-06-27 14:46:25 -0700</delta_ts>
            <desc>Patch4</desc>
            <filename>hwkeyboardscroll.txt</filename>
            <type>text/plain</type>
            <size>19974</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA2LTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSGFyZHdhcmUgS2V5
Ym9hcmQ6IEFsbCBjb21iaW5hdGlvbnMgb2YgYXJyb3cga2V5cyBhbmQgc3BhY2Uga2V5IGRvIG5v
dCBzY3JvbGwgdGhlIHZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYyOTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMTg0NjYwMTUKKworICAg
ICAgICBXZSBkb24ndCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBrZXlib2FyZCB0byBoYW5k
bGUgdGhlIGV2ZW50IGlmIHdlIGFyZSBub3QKKyAgICAgICAgaW50ZXJhY3Rpbmcgd2l0aCBlZGl0
YWJsZSBjb250ZW50LiBJbiBvcmRlciB0byByZWNlaXZlIGFsbCB0aGUgaGFyZHdhcmUga2V5Ym9h
cmQgZXZlbnRzCisgICAgICAgIHdlIG5lZWQgdG8gaW1wbGVtZW50IF9oYW5kbGVLZXlVSUV2ZW50
IHdoaWNoIGlzIGNhbGxlZCBmb3IgZXZlcnkga2V5IGV2ZW50CisgICAgICAgIHdoZW4gdGhlIHZp
ZXcgaXMgZmlyc3QgcmVzcG9uZGVyLiBUaGlzIGdpdmVzIHVzIHRoZSBvcHBvcnR1bml0eSB0byBz
ZW5kIGVhY2gga2V5c3Ryb2tlCisgICAgICAgIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGxldCBhbnkg
SmF2YXNjcmlwdCBoYW5kbGVyIGludGVyY2VwdCBpdCBhbmQgdGhlbiBwZXJmb3JtIHRoZSBkZWZh
dWx0CisgICAgICAgIGFjdGlvbiBmb3IgdGhlIGtleSBjb21iaW5hdGlvbi4KKyAgICAgICAgVW5m
b3J0dW5hdGVseSB0aGlzIG1lY2hhbmlzbSBkb2VzIG5vdCBwcm92aWRlIGtleSByZXBlYXQsIHdo
aWNoIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICBrZXlib2FyZCBsYXllci4gSW4gb3Jk
ZXIgdG8gaGF2ZSBpdCBhdCBsZWFzdCBmb3IgdGhlIGFycm93IGtleXMsIHdlIHVzZSB0aGUga2V5
Q29tbWFuZHMKKyAgICAgICAgbWVjaGFuaXNtIG9ubHkgZm9yIHRob3NlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcga2V5Q29tbWFuZHNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXJyb3dLZXk6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZUtleVVJRXZlbnQ6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5RXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2lu
dGVycHJldEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorCiAyMDE1LTA2LTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1baU9TXSBEcm9wIFdlYktpdE5l
dHdvcmtDYWNoZVRlbXBvcmFyaWx5RGlzYWJsZWRGb3JUZXN0aW5nIE5TVXNlckRlZmF1bHRzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lv
biAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGlja2Vy
Q29udGVudFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQaWNrZXJWaWV3X1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUHJlc2VudGF0aW9uQ29udHJvbGxlcl9Qcml2YXRlLmg+
CisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRlLmg+CkBAIC0x
MTAsNiArMTExLDI2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJRGF0ZVBpY2tlclAK
IEBlbmQKIAogdHlwZWRlZiBlbnVtIHsKKyAgICBrVUlLZXlib2FyZElucHV0UmVwZWF0ICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBrVUlLZXlib2FyZElucHV0UG9wdXBWYXJpYW50ICAg
ICAgICAgICA9IDEgPDwgMSwKKyAgICBrVUlLZXlib2FyZElucHV0TXVsdGl0YXAgICAgICAgICAg
ICAgICA9IDEgPDwgMiwKKyAgICBrVUlLZXlib2FyZElucHV0U2tpcENhbmRpZGF0ZVNlbGVjdGlv
biA9IDEgPDwgMywKKyAgICBrVUlLZXlib2FyZElucHV0RGVhZEtleSAgICAgICAgICAgICAgICA9
IDEgPDwgNCwKKyAgICBrVUlLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQgICA9IDEg
PDwgNSwKKyAgICBrVUlLZXlib2FyZElucHV0RmxpY2sgICAgICAgICAgICAgICAgICA9IDEgPDwg
NiwKKyAgICBrVUlLZXlib2FyZElucHV0UHJlUHJvY2Vzc2VkICAgICAgICAgICA9IDEgPDwgNywK
K30gVUlLZXlib2FyZElucHV0RmxhZ3M7CisKK0BpbnRlcmZhY2UgVUlFdmVudCAoRGV0YWlscykK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lu
cHV0RmxhZ3M7CistICh2b2lkICopX2hpZEV2ZW50OworLSAoTlNTdHJpbmcgKilfdW5tb2RpZmll
ZElucHV0OworLSAoTlNTdHJpbmcgKilfbW9kaWZpZWRJbnB1dDsKKy0gKE5TSW50ZWdlcilfbW9k
aWZpZXJGbGFnczsKKy0gKEJPT0wpX2lzS2V5RG93bjsKK0BlbmQKKwordHlwZWRlZiBlbnVtIHsK
ICAgICBVSUZvbnRUcmFpdFBsYWluID0gMHgwMDAwMDAwMCwKIH0gVUlGb250VHJhaXQ7CiAKQEAg
LTEyOSw2ICsxNTAsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKGlkKWluaXRXaXRoQ0dJbWFnZToo
Q0dJbWFnZVJlZilDR0ltYWdlIGltYWdlT3JpZW50YXRpb246KFVJSW1hZ2VPcmllbnRhdGlvbilp
bWFnZU9yaWVudGF0aW9uOwogQGVuZAogCitAaW50ZXJmYWNlIFVJS2V5Q29tbWFuZCAoRGV0YWls
cykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFdmVudCAqX3RyaWdnZXJpbmdF
dmVudDsKK0BlbmQKKwogQHByb3RvY29sIFVJS2V5Ym9hcmRJbXBsR2VvbWV0cnlEZWxlZ2F0ZQog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgZ2V0dGVyPWlzTWluaW1pemVkKSBCT09M
IG1pbmltaXplZDsKIC0gKHZvaWQpcHJlcGFyZUZvckltcGxCb3VuZHNIZWlnaHRDaGFuZ2U6KENH
RmxvYXQpZW5kRGVsdGEgc3VwcHJlc3NOb3RpZmljYXRpb246KEJPT0wpc3VwcHJlc3NOb3RpZmlj
YXRpb247CkBAIC0yMTYsMTIgKzI0MSwxNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0TWFnbmlmaWVyRW5hYmxlZDopIEJPT0wgX21hZ25pZmllckVu
YWJsZWQ7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlSZXNwb25kZXIgKERldGFpbHMpCistICh2b2lk
KV9oYW5kbGVLZXlVSUV2ZW50OihVSUV2ZW50ICopZXZlbnQ7CitAZW5kCisKIEBpbnRlcmZhY2Ug
VUlTY3JvbGxWaWV3IChEZXRhaWxzKQogLSAodm9pZClfc3RvcFNjcm9sbGluZ0FuZFpvb21pbmdB
bmltYXRpb25zOwogLSAodm9pZClfem9vbVRvQ2VudGVyOihDR1BvaW50KWNlbnRlciBzY2FsZToo
Q0dGbG9hdClzY2FsZSBkdXJhdGlvbjooQ0ZUaW1lSW50ZXJ2YWwpZHVyYXRpb24gZm9yY2U6KEJP
T0wpZm9yY2U7CiAtICh2b2lkKV96b29tVG9DZW50ZXI6KENHUG9pbnQpY2VudGVyIHNjYWxlOihD
R0Zsb2F0KXNjYWxlIGR1cmF0aW9uOihDRlRpbWVJbnRlcnZhbClkdXJhdGlvbjsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNab29tRW5hYmxlZCkgQk9PTCB6b29tRW5hYmxlZDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc0FuaW1hdGluZ1pvb20pIEJP
T0wgaXNBbmltYXRpbmdab29tOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0
ZXI9X2lzQW5pbWF0aW5nU2Nyb2xsKSBCT09MIGlzQW5pbWF0aW5nU2Nyb2xsOwogQHByb3BlcnR5
IChub25hdG9taWMpIENHRmxvYXQgaG9yaXpvbnRhbFNjcm9sbERlY2VsZXJhdGlvbkZhY3RvcjsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHZlcnRpY2FsU2Nyb2xsRGVjZWxlcmF0aW9u
RmFjdG9yOwogQGVuZApAQCAtNzQzLDQgKzc3Myw3IEBAIGV4dGVybiBjb25zdCBmbG9hdCBVSVdl
YlZpZXdHcm93c0FuZFNocmkKIGV4dGVybiBjb25zdCBmbG9hdCBVSVdlYlZpZXdTY2FsZXNUb0Zp
dFNjYWxlOwogZXh0ZXJuIGNvbnN0IGZsb2F0IFVJV2ViVmlld1N0YW5kYXJkVmlld3BvcnRXaWR0
aDsKIAorZXh0ZXJuIE5TU3RyaW5nICpjb25zdCBVSUtleUlucHV0UGFnZVVwOworZXh0ZXJuIE5T
U3RyaW5nICpjb25zdCBVSUtleUlucHV0UGFnZURvd247CisKIFdURl9FWFRFUk5fQ19FTkQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CShyZXZpc2lvbiAxODU5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIEBpbnRlcmZh
Y2UgVUlTY3JvbGxWaWV3IChVSVNjcm9sbFZpZXdJbnQKIC0gKHZvaWQpX2FkanVzdEZvckF1dG9t
YXRpY0tleWJvYXJkSW5mbzooTlNEaWN0aW9uYXJ5KilpbmZvIGFuaW1hdGVkOihCT09MKWFuaW1h
dGVkIGxhc3RBZGp1c3RtZW50OihDR0Zsb2F0KilsYXN0QWRqdXN0bWVudDsKIC0gKEJPT0wpX2lz
U2Nyb2xsaW5nVG9Ub3A7CiAtIChCT09MKV9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbjsKKy0g
KENHUG9pbnQpX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0OwogQGVuZAogCiBAaW50ZXJmYWNlIFVJUGVy
aXBoZXJhbEhvc3QoVUlLaXRJbnRlcm5hbCkKQEAgLTExOTQsNiArMTE5NSwxOCBAQCAtIChCT09M
KV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
Ky0gKHZvaWQpX3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldAorewor
ICAgIENHUG9pbnQgY3VycmVudE9mZnNldCA9IChbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Ny
b2xsXSkgPyBbX3Njcm9sbFZpZXcgX2FuaW1hdGVkVGFyZ2V0T2Zmc2V0XSA6IFtfc2Nyb2xsVmll
dyBjb250ZW50T2Zmc2V0XTsKKworICAgIENHUG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRlbnRP
ZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKF9zY3JvbGxWaWV3LmdldCgpLCBjdXJyZW50T2Zmc2V0
ICsgb2Zmc2V0KTsKKyAgICAKKyAgICBpZiAoIUNHUG9pbnRFcXVhbFRvUG9pbnQoYm91bmRlZE9m
ZnNldCwgY3VycmVudE9mZnNldCkpIHsKKyAgICAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRa
b29tT3JTY3JvbGxdOworICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpib3Vu
ZGVkT2Zmc2V0IGFuaW1hdGVkOllFU107CisgICAgfQorfQorCiAtICh2b2lkKV96b29tT3V0V2l0
aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0
ZWQKIHsKICAgICBbc2VsZiBfem9vbVRvUG9pbnQ6b3JpZ2luIGF0U2NhbGU6W19zY3JvbGxWaWV3
IG1pbmltdW1ab29tU2NhbGVdIGFuaW1hdGVkOmFuaW1hdGVkXTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJ
KHJldmlzaW9uIDE4NTk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBzdHJ1
Y3QgUHJpbnRJbmZvOwogCiAtICh2b2lkKV9zY3JvbGxUb0NvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6
OkZsb2F0UG9pbnQpY29udGVudE9mZnNldDsKIC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2ViQ29y
ZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdp
biBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0g
KHZvaWQpX3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNldDsKIC0gKHZv
aWQpX3pvb21Ub0ZvY3VzUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KWZvY3VzZWRFbGVtZW50UmVj
dCBzZWxlY3Rpb25SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3Qpc2VsZWN0aW9uUmVjdEluRG9jdW1l
bnRDb29yZGluYXRlcyBmb250U2l6ZTooZmxvYXQpZm9udFNpemUgbWluaW11bVNjYWxlOihkb3Vi
bGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBhbGxvd1Nj
YWxpbmc6KEJPT0wpYWxsb3dTY2FsaW5nIGZvcmNlU2Nyb2xsOihCT09MKWZvcmNlU2Nyb2xsOwog
LSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgd2l0aE9y
aWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVjdDooQk9PTClmaXRF
bnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6
KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdCltaW5pbXVt
U2Nyb2xsRGlzdGFuY2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooV2ViQ29yZTo6Rmxv
YXRQb2ludClvcmlnaW4gYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQkocmV2aXNpb24gMTg1OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDEyICs1OSwx
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRmxvYXRRdWFkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9u
UmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEK
ICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZUlPUy5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCitAaW50ZXJmYWNlIFVJRXZlbnQoVUlFdmVudEludGVybmFsKQorQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CitA
ZW5kCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtMTQyMSw2ICsxNDI2LDkgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0
aW9uIHdpdAogewogICAgIEJPT0wgaGFzV2ViU2VsZWN0aW9uID0gX3dlYlNlbGVjdGlvbkFzc2lz
dGFudCAmJiAhQ0dSZWN0SXNFbXB0eShfd2ViU2VsZWN0aW9uQXNzaXN0YW50LmdldCgpLnNlbGVj
dGlvbkZyYW1lKTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9hcnJvd0tleTopKQor
ICAgICAgICByZXR1cm4gW3NlbGYgaXNGaXJzdFJlc3BvbmRlcl07CisgICAgICAgIAogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKF9zaG93VGV4dFN0eWxlT3B0aW9uczopKQogICAgICAgICBy
ZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgX3Bh
Z2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSAmJiAhX3Nob3dpbmdUZXh0U3R5bGVP
cHRpb25zOwogICAgIGlmIChfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnMpCkBAIC0yMTQyLDggKzIx
NTAsNDQgQEAgLSAodm9pZClhY2Nlc3NvcnlEb25lCiAKIC0gKE5TQXJyYXkgKilrZXlDb21tYW5k
cwogewotICAgIHJldHVybiBAW1tVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0
IiBtb2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfbmV4dEFjY2Vzc29yeVRhYjopXSwK
LSAgICAgICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9k
aWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJldkFjY2Vz
c29yeVRhYjopXV07CisgICAgc3RhdGljIE5TQXJyYXkqIG5vbkVkaXRhYmxlS2V5Q29tbWFuZHMg
PSBbQFsKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1
dFVwQXJyb3cgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX2Fycm93S2V5OildLAor
ICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpVSUtleUlucHV0RG93bkFy
cm93IG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAg
ICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dExlZnRBcnJvdyBt
b2RpZmllckZsYWdzOjAgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgW1VJ
S2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRSaWdodEFycm93IG1vZGlm
aWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICAKKyAgICAg
ICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dFVwQXJyb3cgbW9k
aWZpZXJGbGFnczpVSUtleU1vZGlmaWVyQ29tbWFuZCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tl
eTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1
dERvd25BcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJDb21tYW5kIGFjdGlvbjpAc2Vs
ZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29t
bWFuZFdpdGhJbnB1dDpVSUtleUlucHV0VXBBcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZp
ZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlDb21t
YW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERvd25BcnJvdyBtb2RpZmllckZsYWdz
OlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAg
ICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dExlZnRBcnJvdyBt
b2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tl
eTopXSwKKyAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1
dFJpZ2h0QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxl
Y3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21t
YW5kV2l0aElucHV0OlVJS2V5SW5wdXRVcEFycm93IG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmll
ckFsdGVybmF0ZSBhY3Rpb246QHNlbGVjdG9yKF9hcnJvd0tleTopXSwKKyAgICAgICBbVUlLZXlD
b21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6VUlLZXlJbnB1dERvd25BcnJvdyBtb2RpZmllckZs
YWdzOlVJS2V5TW9kaWZpZXJBbHRlcm5hdGUgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0s
CisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OlVJS2V5SW5wdXRMZWZ0
QXJyb3cgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyQWx0ZXJuYXRlIGFjdGlvbjpAc2VsZWN0
b3IoX2Fycm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1
dDpVSUtleUlucHV0UmlnaHRBcnJvdyBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJBbHRlcm5h
dGUgYWN0aW9uOkBzZWxlY3RvcihfYXJyb3dLZXk6KV0sCisgICAgICAgCisgICAgICAgW1VJS2V5
Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiICIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpA
c2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdp
dGhJbnB1dDpAIiAiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2Vs
ZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29t
bWFuZFdpdGhJbnB1dDpVSUtleUlucHV0UGFnZURvd24gbW9kaWZpZXJGbGFnczowIGFjdGlvbjpA
c2VsZWN0b3IoX2Fycm93S2V5OildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdp
dGhJbnB1dDpVSUtleUlucHV0UGFnZURvd24gbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0
b3IoX2Fycm93S2V5OildLAorICAgIF0gcmV0YWluXTsKKworICAgIHN0YXRpYyBOU0FycmF5KiBl
ZGl0YWJsZUtleUNvbW1hbmRzID0gW0BbCisgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5k
V2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNj
ZXNzb3J5VGFiOildLAorICAgICAgIFtVSUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpA
Ilx0IiBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZpZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9w
cmV2QWNjZXNzb3J5VGFiOildCisgICAgXSByZXRhaW5dOworICAgIAorICAgIHJldHVybiAoX3Bh
Z2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpID8gZWRpdGFibGVLZXlDb21tYW5k
cyA6IG5vbkVkaXRhYmxlS2V5Q29tbWFuZHM7Cit9CisKKy0gKHZvaWQpX2Fycm93S2V5OihpZClz
ZW5kZXIKK3sKKyAgICBVSUtleUNvbW1hbmQqIGNvbW1hbmQgPSBzZW5kZXI7CisgICAgW3NlbGYg
aGFuZGxlS2V5RXZlbnQ6Y29tbWFuZC5fdHJpZ2dlcmluZ0V2ZW50XTsKIH0KIAogLSAodm9pZClf
bmV4dEFjY2Vzc29yeVRhYjooaWQpc2VuZGVyCkBAIC0yNTQxLDYgKzI1ODUsMzIgQEAgLSAoQk9P
TClyZXF1aXJlc0tleUV2ZW50cwogICAgIHJldHVybiBZRVM7CiB9CiAKKy0gKHZvaWQpX2hhbmRs
ZUtleVVJRXZlbnQ6KDo6VUlFdmVudCAqKWV2ZW50Cit7CisgICAgLy8gV2Ugb25seSB3YW50IHRv
IGhhbmRsZSBrZXkgZXZlbnQgZnJvbSB0aGUgaGFyZHdhcmUga2V5Ym9hcmQgd2hlbiB3ZSBhcmUK
KyAgICAvLyBmaXJzdCByZXNwb25kZXIgYW5kIHdlIGFyZSBub3QgaW50ZXJhY3Rpbmcgd2l0aCBl
ZGl0YWJsZSBjb250ZW50LgorICAgIGlmIChbc2VsZiBpc0ZpcnN0UmVzcG9uZGVyXSAmJiBldmVu
dC5faGlkRXZlbnQgJiYgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQor
ICAgICAgICBbc2VsZiBoYW5kbGVLZXlFdmVudDpldmVudF07CisKKyAgICBbc3VwZXIgX2hhbmRs
ZUtleVVJRXZlbnQ6ZXZlbnRdOworfQorCistICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZl
bnQgKilldmVudAoreworICAgIDo6V2ViRXZlbnQgKndlYkV2ZW50ID0gW1tbOjpXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24pID8gV2ViRXZlbnRL
ZXlEb3duIDogV2ViRXZlbnRLZXlVcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6ZXZlbnQudGltZXN0YW1wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyczpldmVudC5fbW9kaWZpZWRJbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6ZXZlbnQuX3VubW9kaWZp
ZWRJbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllcnM6ZXZlbnQuX21vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVwZWF0aW5nOihl
dmVudC5faW5wdXRGbGFncyAmIGtVSUtleWJvYXJkSW5wdXRSZXBlYXQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGbGFnczpl
dmVudC5faW5wdXRGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6MAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUYWJLZXk6W2V2ZW50Ll9tb2Rp
ZmllZElucHV0IGlzRXF1YWxUb1N0cmluZzpAIlx0Il0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyU2V0OldlYkV2ZW50Q2hh
cmFjdGVyU2V0VW5pY29kZV0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIFtzZWxmIGhhbmRsZUtl
eVdlYkV2ZW50OndlYkV2ZW50XTsgICAgCit9CisKIC0gKHZvaWQpaGFuZGxlS2V5V2ViRXZlbnQ6
KFdlYklPU0V2ZW50ICopdGhlRXZlbnQKIHsKICAgICBfcGFnZS0+aGFuZGxlS2V5Ym9hcmRFdmVu
dChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHRoZUV2ZW50KSk7CkBAIC0yNTYzLDg4ICsyNjMzLDk2
IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQga1dlYkJhY2tzcGFjZUtleSA9IDB4MDAwODsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQga1dlYlJldHVybktleSA9IDB4MDAwRDsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQga1dlYkRlbGV0ZUtleSA9IDB4MDA3RjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
a1dlYkxlZnRBcnJvd0tleSA9IDB4MDBBQzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dl
YlVwQXJyb3dLZXkgPSAweDAwQUQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJSaWdo
dEFycm93S2V5ID0gMHgwMEFFOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRG93bkFy
cm93S2V5ID0gMHgwMEFGOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRGVsZXRlRm9y
d2FyZEtleSA9IDB4RjcyODsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5
ID0gMHgyMDsKIAogICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFi
bGUgJiYgZXZlbnQuaXNUYWJLZXkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIEJPT0wgc2hp
ZnQgPSBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1NoaWZ0OworICAgIEJP
T0wgY29tbWFuZCA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFu
ZDsKKyAgICBCT09MIG9wdGlvbiA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdN
YXNrQWx0ZXJuYXRlOworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
PSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICBCT09MIHNob3VsZFNj
cm9sbCA9IFlFUzsKKyAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldDsKKworICAgIGlmIChbY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0TGVmdEFy
cm93XSkKKyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFgoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGlu
ZVN0ZXAoKSk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0Vx
dWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKSB7CisgICAgICAgIGlmIChvcHRpb24pCisg
ICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WSgtX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVj
dCgpLmhlaWdodCgpKTsKKyAgICAgICAgZWxzZSBpZiAoY29tbWFuZCkKKyAgICAgICAgICAgIHNj
cm9sbE9mZnNldC5zZXRZKC1bc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGlu
ZVN0ZXAoKSk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlz
RXF1YWxUb1N0cmluZzpVSUtleUlucHV0UmlnaHRBcnJvd10pCisgICAgICAgICAgICAgICBzY3Jv
bGxPZmZzZXQuc2V0WChTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5w
dXREb3duQXJyb3ddKSB7CisgICAgICAgIGlmIChvcHRpb24pCisgICAgICAgICAgICBzY3JvbGxP
ZmZzZXQuc2V0WShfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpOworICAg
ICAgICBlbHNlIGlmIChjb21tYW5kKQorICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoW3Nl
bGYgYm91bmRzXS5zaXplLmhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjcm9s
bE9mZnNldC5zZXRZKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlu
cHV0UGFnZURvd25dKQorICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShfcGFnZS0+dW5vYnNjdXJl
ZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICBz
Y3JvbGxPZmZzZXQuc2V0WSgtX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgp
KTsKKyAgICBlbHNlCisgICAgICAgIHNob3VsZFNjcm9sbCA9IE5POwogCi0gICAgc3dpdGNoIChl
dmVudC5jaGFyYWN0ZXJTZXQpIHsKLSAgICBjYXNlIFdlYkV2ZW50Q2hhcmFjdGVyU2V0U3ltYm9s
OiB7Ci0gICAgICAgIFN0cmluZyBjb21tYW5kOwotICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVy
cyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgICAgICBpZiAoW2No
YXJhY3RlcnMgbGVuZ3RoXSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN3aXRj
aCAoW2NoYXJhY3RlcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAgICBjYXNlIGtXZWJM
ZWZ0QXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBBU0NJSUxpdGVyYWwo
Im1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikgOiAgQVNDSUlMaXRlcmFsKCJtb3ZlTGVmdCIp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKHNob3VsZFNjcm9sbCkgeworICAgICAgICBb
X3dlYlZpZXcgX3Njcm9sbEJ5T2Zmc2V0OnNjcm9sbE9mZnNldF07CisgICAgICAgIHJldHVybiBZ
RVM7CisgICAgfQogCi0gICAgICAgIGNhc2Uga1dlYlVwQXJyb3dLZXk6Ci0gICAgICAgICAgICBj
b21tYW5kID0gc2hpZnQgPyBBU0NJSUxpdGVyYWwoIm1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIp
IDogIEFTQ0lJTGl0ZXJhbCgibW92ZVVwIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBVSUtl
eWJvYXJkSW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2VdOwor
ICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gW2V2ZW50IGNoYXJhY3RlcnNdOworICAgIAorICAg
IGlmICghW2NoYXJhY3RlcnMgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAg
IGNhc2Uga1dlYlJpZ2h0QXJyb3dLZXk6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2hpZnQgPyBB
U0NJSUxpdGVyYWwoIm1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpIDogIEFTQ0lJTGl0ZXJh
bCgibW92ZVJpZ2h0Iik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKFtjaGFyYWN0
ZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKKyAgICBjYXNlIGtXZWJCYWNrc3BhY2VLZXk6Cisg
ICAgY2FzZSBrV2ViRGVsZXRlS2V5OgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZy
b21JbnB1dCBvbmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MKKyAgICAg
ICAgaWYgKFtrZXlib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRlbGV0ZUZyb21J
bnB1dFdpdGhGbGFnczopXSkKKyAgICAgICAgICAgIFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRX
aXRoRmxhZ3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFtrZXlib2FyZCBkZWxldGVGcm9tSW5wdXRdOworICAgICAgICByZXR1cm4gWUVTOwogCi0gICAg
ICAgIGNhc2Uga1dlYkRvd25BcnJvd0tleToKLSAgICAgICAgICAgIGNvbW1hbmQgPSBzaGlmdCA/
IEFTQ0lJTGl0ZXJhbCgibW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKSA6ICBBU0NJSUxpdGVy
YWwoIm1vdmVEb3duIik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXZWJTcGFjZUtl
eToKKyAgICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkg
eworICAgICAgICAgICAgW193ZWJWaWV3IF9zY3JvbGxCeU9mZnNldDpGbG9hdFBvaW50KDAsIHNo
aWZ0ID8gLV9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSA6IF9wYWdlLT51
bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSldOworICAgICAgICAgICAgcmV0dXJuIFlF
UzsKICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbW1hbmQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmQpOworICAgICAgICBpZiAoaXND
aGFyRXZlbnQpIHsKKyAgICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5j
aGFyYWN0ZXJzIHdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsKICAgICAgICAgICAgIHJl
dHVybiBZRVM7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgV2Vi
RXZlbnRDaGFyYWN0ZXJTZXRBU0NJSToKLSAgICBjYXNlIFdlYkV2ZW50Q2hhcmFjdGVyU2V0VW5p
Y29kZTogewotICAgICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IFtldmVudCBjaGFyYWN0ZXJz
XTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXJzIGxlbmd0aF0gPT0gMCkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBVSUtleWJvYXJkSW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwg
c2hhcmVkSW5zdGFuY2VdOwotICAgICAgICBzd2l0Y2ggKFtjaGFyYWN0ZXJzIGNoYXJhY3RlckF0
SW5kZXg6MF0pIHsKLSAgICAgICAgY2FzZSBrV2ViQmFja3NwYWNlS2V5OgotICAgICAgICBjYXNl
IGtXZWJEZWxldGVLZXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGRlbGV0ZUZyb21J
bnB1dCBvbmNlIFVJS2l0IGFkb3B0cyBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3MKLSAgICAgICAg
ICAgIGlmIChba2V5Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkZWxldGVGcm9t
SW5wdXRXaXRoRmxhZ3M6KV0pCi0gICAgICAgICAgICAgICAgW2tleWJvYXJkIGRlbGV0ZUZyb21J
bnB1dFdpdGhGbGFnczpldmVudC5rZXlib2FyZEZsYWdzXTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBba2V5Ym9hcmQgZGVsZXRlRnJvbUlucHV0XTsKKworICAgIGNhc2Uga1dl
YkVudGVyS2V5OgorICAgIGNhc2Uga1dlYlJldHVybktleToKKyAgICAgICAgaWYgKGlzQ2hhckV2
ZW50KSB7CisgICAgICAgICAgICAvLyBNYXAgXHIgZnJvbSBIVyBrZXlib2FyZCB0byBcbiB0byBt
YXRjaCB0aGUgYmVoYXZpb3Igb2YgdGhlIHNvZnQga2V5Ym9hcmQuCisgICAgICAgICAgICBba2V5
Ym9hcmQgYWRkSW5wdXRTdHJpbmc6QCJcbiIgd2l0aEZsYWdzOjBdOwogICAgICAgICAgICAgcmV0
dXJuIFlFUzsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIGtXZWJF
bnRlcktleToKLSAgICAgICAgY2FzZSBrV2ViUmV0dXJuS2V5OgotICAgICAgICAgICAgaWYgKGlz
Q2hhckV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFwIFxyIGZyb20gSFcga2V5Ym9hcmQg
dG8gXG4gdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBzb2Z0IGtleWJvYXJkLgotICAgICAg
ICAgICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpAIlxuIiB3aXRoRmxhZ3M6MF07Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBOTzsKKyAgICBjYXNlIGtXZWJEZWxldGVGb3J3YXJkS2V5OgorICAgICAgICBfcGFnZS0+
ZXhlY3V0ZUVkaXRDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiZGVsZXRlRm9yd2FyZCIpKTsKKyAgICAg
ICAgcmV0dXJuIFlFUzsKIAotICAgICAgICBjYXNlIGtXZWJEZWxldGVGb3J3YXJkS2V5OgotICAg
ICAgICAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChBU0NJSUxpdGVyYWwoImRlbGV0ZUZv
cndhcmQiKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGlzQ2hhckV2ZW50KSB7CisgICAg
ICAgICAgICBba2V5Ym9hcmQgYWRkSW5wdXRTdHJpbmc6ZXZlbnQuY2hhcmFjdGVycyB3aXRoRmxh
Z3M6ZXZlbnQua2V5Ym9hcmRGbGFnc107CiAgICAgICAgICAgICByZXR1cm4gWUVTOwotCi0gICAg
ICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIGlmIChpc0NoYXJFdmVudCkgewotICAgICAgICAg
ICAgICAgIFtrZXlib2FyZCBhZGRJbnB1dFN0cmluZzpldmVudC5jaGFyYWN0ZXJzIHdpdGhGbGFn
czpldmVudC5rZXlib2FyZEZsYWdzXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICB9Ci0gICAgfQogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE5POwotICAg
IH0KIAogICAgIHJldHVybiBOTzsKIH0K
</data>
<flag name="review"
          id="280678"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>