<?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>208661</bug_id>
          
          <creation_ts>2020-03-05 12:53:48 -0800</creation_ts>
          <short_desc>Add support for inserting and removing a text placeholder</short_desc>
          <delta_ts>2020-03-06 19:04:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208749</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=208750</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=208751</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208745</blocked>
    
    <blocked>208747</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626245</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 12:53:48 -0800</bug_when>
    <thetext>Add support for inserting and removing a text placeholder. A text placeholder is an element that occupies space in a line (or multiple lines), but does not have a visual appearance. One application of a text placeholder is to show the iOS dictation placeholder, which is shown while the system is waiting for dictation results. This bug is about implementing the infrastructure to support that, but it does not implement the requisite UIKit delegate callbacks to actually show the dictation landing UI. I will do that in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626246</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 12:53:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/59371073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626249</commentid>
    <comment_count>2</comment_count>
      <attachid>392611</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 12:55:38 -0800</bug_when>
    <thetext>Created attachment 392611
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626269</commentid>
    <comment_count>3</comment_count>
      <attachid>392616</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 13:30:47 -0800</bug_when>
    <thetext>Created attachment 392616
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626275</commentid>
    <comment_count>4</comment_count>
      <attachid>392618</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 13:46:37 -0800</bug_when>
    <thetext>Created attachment 392618
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626279</commentid>
    <comment_count>5</comment_count>
      <attachid>392618</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 13:58:13 -0800</bug_when>
    <thetext>Comment on attachment 392618
For the bots

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

&gt; Source/WebCore/editing/Editor.h:648
&gt; +    RefPtr&lt;TextPlaceholderElement&gt; m_textPlaceholderElement;

This is unused. Remove.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:56
&gt; +        if (auto* shadowHost = parentOfInsertedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))

Maybe this should use document().ancestorNodeInThisScope(parentOfInsertedTree)? &lt;-- that covers nested shadow host elements to be future proof.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:67
&gt; +    if (auto* shadowHost = oldParentOfRemovedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))

Maybe this should use document().ancestorNodeInThisScope(oldParentOfRemovedTree)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626281</commentid>
    <comment_count>6</comment_count>
      <attachid>392618</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 14:02:50 -0800</bug_when>
    <thetext>Comment on attachment 392618
For the bots

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

&gt;&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:56
&gt;&gt; +        if (auto* shadowHost = parentOfInsertedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))
&gt; 
&gt; Maybe this should use document().ancestorNodeInThisScope(parentOfInsertedTree)? &lt;-- that covers nested shadow host elements to be future proof.

Actually, ^^^ that wouldn&apos;t be correct. What we want is the enclosing HTMLTextFormControlElement (the first one we find walking up our parents).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626282</commentid>
    <comment_count>7</comment_count>
      <attachid>392618</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 14:12:22 -0800</bug_when>
    <thetext>Comment on attachment 392618
For the bots

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

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:54
&gt; +    HTMLDivElement::insertedIntoAncestor(insertionType, parentOfInsertedTree);

Move this to the end.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:64
&gt; +    HTMLDivElement::removedFromAncestor(removalType, oldParentOfRemovedTree);

Move this to the end and don&apos;t use an early return below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626284</commentid>
    <comment_count>8</comment_count>
      <attachid>392618</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 14:20:31 -0800</bug_when>
    <thetext>Comment on attachment 392618
For the bots

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

&gt;&gt;&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:56
&gt;&gt;&gt; +        if (auto* shadowHost = parentOfInsertedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))
&gt;&gt; 
&gt;&gt; Maybe this should use document().ancestorNodeInThisScope(parentOfInsertedTree)? &lt;-- that covers nested shadow host elements to be future proof.
&gt; 
&gt; Actually, ^^^ that wouldn&apos;t be correct. What we want is the enclosing HTMLTextFormControlElement (the first one we find walking up our parents).

Wait, can you really have nested shadow hosts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626288</commentid>
    <comment_count>9</comment_count>
      <attachid>392624</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 14:22:24 -0800</bug_when>
    <thetext>Created attachment 392624
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626339</commentid>
    <comment_count>10</comment_count>
      <attachid>392637</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-05 15:42:15 -0800</bug_when>
    <thetext>Created attachment 392637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626741</commentid>
    <comment_count>11</comment_count>
      <attachid>392637</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 10:43:11 -0800</bug_when>
    <thetext>Comment on attachment 392637
Patch

I&apos;m concerned that this patch add some web-exposed behavior changes. It mutates the DOM, and adds a pseudo class that isn&apos;t hidden from the web. Inserting an element will have layout side-effects (akin to those for phone number linkification) which are known to trigger rendering bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626743</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 10:55:01 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Comment on attachment 392637 [details]
&gt; Patch
&gt; 
&gt; I&apos;m concerned that this patch add some web-exposed behavior changes. It
&gt; mutates the DOM, and adds a pseudo class that isn&apos;t hidden from the web.
&gt; Inserting an element will have layout side-effects (akin to those for phone
&gt; number linkification) which are known to trigger rendering bugs.

How can I move forward with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626744</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 10:55:32 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #12)
&gt; (In reply to Simon Fraser (smfr) from comment #11)
&gt; &gt; Comment on attachment 392637 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I&apos;m concerned that this patch add some web-exposed behavior changes. It
&gt; &gt; mutates the DOM, and adds a pseudo class that isn&apos;t hidden from the web.
&gt; &gt; Inserting an element will have layout side-effects (akin to those for phone
&gt; &gt; number linkification) which are known to trigger rendering bugs.
&gt; 
&gt; How can I move forward with this patch?

FYI, the point of this feature is to have layout changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626747</commentid>
    <comment_count>14</comment_count>
      <attachid>392637</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 11:01:29 -0800</bug_when>
    <thetext>Comment on attachment 392637
Patch

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

r- to hide the new pseudo from the web. Editing people should review more.

&gt; Source/WebCore/css/html.css:701
&gt; +::-webkit-text-placeholder {

Please call this ::-apple-text-placeholder and make it so that it&apos;s only valid inside a UA stylesheet. It should not be possible to apply this pseudo element from web content.

&gt; Source/WebCore/editing/Editor.cpp:3313
&gt; +RefPtr&lt;TextPlaceholderElement&gt; Editor::insertTextPlaceholder(const IntSize&amp; size)

Is size dimensions in pixels? Maybe supplying a LengthSize would be more appropriate? is there any need to match the font size of the surrounding text?

&gt; Source/WebCore/editing/Editor.cpp:3320
&gt; +    TypingCommand::deleteSelection(document);

Should this really be a replaceSelection operation?

&gt; Source/WebCore/editing/Editor.cpp:3325
&gt; +    // To match the Legacy WebKit implementation, set the text insertion point to be after the placeholder.

Do we really need to match legacy webkit?

&gt; Source/WebCore/editing/Editor.cpp:3342
&gt; +    auto savedRootEditableElement = placeholder.rootEditableElement();

rootEditableElement() doesn&apos;t seem to return a RefPtr&lt;&gt; (it should).

&gt; Source/WebCore/editing/Editor.cpp:3343
&gt; +    auto* savedParentNode = placeholder.parentNode();

RefPtr

&gt; Source/WebCore/editing/Editor.cpp:3350
&gt; +    // To match the Legacy WebKit implementation, set the text insertion point to be before where the placeholder use to be.

Do we have to?

&gt; Source/WebCore/platform/ios/SelectionRect.h:38
&gt; -    WEBCORE_EXPORT explicit SelectionRect(const IntRect&amp;, bool isHorizontal, int columnNumber);
&gt; +    WEBCORE_EXPORT explicit SelectionRect(const IntRect&amp;, bool isHorizontal, int pageNumber);

Is this related?

&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.h:38
&gt; +- (const WebCore::ElementContext&amp;)elementContext;

@property?

&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.mm:53
&gt; +    return @[ [[[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect] autorelease] ];

What coordinate space is _elementContext.boundingRect? Does that match UITextSelectionRect coordinates? Does this work in subframes and overflow:scroll?

&gt; LayoutTests/fast/text-placeholder/insert-and-remove-into-text-field-expected.html:4
&gt; +&lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1.0&quot;&gt;

If you want viewport behavior you need to add &lt;!-- webkit-test-runner [ useFlexibleViewport=true ] --&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626759</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 11:13:57 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)
&gt; Comment on attachment 392637 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392637&amp;action=review
&gt; 
&gt; r- to hide the new pseudo from the web. Editing people should review more.
&gt; 
&gt; &gt; Source/WebCore/css/html.css:701
&gt; &gt; +::-webkit-text-placeholder {
&gt; 
&gt; Please call this ::-apple-text-placeholder and make it so that it&apos;s only
&gt; valid inside a UA stylesheet. It should not be possible to apply this pseudo
&gt; element from web content.

See CSSParserMode::UASheetMode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626908</commentid>
    <comment_count>16</comment_count>
      <attachid>392637</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 15:22:53 -0800</bug_when>
    <thetext>Comment on attachment 392637
Patch

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

&gt;&gt;&gt; Source/WebCore/css/html.css:701
&gt;&gt;&gt; +::-webkit-text-placeholder {
&gt;&gt; 
&gt;&gt; Please call this ::-apple-text-placeholder and make it so that it&apos;s only valid inside a UA stylesheet. It should not be possible to apply this pseudo element from web content.
&gt; 
&gt; See CSSParserMode::UASheetMode

For now, I decided to remove this pseudo and hardcode the styles.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3313
&gt;&gt; +RefPtr&lt;TextPlaceholderElement&gt; Editor::insertTextPlaceholder(const IntSize&amp; size)
&gt; 
&gt; Is size dimensions in pixels? Maybe supplying a LengthSize would be more appropriate? is there any need to match the font size of the surrounding text?

Yes, it&apos;s in pixels. LengthSize does not seem appropriate because this feature only needs to be pixel aware.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3320
&gt;&gt; +    TypingCommand::deleteSelection(document);
&gt; 
&gt; Should this really be a replaceSelection operation?

🤷‍♂️ I wanted to initially and tried, but there looks to be a bug in replaceSelectionWithFragment() as it deletes the first character if there is a caret selection and the caret is at a word start boundary. I will add a FIXME and file a bug shortly to fix this up. For now, I matched the Legacy WebKit impl and delete the selection.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3325
&gt;&gt; +    // To match the Legacy WebKit implementation, set the text insertion point to be after the placeholder.
&gt; 
&gt; Do we really need to match legacy webkit?

Due to time limitations it is easier for me to match Legacy WebKit. Otherwise, the impls will be asymmetric wrt to this feature and I would have to update it to have a good user experience.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3342
&gt;&gt; +    auto savedRootEditableElement = placeholder.rootEditableElement();
&gt; 
&gt; rootEditableElement() doesn&apos;t seem to return a RefPtr&lt;&gt; (it should).

OK

&gt;&gt; Source/WebCore/editing/Editor.cpp:3343
&gt;&gt; +    auto* savedParentNode = placeholder.parentNode();
&gt; 
&gt; RefPtr

OK

&gt;&gt; Source/WebCore/editing/Editor.cpp:3350
&gt;&gt; +    // To match the Legacy WebKit implementation, set the text insertion point to be before where the placeholder use to be.
&gt; 
&gt; Do we have to?

Due to time limitations it is easier for me to match Legacy WebKit. Otherwise, the impls will be asymmetric wrt to this feature and I would have to update it to have a good user experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626916</commentid>
    <comment_count>17</comment_count>
      <attachid>392789</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 15:36:56 -0800</bug_when>
    <thetext>Created attachment 392789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626921</commentid>
    <comment_count>18</comment_count>
      <attachid>392790</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 15:40:08 -0800</bug_when>
    <thetext>Created attachment 392790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626933</commentid>
    <comment_count>19</comment_count>
      <attachid>392637</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 15:53:29 -0800</bug_when>
    <thetext>Comment on attachment 392637
Patch

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

&gt;&gt;&gt; Source/WebCore/editing/Editor.cpp:3320
&gt;&gt;&gt; +    TypingCommand::deleteSelection(document);
&gt;&gt; 
&gt;&gt; Should this really be a replaceSelection operation?
&gt; 
&gt; 🤷‍♂️ I wanted to initially and tried, but there looks to be a bug in replaceSelectionWithFragment() as it deletes the first character if there is a caret selection and the caret is at a word start boundary. I will add a FIXME and file a bug shortly to fix this up. For now, I matched the Legacy WebKit impl and delete the selection.

This call to TypingCommand would mean that the deletion will be a part of the open typing command.
Is that really expected? If not, call deleteSelectionWithSmartDelete instead.

&gt; Source/WebCore/editing/Editor.cpp:3323
&gt; +    m_frame.selection().toNormalizedRange()-&gt;insertNode(placeholder.copyRef());

There is no guarantee that toNormalizedRange() would be not null here.
Also, this would mean that this operation is not undoable even though the deletion is.
That doesn&apos;t make much sense. Either all of this should be undoable, or none should be.
Note that scripts can trigger undo/redo at any moment via execCommand(&apos;undo&apos;/&apos;redo&apos;~)
so it&apos;s not sufficient that UIKit / AppKit wouldn&apos;t try to undo / redo in certain orders.

&gt; Source/WebCore/editing/Editor.cpp:3329
&gt; +    m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);

It makes zero sense that the deletion is a part of the open typing command but inserting of this element isn&apos;t.

Also, just do specify that this is user-triggered selection change.
m_frame.selection().setSelection(VisibleSelection(positionBeforeNode(placeholder), positionAfterNode(placeholder), FrameSelection::defaultSetSelectionOptions(UserTriggered)));

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:54
&gt; +    if (insertionType.connectedToDocument) {

This check isn&apos;t semantically right even if it worked for the test cases we have.
Conceptually, we want to check this condition whenever this elements shadow root changes
so we should be checking treeScopeChanged instead.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:63
&gt; +    if (removalType.disconnectedFromDocument) {

Ditto about checking treeScopeChanged instead.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:40
&gt; +    // Element

I don&apos;t think this comment is useful.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:43
&gt; +    // Node

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626935</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 15:54:31 -0800</bug_when>
    <thetext>It&apos;s unclear to me how this feature is supposed to interact with user or script initiated undo &amp; redo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626938</commentid>
    <comment_count>21</comment_count>
      <attachid>392790</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 15:59:27 -0800</bug_when>
    <thetext>Comment on attachment 392790
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3322
&gt; +    // FIXME: Write in terms of replaceSelectionWithFragment(). As of 03/06/2020, using
&gt; +    // replaceSelectionWithFragment() when there is a caret selection at a word start
&gt; +    // deletes the first character in the word.

Rather than giving dates which will get you laughed at two years from now, file a bug and reference it.

&gt; Source/WebCore/editing/Editor.cpp:3351
&gt; +    placeholder.remove();

This is pretty scary. This function has a TextPlaceholderElement&amp; so we don&apos;t know if anyone is holding a ref to it, so remove() might cause it to be destroyed.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:47
&gt; +    // FIXME: Move to User Agent stylesheet.

File and reference a bug.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7448
&gt; +    // FIXME: Implement support for willInsertText.

This only means something to you. File a bug and reference it.

&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.h:38
&gt; +- (const WebCore::ElementContext&amp;)elementContext;

@property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626955</commentid>
    <comment_count>22</comment_count>
      <attachid>392790</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 16:23:07 -0800</bug_when>
    <thetext>Comment on attachment 392790
Patch

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:3322
&gt;&gt; +    // deletes the first character in the word.
&gt; 
&gt; Rather than giving dates which will get you laughed at two years from now, file a bug and reference it.

Filed bug #208744.

&gt;&gt; Source/WebCore/editing/Editor.cpp:3351
&gt;&gt; +    placeholder.remove();
&gt; 
&gt; This is pretty scary. This function has a TextPlaceholderElement&amp; so we don&apos;t know if anyone is holding a ref to it, so remove() might cause it to be destroyed.

The caller has to hold a ref to it. The only way for the caller to have a TextPlaceholderElement is to have previously called insertTextPlaceholder(), which returns a RefPtr.

&gt;&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:47
&gt;&gt; +    // FIXME: Move to User Agent stylesheet.
&gt; 
&gt; File and reference a bug.

Filed bug #208745.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7448
&gt;&gt; +    // FIXME: Implement support for willInsertText.
&gt; 
&gt; This only means something to you. File a bug and reference it.

Filed bug #208747.

&gt;&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.h:38
&gt;&gt; +- (const WebCore::ElementContext&amp;)elementContext;
&gt; 
&gt; @property?

I didn&apos;t know you could do it, but you can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626964</commentid>
    <comment_count>23</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 16:30:22 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #20)
&gt; It&apos;s unclear to me how this feature is supposed to interact with user or
&gt; script initiated undo &amp; redo.

The placeholder itself isn&apos;t undo/redo-able. But any range selection that was deleted when the placeholder was inserted is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626975</commentid>
    <comment_count>24</comment_count>
      <attachid>392807</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 16:44:16 -0800</bug_when>
    <thetext>Created attachment 392807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626977</commentid>
    <comment_count>25</comment_count>
      <attachid>392807</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 16:45:54 -0800</bug_when>
    <thetext>Comment on attachment 392807
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7448
&gt; +        placeholderWithWebViewBoundplaceholderToUseingRect.boundingRect = [strongSelf convertRect:placeholderWithWebViewBoundingRect.boundingRect fromView:[strongSelf webView]];

yikes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626980</commentid>
    <comment_count>26</comment_count>
      <attachid>392810</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 16:49:10 -0800</bug_when>
    <thetext>Created attachment 392810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626983</commentid>
    <comment_count>27</comment_count>
      <attachid>392807</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 16:55:33 -0800</bug_when>
    <thetext>Comment on attachment 392807
Patch

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

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:47
&gt; +    // FIXME: Move to User Agent stylesheet. See &lt;https://bugs.webkit.org/show_bug.cgi?id=208745&gt;.

You can say webkit.org/b/208745

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7448
&gt; +        placeholderWithWebViewBoundplaceholderToUseingRect.boundingRect = [strongSelf convertRect:placeholderWithWebViewBoundingRect.boundingRect fromView:[strongSelf webView]];

Not sure about this.

Search for &quot;InRootViewCoordinates&quot; in WebKit to see how this is normally done.

&gt; Source/WebKit/UIProcess/ios/WKTextPlaceholder.mm:54
&gt; +- (NSArray&lt;UITextSelectionRect *&gt; *)rects
&gt; +{
&gt; +    return @[ [[[WKTextSelectionRect alloc] initWithCGRect:_elementContext.boundingRect] autorelease] ];
&gt; +}

I very much doubt these rects are correct, especially if you scroll after inserting the placeholder, and inside overflow:scroll and scrolled subframes, and on a zoomed page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626984</commentid>
    <comment_count>28</comment_count>
      <attachid>392810</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-06 16:55:56 -0800</bug_when>
    <thetext>Comment on attachment 392810
Patch

See comments from previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626987</commentid>
    <comment_count>29</comment_count>
      <attachid>392810</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 16:59:23 -0800</bug_when>
    <thetext>Comment on attachment 392810
Patch

r- because I don&apos;t think this works with undo/redo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626991</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:02:38 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #23)
&gt; (In reply to Ryosuke Niwa from comment #20)
&gt; &gt; It&apos;s unclear to me how this feature is supposed to interact with user or
&gt; &gt; script initiated undo &amp; redo.
&gt; 
&gt; The placeholder itself isn&apos;t undo/redo-able. But any range selection that
&gt; was deleted when the placeholder was inserted is.

As in inserting of the placeholder is not undoable? That&apos;s fine but what happens when undo/redo is triggered when the placeholder is present? Or when the selection is moved to elsewhere when the placeholder is present?

e.g. Let&apos;s say we had (where [] denotes where the selection start &amp; end is):
&lt;div&gt;hello[]&lt;/div&gt;

And we&apos;ve inserted a new paragraph separator as its own undo step:
&lt;div&gt;hello&lt;/div&gt;
&lt;div&gt;[]&lt;br&gt;&lt;/div&gt;

Then we&apos;ve inserted this placeholder element:

&lt;div&gt;hello&lt;/div&gt;
&lt;div&gt;[&lt;placeholder&gt;]&lt;br&gt;&lt;/div&gt;

What happens when the undo is triggered at this point? Or when the selection is moved to the beginning of &quot;hello&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626992</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 17:04:09 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #30)
&gt; (In reply to Daniel Bates from comment #23)
&gt; &gt; (In reply to Ryosuke Niwa from comment #20)
&gt; &gt; &gt; It&apos;s unclear to me how this feature is supposed to interact with user or
&gt; &gt; &gt; script initiated undo &amp; redo.
&gt; &gt; 
&gt; &gt; The placeholder itself isn&apos;t undo/redo-able. But any range selection that
&gt; &gt; was deleted when the placeholder was inserted is.
&gt; 
&gt; As in inserting of the placeholder is not undoable? That&apos;s fine but what
&gt; happens when undo/redo is triggered when the placeholder is present? Or when
&gt; the selection is moved to elsewhere when the placeholder is present?
&gt; 

Yes, I know. I still need to address that and forgot a FIXME. Would you mind if I address in a follow up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626994</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:05:25 -0800</bug_when>
    <thetext>It appears to me that there needs to be a mechanism to cancel whatever is causing this placeholder to appear at the caret when the selection moves to elsewhere or some other execCommand is about to get executed.

At minimum, we need tests to make sure undo &amp; redo works when this placeholder element is present in the DOM with various editing actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626996</commentid>
    <comment_count>33</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 17:07:51 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #32)
&gt; It appears to me that there needs to be a mechanism to cancel whatever is
&gt; causing this placeholder to appear at the caret when the selection moves to
&gt; elsewhere or some other execCommand is about to get executed.
&gt; 
&gt; At minimum, we need tests to make sure undo &amp; redo works when this
&gt; placeholder element is present in the DOM with various editing actions.

Can I please address this in a follow up? I actually have a FIXME for this:

// FIXME: Save the current selection if it has changed since the placeholder was inserted and restore it after text insertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626998</commentid>
    <comment_count>34</comment_count>
      <attachid>392810</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:10:26 -0800</bug_when>
    <thetext>Comment on attachment 392810
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3321
&gt; +    // FIXME: Write in terms of replaceSelectionWithFragment(). See &lt;https://bugs.webkit.org/show_bug.cgi?id=208744&gt;.
&gt; +    TypingCommand::deleteSelection(document);

r- because it makes zero sense that this is a part of the previous typing command but we&apos;d immediately close it below upon selection change.
If this is really used for dictation, then the whole dictation sequence should be undo.
e.g. let&apos;s say we had &quot;hello [world]&quot; where [ &amp; ] and indicates start &amp; end of selection.
If the user were to initiate the dictation so that we&apos;d replace it with a placeholder like so:
&quot;hello &quot;[&lt;placeholder&gt;]
then when the user inserts text like &quot;WebKit&quot; as in:
&quot;hello WebKit&quot;.
Then undoing this dictation should restore the state back to &quot;hello world&quot;, not &quot;hello&quot;[&lt;placeholder&gt;] or &quot;hello&quot;.

&gt; Source/WebCore/editing/Editor.cpp:3326
&gt; +    // To match the Legacy WebKit implementation, set the text insertion point to be after the placeholder.

This comment doesn&apos;t match what the code says.

&gt; Source/WebCore/editing/Editor.cpp:3330
&gt; +    auto newSelection = Range::create(document);
&gt; +    newSelection-&gt;setStartAfter(placeholder);
&gt; +    newSelection-&gt;setEndAfter(placeholder);
&gt; +    m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);

r- again due to the superfluous creation of a Range as well as the typing command closing behavior above.
Use FrameSelection::setSelection as I&apos;ve suggested above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626999</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:12:51 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #33)
&gt; (In reply to Ryosuke Niwa from comment #32)
&gt; &gt; It appears to me that there needs to be a mechanism to cancel whatever is
&gt; &gt; causing this placeholder to appear at the caret when the selection moves to
&gt; &gt; elsewhere or some other execCommand is about to get executed.
&gt; &gt; 
&gt; &gt; At minimum, we need tests to make sure undo &amp; redo works when this
&gt; &gt; placeholder element is present in the DOM with various editing actions.
&gt; 
&gt; Can I please address this in a follow up? I actually have a FIXME for this:
&gt; 
&gt; // FIXME: Save the current selection if it has changed since the placeholder
&gt; was inserted and restore it after text insertion.

Sure, addressing it in a follow up seems fine but let&apos;s address my other comments about the typing commands in this patch since it&apos;s silly to land broken code just to fix it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627003</commentid>
    <comment_count>36</comment_count>
      <attachid>392810</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:18:30 -0800</bug_when>
    <thetext>Comment on attachment 392810
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3354
&gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);

Again, please don&apos;t create a Range just to update selection like this.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:57
&gt; +    if (insertionType.connectedToDocument) {

Did you not see my comment? We should be checking treeScopeChanged here.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:58
&gt; +        if (auto* shadowHost = parentOfInsertedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))

Please use RefPtr.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:66
&gt; +    if (removalType.disconnectedFromDocument) {

Ditto.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:67
&gt; +        if (auto* shadowHost = oldParentOfRemovedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))

Ditto.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:40
&gt; +    // Element

I don&apos;t think this comment is useful. Remove?

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:43
&gt; +    // Node

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627062</commentid>
    <comment_count>37</comment_count>
      <attachid>392825</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:15:45 -0800</bug_when>
    <thetext>Created attachment 392825
Patch

Updated aptch to address Ryosuke&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627064</commentid>
    <comment_count>38</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:17:54 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #36)
&gt; Comment on attachment 392810 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392810&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3354
&gt; &gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; &gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);
&gt; 
&gt; Again, please don&apos;t create a Range just to update selection like this.

How to do it then?

&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:57
&gt; &gt; +    if (insertionType.connectedToDocument) {
&gt; 
&gt; Did you not see my comment? We should be checking treeScopeChanged here.

Fixed in patch I just posted.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:58
&gt; &gt; +        if (auto* shadowHost = parentOfInsertedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))
&gt; 
&gt; Please use RefPtr.

OK

&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:66
&gt; &gt; +    if (removalType.disconnectedFromDocument) {
&gt; 
&gt; Ditto.

Fixed in patch I just posted.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:67
&gt; &gt; +        if (auto* shadowHost = oldParentOfRemovedTree.shadowHost(); is&lt;HTMLTextFormControlElement&gt;(shadowHost))
&gt; 
&gt; Ditto.

OK

&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:40
&gt; &gt; +    // Element
&gt; 
&gt; I don&apos;t think this comment is useful. Remove?
&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextPlaceholderElement.h:43
&gt; &gt; +    // Node
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627066</commentid>
    <comment_count>39</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 18:23:58 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #38)
&gt; (In reply to Ryosuke Niwa from comment #36)
&gt; &gt; Comment on attachment 392810 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=392810&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/editing/Editor.cpp:3354
&gt; &gt; &gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; &gt; &gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);
&gt; &gt; 
&gt; &gt; Again, please don&apos;t create a Range just to update selection like this.
&gt; 
&gt; How to do it then?

As I&apos;ve already stated in https://bugs.webkit.org/show_bug.cgi?id=208661#c19,

m_frame.selection().setSelection(VisibleSelection(positionBeforeNode(placeholder), positionAfterNode(placeholder), FrameSelection::defaultSetSelectionOptions(UserTriggered)));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627067</commentid>
    <comment_count>40</comment_count>
      <attachid>392826</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:24:07 -0800</bug_when>
    <thetext>Created attachment 392826
Patch

Update patch to address more feedback I accidentally missed. I did not know how to remove the Range code from removeTextPlaceholder at the moment. Filed bug #208751 to fix up while I look into.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627073</commentid>
    <comment_count>41</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:26:13 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #39)
&gt; (In reply to Daniel Bates from comment #38)
&gt; &gt; (In reply to Ryosuke Niwa from comment #36)
&gt; &gt; &gt; Comment on attachment 392810 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=392810&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/editing/Editor.cpp:3354
&gt; &gt; &gt; &gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; &gt; &gt; &gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);
&gt; &gt; &gt; 
&gt; &gt; &gt; Again, please don&apos;t create a Range just to update selection like this.
&gt; &gt; 
&gt; &gt; How to do it then?
&gt; 
&gt; As I&apos;ve already stated in https://bugs.webkit.org/show_bug.cgi?id=208661#c19,
&gt; 
&gt; m_frame.selection().
&gt; setSelection(VisibleSelection(positionBeforeNode(placeholder),
&gt; positionAfterNode(placeholder),
&gt; FrameSelection::defaultSetSelectionOptions(UserTriggered)));

This code is doing a different range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627076</commentid>
    <comment_count>42</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 18:30:54 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #41)
&gt; (In reply to Ryosuke Niwa from comment #39)
&gt; &gt; (In reply to Daniel Bates from comment #38)
&gt; &gt; &gt; (In reply to Ryosuke Niwa from comment #36)
&gt; &gt; &gt; &gt; Comment on attachment 392810 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=392810&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/editing/Editor.cpp:3354
&gt; &gt; &gt; &gt; &gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; &gt; &gt; &gt; &gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Again, please don&apos;t create a Range just to update selection like this.
&gt; &gt; &gt; 
&gt; &gt; &gt; How to do it then?
&gt; &gt; 
&gt; &gt; As I&apos;ve already stated in https://bugs.webkit.org/show_bug.cgi?id=208661#c19,
&gt; &gt; 
&gt; &gt; m_frame.selection().
&gt; &gt; setSelection(VisibleSelection(positionBeforeNode(placeholder),
&gt; &gt; positionAfterNode(placeholder),
&gt; &gt; FrameSelection::defaultSetSelectionOptions(UserTriggered)));
&gt; 
&gt; This code is doing a different range.

If you want selection to be inside the place holder, then VisibleSelection(firstPositionInNode(placeholder), lastPositionInNode(placeholder)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627079</commentid>
    <comment_count>43</comment_count>
      <attachid>392830</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:32:15 -0800</bug_when>
    <thetext>Created attachment 392830
Patch

No more ranges.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627080</commentid>
    <comment_count>44</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:33:46 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #42)
&gt; (In reply to Daniel Bates from comment #41)
&gt; &gt; (In reply to Ryosuke Niwa from comment #39)
&gt; &gt; &gt; (In reply to Daniel Bates from comment #38)
&gt; &gt; &gt; &gt; (In reply to Ryosuke Niwa from comment #36)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 392810 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=392810&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/WebCore/editing/Editor.cpp:3354
&gt; &gt; &gt; &gt; &gt; &gt; +        auto newSelection = Range::create(document, savedParentNode.get(), savedPlaceholderIndex, savedParentNode.get(), savedPlaceholderIndex);
&gt; &gt; &gt; &gt; &gt; &gt; +        m_frame.selection().setSelectedRange(newSelection.ptr(), DOWNSTREAM, FrameSelection::ShouldCloseTyping::Yes);
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Again, please don&apos;t create a Range just to update selection like this.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; How to do it then?
&gt; &gt; &gt; 
&gt; &gt; &gt; As I&apos;ve already stated in https://bugs.webkit.org/show_bug.cgi?id=208661#c19,
&gt; &gt; &gt; 
&gt; &gt; &gt; m_frame.selection().
&gt; &gt; &gt; setSelection(VisibleSelection(positionBeforeNode(placeholder),
&gt; &gt; &gt; positionAfterNode(placeholder),
&gt; &gt; &gt; FrameSelection::defaultSetSelectionOptions(UserTriggered)));
&gt; &gt; 
&gt; &gt; This code is doing a different range.
&gt; 
&gt; If you want selection to be inside the place holder, then
&gt; VisibleSelection(firstPositionInNode(placeholder),
&gt; lastPositionInNode(placeholder)).

I want to restore the caret to before the placeholder now that the placeholder was removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627083</commentid>
    <comment_count>45</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 18:38:05 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #44)
&gt;
&gt; I want to restore the caret to before the placeholder now that the
&gt; placeholder was removed.

Ah, then you can do what you&apos;re doing with positionBeforeNode(&amp;placeholder) before the removal and just use parentAnchoredEquivalent() instead so:

Position savedPositionBeforePlaceholder = positionBeforeNode(&amp;placeholder).parentAnchoredEquivalent()

placeholder.remove();

m_frame.selection().setSelection(VisibleSelection(savedPositionBeforePlaceholder), ~)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627084</commentid>
    <comment_count>46</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:39:57 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #45)
&gt; (In reply to Daniel Bates from comment #44)
&gt; &gt;
&gt; &gt; I want to restore the caret to before the placeholder now that the
&gt; &gt; placeholder was removed.
&gt; 
&gt; Ah, then you can do what you&apos;re doing with positionBeforeNode(&amp;placeholder)
&gt; before the removal and just use parentAnchoredEquivalent() instead so:
&gt; 
&gt; Position savedPositionBeforePlaceholder =
&gt; positionBeforeNode(&amp;placeholder).parentAnchoredEquivalent()
&gt; 
&gt; placeholder.remove();
&gt; 
&gt; m_frame.selection().
&gt; setSelection(VisibleSelection(savedPositionBeforePlaceholder), ~)

there you go! Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627087</commentid>
    <comment_count>47</comment_count>
      <attachid>392833</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:41:27 -0800</bug_when>
    <thetext>Created attachment 392833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627088</commentid>
    <comment_count>48</comment_count>
      <attachid>392830</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 18:43:53 -0800</bug_when>
    <thetext>Comment on attachment 392830
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3344
&gt; +    auto savedPositionBeforePlaceholder = positionBeforeNode(&amp;placeholder);

Save parentAnchoredEquivalent() instead as I commented here.

&gt; Source/WebCore/editing/Editor.cpp:3352
&gt; +        VisibleSelection newSelection { savedPositionBeforePlaceholder, savedPositionBeforePlaceholder };

You can just pass a single savedPositionBeforePlaceholder to VisibleSelection&apos;s constructor.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:37
&gt; +using namespace HTMLNames;

Do we really need to have this using?

&gt; LayoutTests/ChangeLog:11
&gt; +        * fast/text-placeholder/insert-and-remove-into-text-field-expected.html: Added.

We probably have these tests in LayoutTests/editing instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627089</commentid>
    <comment_count>49</comment_count>
      <attachid>392833</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 18:45:08 -0800</bug_when>
    <thetext>Comment on attachment 392833
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3352
&gt; +        VisibleSelection newSelection { savedPositionBeforePlaceholder, savedPositionBeforePlaceholder };

You can just pass one of them to VisibleSelection&apos;s constructor.

&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:37
&gt; +using namespace HTMLNames;

Can&apos;t we just use HTMLNames::divTag below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627092</commentid>
    <comment_count>50</comment_count>
      <attachid>392834</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:50:14 -0800</bug_when>
    <thetext>Created attachment 392834
To land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627093</commentid>
    <comment_count>51</comment_count>
      <attachid>392830</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:53:12 -0800</bug_when>
    <thetext>Comment on attachment 392830
Patch

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:3344
&gt;&gt; +    auto savedPositionBeforePlaceholder = positionBeforeNode(&amp;placeholder);
&gt; 
&gt; Save parentAnchoredEquivalent() instead as I commented here.

OK

&gt;&gt; Source/WebCore/editing/Editor.cpp:3352
&gt;&gt; +        VisibleSelection newSelection { savedPositionBeforePlaceholder, savedPositionBeforePlaceholder };
&gt; 
&gt; You can just pass a single savedPositionBeforePlaceholder to VisibleSelection&apos;s constructor.

Cool

&gt;&gt; Source/WebCore/html/shadow/TextPlaceholderElement.cpp:37
&gt;&gt; +using namespace HTMLNames;
&gt; 
&gt; Do we really need to have this using?

Ok will not use

&gt;&gt; LayoutTests/ChangeLog:11
&gt;&gt; +        * fast/text-placeholder/insert-and-remove-into-text-field-expected.html: Added.
&gt; 
&gt; We probably have these tests in LayoutTests/editing instead.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627094</commentid>
    <comment_count>52</comment_count>
      <attachid>392835</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 18:56:25 -0800</bug_when>
    <thetext>Created attachment 392835
To land for realz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627099</commentid>
    <comment_count>53</comment_count>
      <attachid>392837</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 19:03:07 -0800</bug_when>
    <thetext>Created attachment 392837
To land for realz realz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627102</commentid>
    <comment_count>54</comment_count>
      <attachid>392837</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 19:04:36 -0800</bug_when>
    <thetext>Comment on attachment 392837
To land for realz realz

Clearing flags on attachment: 392837

Committed r258050: &lt;https://trac.webkit.org/changeset/258050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627103</commentid>
    <comment_count>55</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-06 19:04:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392611</attachid>
            <date>2020-03-05 12:55:38 -0800</date>
            <delta_ts>2020-03-05 13:30:47 -0800</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-208661-20200305125537.patch</filename>
            <type>text/plain</type>
            <size>50430</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE3MjFmYmIxYWQ4
YTVhYTZiZGEwOWI2M2IzYTJhOWQ5OTdjOTExMmYuLmFkYjg0YjAwOGQxZDE4MTdhM2I3OWI5YjA1
ZDZlYzE5OTdmZjRkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMzQ4LDYgKzEzNDgsNyBAQCBodG1s
L3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKK2h0bWwvc2hhZG93L1RleHRQbGFjZWhv
bGRlckVsZW1lbnQuY3BwCiAKIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGYwMjNlYmQ0ZWRkYmY2OTM0MDU3
MjM2OTdhZGU5YmY1Mzk2ODU4OS4uY2NlYTU2YTEzMDBhOTk0YTY0NzI3ZTBkOGYzNTUxZDkzYWJm
ZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDIzNyw2ICs0MjM3LDcgQEAKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJQ0UxODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQzMUY3MkU1QjQwMEEw
Q0FCNiAvKiBNYXJrZWRUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0UxQTUwMUYyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGlu
Z1RhbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MUE1MDFEMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UyMTIxNTgyNDBEQkVC
OTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTUzMjQwREJEMzAwMDZFRDQ0MyAvKiBU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKIAkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0
Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTUxNjlFNTIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTVGQTI1NTIwOUU0OEM1
MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVGQTI1MzIwOUU0OEM1MDA1MUQ3MDAg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTM3LDYgKzE0MTM4LDggQEAKIAkJQ0UxODY2
NDMxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2Vk
VGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRDIyRDUzNTA5MDBD
QkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UaW1lckhv
bGRpbmdUYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUE1MDFFMjJENTM1
MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTVRpbWVySG9sZGluZ1RhbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFMjEyMTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgcGF0
aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBwYXRo
ID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9T
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODA2Miw2ICsxODA2NSw4IEBACiAJCQkJNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8q
IFNwaW5CdXR0b25FbGVtZW50LmggKi8sCiAJCQkJMTQyQjk3QzcxMzEzODk0MzAwOEJFRjRCIC8q
IFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgKi8sCiAJCQkJMTQyQjk3QzgxMzEzODk0MzAw
OEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oICovLAorCQkJCUNFMjEyMTUzMjQw
REJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi8sCisJCQkJQ0UyMTIx
NTQyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwICovLAogCQkJ
CUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNw
cCAqLywKIAkJCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5oICovLAogCQkJKTsKQEAgLTMwMjU0LDYgKzMwMjU5LDcgQEAKIAkJCQk5NzdCMzcy
NjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBNzlGMjBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUQ0OTkxNDMxOEYwODE1MTAwQkYwMDkyIC8qIEhUTUxVbmtub3duRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0FCMENENjMzMTAw
MEZBREE3NSAvKiBIVE1MVmlkZW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDJGOEUw
NTIzNDQ3NTFEMDA5OTNCNjggLyogSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRt
bC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggZTc0YmJhOWFmMTA2Y2Zl
NmFjNTc1MzA5YzZlYjQ3NWUyMzkxODFjYi4uNjIyODBmOWFiMDY2MmE0NTkxYWNlM2E1MmE1NGE0
Nzc4ZWY0NDUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNjk4LDYgKzY5OCwxMiBAQCB0ZXh0YXJl
YSB7CiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKIH0KIAorOjotd2Via2l0
LXRleHQtcGxhY2Vob2xkZXIgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB2ZXJ0
aWNhbC1hbGlnbjogYm90dG9tOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7
Cit9CisKIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICB3
b3JkLXdyYXA6IG5vcm1hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDI4Y2FkODkxMjA2YzQ4NDQy
ZTQyNzI5ODg1MDM3YjM0Zjk4YmY3ZTQuLmRhODA0NGQ3MzU2NDdiM2MyNjc1MzU1MjVlYjc4YWU3
ZjY1NTkwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25h
bEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNJblJhbmdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA2YzZkODNhNzI4ZjMwMjAzYjhlZmZjZTBmMDhiYWE0NTVjMzI2
YTZhLi40NGI0NjkzNDI2MzkwODQzYzhkZGM3YzY1Yjg0MGEyMzE1ZmRkYWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlRleHRDaGVj
a2luZ0hlbHBlci5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgorI2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJU
eXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKQEAgLTMzMDksNiArMzMxMCw1NCBAQCBTdHJpbmcg
RWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0
CiAgICAgcmV0dXJuIHBsYWluVGV4dChzZWxlY3Rpb24uc3RhcnQoKSwgc2VsZWN0aW9uLmVuZCgp
LCBiZWhhdmlvcikucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsKIH0KIAorUmVmUHRyPFRl
eHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkg
fHwgIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBUYWtlIG91dCBhIHJlZiBvbiB0aGUg
ZG9jdW1lbnQgYXMgdXBkYXRpbmcgbGF5b3V0IGNhbiBjYXVzZSBkb2N1bWVudCBkZXN0cnVjdGlv
bi4KKyAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RlZERvY3VtZW50IHsgdGhpcy0+ZG9jdW1lbnQo
KSB9OworCisgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwor
CisgICAgYXV0byBwbGFjZWhvbGRlciA9IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpLCBzaXplKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJh
bmdlKCktPmluc2VydE5vZGUocGxhY2Vob2xkZXIuY29weVJlZigpKTsKKworICAgIC8vIFNldCB0
aGUgdGV4dCBpbnNlcnRpb24gcG9pbnQgdG8gYmUgYWZ0ZXIgdGhlIHBsYWNlaG9sZGVyLgorICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisgICAgYXV0byBuZXdTZWxlY3Rpb24gPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIG5ld1NlbGVjdGlvbi0+c2V0U3RhcnRBZnRlcihw
bGFjZWhvbGRlcik7CisgICAgbmV3U2VsZWN0aW9uLT5zZXRFbmRBZnRlcihwbGFjZWhvbGRlcik7
CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlvbi5w
dHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMp
OworCisgICAgcmV0dXJuIHBsYWNlaG9sZGVyOworfQorCit2b2lkIEVkaXRvcjo6cmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmIHBsYWNlaG9sZGVyKQoreworICAg
IEFTU0VSVChwbGFjZWhvbGRlci5pc0Nvbm5lY3RlZCgpKTsKKworICAgIC8vIFRha2Ugb3V0IGEg
cmVmIG9uIHRoZSBkb2N1bWVudCBhcyB1cGRhdGluZyBsYXlvdXQgY2FuIGNhdXNlIGRvY3VtZW50
IGRlc3RydWN0aW9uLgorICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQgeyB0aGlz
LT5kb2N1bWVudCgpIH07CisKKyAgICAvLyBTYXZlIG9mZiBzdGF0ZSBhbmQgY29tcHV0ZSB0aGUg
cG9zaXRpb24gb2YgdGhlIHBsYWNlaG9sZGVyIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUKKyAgICAv
LyB0ZXh0IGluc2VydGlvbiBwb3NpdGlvbiB0byBqdXN0IGJlZm9yZSB0aGUgcGxhY2Vob2xkZXIg
ZWxlbWVudCBhZnRlciByZW1vdmFsLgorICAgIGF1dG8gc2F2ZWRSb290RWRpdGFibGVFbGVtZW50
ID0gcGxhY2Vob2xkZXIucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8qIHNhdmVkUGFy
ZW50Tm9kZSA9IHBsYWNlaG9sZGVyLnBhcmVudE5vZGUoKTsKKyAgICB1bnNpZ25lZCBzYXZlZFBs
YWNlaG9sZGVySW5kZXggPSBwbGFjZWhvbGRlci5jb21wdXRlTm9kZUluZGV4KCk7CisKKyAgICAv
LyBGSVhNRTogU2F2ZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gaWYgaXQgaGFzIGNoYW5nZWQgc2lu
Y2UgdGhlIHBsYWNlaG9sZGVyIHdhcyBpbnNlcnRlZAorICAgIC8vIGFuZCByZXN0b3JlIGl0IGFm
dGVyIHRleHQgaW5zZXJ0aW9uLgorICAgIHBsYWNlaG9sZGVyLnJlbW92ZSgpOworCisgICAgLy8g
U2V0IHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB0byBiZSBiZWZvcmUgd2VyZSB0aGUgcGxhY2Vo
b2xkZXIgdXNlIHRvIGJlLgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSBzYXZlZFJvb3RFZGl0
YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKKyAgICAg
ICAgYXV0byBuZXdTZWxlY3Rpb24gPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHNhdmVkUGFy
ZW50Tm9kZSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUsIHNhdmVkUGxh
Y2Vob2xkZXJJbmRleCk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShuZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xs
YXBzZUNhcmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogV2lkdGggYWRq
dXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2ZWVmMjYwODA1YjQ1M2UuLmRlNGMy
Y2VjYjRlZjFlMGJjYWIwOGM1N2ZhMDQ5ZDFhOWYwMDcwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0
OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CitjbGFzcyBUZXh0
UGxhY2Vob2xkZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1
Y3QgRm9udEF0dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2VydEVkaXRhYmxlSW1hZ2Uo
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBp
bnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmKTsKKwog
cHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIApAQCAtNjQxLDYgKzY0
NSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5m
byB7IGZhbHNlIH07CiAgICAgSGFzaFNldDxSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4+IG1faW1h
Z2VFbGVtZW50c1RvTG9hZEJlZm9yZVJldmVhbGluZ1NlbGVjdGlvbjsKKyAgICBSZWZQdHI8VGV4
dFBsYWNlaG9sZGVyRWxlbWVudD4gbV90ZXh0UGxhY2Vob2xkZXJFbGVtZW50OwogfTsKIAogaW5s
aW5lIHZvaWQgRWRpdG9yOjpzZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UoYm9vbCBmbGFnKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVt
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMjU4OTA0MGUxYTMwYjVhMTllMzdkMDcwY2M4M2JhZDAyYTYz
MzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCisKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhvbGRlckVsZW1l
bnQpOworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBsYWNlaG9sZGVy
RWxlbWVudD4gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisKK1RleHRQbGFj
ZWhvbGRlckVsZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorICAgIDogSFRNTERpdkVsZW1lbnQgeyBkaXZUYWcs
IGRvY3VtZW50IH0KK3sKKyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZyB7ICItd2Via2l0LXRleHQt
cGxhY2Vob2xkZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9KTsKKyAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHNpemUud2lkdGgoKSwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCwgc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cit9CisKK2F1dG8g
VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlw
ZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgLT4g
SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQKK3sKKyAgICBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAg
IGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHNoYWRvd0hvc3QgPSBwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRvd25j
YXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1Bs
YWNlaG9sZGVyKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9y
UmVzdWx0OjpEb25lOworfQorCit2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIGlmICghcmVt
b3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAg
aWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLnNoYWRvd0hvc3Qo
KTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KHNoYWRvd0hvc3QpKQorICAgICAgICBk
b3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNo
b3dQbGFjZWhvbGRlcih0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNiYTg0MDkzMDE5OGE5YTk5Mzc4YjQ0MjM2MGI2ZDMwYjQyMjc5NjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICAv
LyBFbGVtZW50CisgICAgYm9vbCBpc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBOb2RlCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9k
ZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkg
ZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC5pc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50
Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1NlbGVjdGlvblJlY3QuaAppbmRleCA0OTgyYzYzYTAwMzNmNTc1NGNlMzc5MmU4NjEyYzc3Yjdm
ODEwZmJkLi41Y2FiNDA1YjBiNjRhZTJjNjZkNmNlMTYzYWViNDZiODhiMzQwY2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uUmVjdCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBpc0hvcml6b250YWwsIGludCBjb2x1
bW5OdW1iZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNlbGVjdGlvblJlY3QoY29u
c3QgSW50UmVjdCYsIGJvb2wgaXNIb3Jpem9udGFsLCBpbnQgcGFnZU51bWJlcik7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgc29tZSBvZiB0aGVzZSBhcmd1bWVudHMgdG8gYW4gYXV4
aWxsYXJ5IHN0cnVjdC4KICAgICBTZWxlY3Rpb25SZWN0KGNvbnN0IEludFJlY3QmLCBUZXh0RGly
ZWN0aW9uLCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2ws
IGJvb2wsIGJvb2wsIGJvb2wsIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggNDkyZGYyZmM3YzdmMTlmYzNlOWI5YjE0MzYzNGYwN2ViMjk4ZDVlYi4uZjA5MjM5NmY2
ZGEzODc4NzVmMDEzY2ExYjZmYTI4NGZkOGE1ZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgog
I2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUcmVlU2Nv
cGUuaCIKICNpbmNsdWRlICJUeXBlQ29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgpAQCAtMTQzNiw2ICsxNDM3LDE3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRD
YW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCwgYm9vbCBjYW5TaG93UGxhY2Vob2xk
ZXIpCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50
KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoY2FuU2hvd1BsYWNlaG9sZGVyKTsKIH0KIAorRWxlbWVu
dCogSW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIo
SW50U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0KCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpy
ZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoaXM8VGV4
dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGZyYW1lKCktPmVkaXRvcigp
LnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50Pihl
bGVtZW50KSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2Vy
KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSkKIHsK
ICAgICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9yVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggODE1MjZlOWUyZDdiODMyOTk1MGFmOTFiMTNiM2UwNDdiMjEyMDk5Ni4u
ODk4NGU5ZDAzODMxYmVhZjZiOTIzYTkwOTQ3MjhiZWRiZmFkNzFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC0yMzgsNiArMjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2
aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9s
ZGVyKEVsZW1lbnQmLCBib29sKTsKIAorICAgIEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRl
cihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5w
dXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxW
ZWN0b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBiZDA3MTZjODM4ZDQzYmU2NDFkYTVjZTViZDU3MTFjMzgzODkzMTM4Li41YmJl
MDRkODljNDQ5YWZkZjZjODFhMDY1MmY4NmI4YmI0N2VjYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC0zMDksNiArMzA5LDkgQEAgZW51bSBDb21wb3NpdGluZ1BvbGlj
eSB7CiAKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQsIGJv
b2xlYW4gY2FuU2hvd1BsYWNlaG9sZGVyKTsKIAorICAgIEVsZW1lbnQgaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFj
ZWhvbGRlcihFbGVtZW50IGVsZW1lbnQpOworCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5n
ZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVu
Y2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKICAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJp
bmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY5Njc2MzEzYWM2MjVmZTYwZGU5ZmUzMGYxYTA0
YzhmMjE5OTQyNjUuLmY4ODE5YTk1MTA4NDQzOGM4NTA0ZWY1NzJmZWQ1OGUzYjg4ZTUzYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MTAsNiArNzEwLDkgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRTaG91bGRSZXZl
YWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2Vy
dFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7Cisg
ICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgZG91YmxlIGRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29u
dGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUu
ZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVu
b2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
MWZhZTk3NTI2NGJiZTQ5MzI1ODg1ODRlMjllZjRhZWQ0YWQ2OWU0Zi4uYjgxODgzY2RkYzJjMjg4
NzE2YjY3NTY2NjBiNWQ4YTE4MDczYWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3
IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IldLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2lt
cG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgogI2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0Nv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsy
OTIsNiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3Qp
cG9zaXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGludGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVj
dHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwogKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICop
YXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENHUmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0
Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5kCkBAIC03NDM2LDYgKzc0MzYsMjAgQEAgLSAo
dm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1
ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlmCiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShV
SVRleHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNl
cnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSB7IHNpemUgfSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9jXSBpbml0
V2l0aEVsZW1lbnRDb250ZXh0OipwbGFjZWhvbGRlcl0gYXV0b3JlbGVhc2VdIDogbmlsKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClyZW1vdmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9s
ZGVyICopcGxhY2Vob2xkZXIgd2lsbEluc2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4KKyAgICBpZiAo
YXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhv
bGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09m
UGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0
ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50
U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFj
ZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzOTQ1MTk2OGVhNzkwNzk5ZTM5MzJiMTc1NDgxNzA3Nzlj
MDBkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBFbGVtZW50Q29udGV4dDsKK30KKworQGludGVyZmFjZSBXS1RleHRQbGFjZWhvbGRlciA6
IFVJVGV4dFBsYWNlaG9sZGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVsZW1lbnRDb250
ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4dDsKKworLSAoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWVsZW1lbnRDb250ZXh0OworCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQ1OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJXS1RleHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2lt
cG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29u
dGV4dC5oPgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jilj
b250ZXh0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOwor
fQorCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sK
KyAgICByZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVj
dGlvblJlY3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25S
ZWN0IGFsbG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBh
dXRvcmVsZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rp
b25SZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oCmluZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLjQ5MjY0
ZGZkOTY0M2M4ZmI4YjdkODA0OGNmN2RmMGVkYjJlYzBiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMzUsNiArMzUsNyBA
QCBjbGFzcyBTZWxlY3Rpb25SZWN0OwogCiBAaW50ZXJmYWNlIFdLVGV4dFNlbGVjdGlvblJlY3Qg
OiBVSVRleHRTZWxlY3Rpb25SZWN0CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDoo
Q0dSZWN0KXJlY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0Oihjb25z
dCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0OwogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCmluZGV4
IDk5MTAzMzVmYjViNTUxMDk4YzQzOWE4NWU0YzE3OTk2ODk2MmU0ZjMuLmFmZjA3ODFhNWNmMjkz
ZjA4ZGU2Nzc0MTI1M2NlMDRhMTNiOWFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCkBAIC0zNCw2ICszNCwxMyBAQCBAaW1w
bGVtZW50YXRpb24gV0tUZXh0U2VsZWN0aW9uUmVjdCB7CiAgICAgV2ViQ29yZTo6U2VsZWN0aW9u
UmVjdCBfc2VsZWN0aW9uUmVjdDsKIH0KIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0
OihDR1JlY3QpcmVjdAoreworICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVj
dDsKKyAgICBzZWxlY3Rpb25SZWN0LnNldFJlY3QoV2ViQ29yZTo6SW50UmVjdCB7IHJlY3QgfSk7
CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoU2VsZWN0aW9uUmVjdDpXVEZNb3ZlKHNlbGVjdGlv
blJlY3QpXTsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVjdDooY29u
c3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdAogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggOGI0ZTA0OTNjNWE2YTk3NmMzNzFkYTNhODgxNWQ0NGMyOTJi
ZjE1My4uM2MzMjljOTFhZThkZTU5MjQ1NDU1MWIwOGUzYWZlMTBmNGQ0ZTc4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NTcsNiAr
NDU3LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBt
X3dlYlBhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xk
ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIg
eyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgRWxlbWVudENv
bnRleHQmIHBsYWNlaG9sZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVt
b3ZlVGV4dFBsYWNlaG9sZGVyIHsgcGxhY2Vob2xkZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG1fd2ViUGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjYTY4MzIyYzkzNTE2N2FiNmE5YmQy
NzBjNjg3N2VhYTViNzM1OTYuLjI4N2MwNTBkNjUzZTE0YjdjNWM4Y2M5ZTYzYWUwNTk4OGU3ZjU2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTczNCw2ICsxNzM0LDggQEAKIAkJQ0UxQTBCRDIxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNT
UEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAxQTQ4RTZD
NjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQg
LyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi87IH07
CisJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNUQyNDBFRTU3
MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi87IH07CisJCUNFMjEyMTYwMjQwRUU1
NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1Rl
eHRQbGFjZWhvbGRlci5tbSAqLzsgfTsKIAkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdL
VGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0
LmggKi87IH07CiAJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1NTBF
MTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi87IH07CiAJCUNFNUI0
Qzg4MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVCNEM4NjIx
QjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oICovOyB9
OwpAQCAtNTA1MSw2ICs1MDUzLDggQEAKIAkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFz
c2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEw
QkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVENDU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkQx
MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dElucHV0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5oOyBwYXRoID0gaW9zL1dLVGV4dFBsYWNlaG9sZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjEyMTVFMjQwRUU1NzEwMDZFRDQ0
MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dFBs
YWNlaG9sZGVyLm1tOyBwYXRoID0gaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2Vs
ZWN0aW9uUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lmg7IHBhdGgg
PSBpb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QubW07IHBhdGggPSBpb3MvV0tU
ZXh0U2VsZWN0aW9uUmVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NTBF
MTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc2VydFRleHRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Nzk4
LDYgKzY4MDIsOCBAQAogCQkJCTI2RjEwQkU3MTkxODdFMkUwMDFEMEU2OCAvKiBXS1N5bnRoZXRp
Y1RhcEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCTMxNkI4QjYyMjA1NEI1NTgwMEJENEE2
MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi8sCiAJCQkJMzE2QjhCNjEyMDU0QjU1ODAwQkQ0
QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcubW0gKi8sCisJCQkJQ0UyMTIxNUQyNDBFRTU3MTAw
NkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8sCisJCQkJQ0UyMTIxNUUyNDBFRTU3MTAw
NkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovLAogCQkJCUNFNDU5NDVBMjQwRjg1Qjkw
MDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8sCiAJCQkJQ0U0NTk0NUIyNDBGODVC
OTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8sCiAJCQkJNzFBNjc2QTQyMkM2
MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovLApAQCAt
MTEzNTIsNiArMTEzNTgsNyBAQAogCQkJCTJERDY3QTM1MUJEODYxMDYwMDUzQjI1MSAvKiBXS1Rl
eHRGaW5kZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDVGNTFEMjA2MDg3QTEwMDM4
QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDQjRFNjgxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4
dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAx
OUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNkZDMDEy
MDMwMjE5NjAwMTdFNjE5IC8qIFdLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MUE2NzZBNjIyQzYyMzI1MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEyNjQ4LDYgKzEyNjU1LDcgQEAKIAkJ
CQk1Q0EyNkQ4MzIxN0FEMUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hhcmVTaGVl
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMzMjI0MTkxOUIwMDk2NDgzRSAvKiBXS1N0
b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFMjEyMTYwMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI0ZWZiM2RhZGQ5OGUzNzgy
MGZkODgzMGUyNDhkN2NjYzRhZDkyMDUuLjcwN2ZjNmJkYTQyMzk4NThjNmNmNDZjNDBkOGQ3MTBl
MjA4YmE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTY0Miw2ICs2NDIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50
U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVhbEN1
cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbjsgfQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFs
Q3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAg
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBzY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNj
cmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgb3ZlcnJpZGVTY3JlZW5T
aXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyYWUxY2UyYmNiYTViNzY5ZTcyNzUyM2RmZmY2OTkx
OWNmY2Y4NzNlLi5iNGFlYTc1NTU0ZGE3NTRmODEwNDkxYTM0ZTQyMGE4NjA4YjJkNGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTExOSw2ICsxMTksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KQorICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUpIC0+IChP
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5jCisgICAg
UmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFj
ZWhvbGRlcikgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21h
dGlvbihib29sIGNvbnRyb2xsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIzNGZmNjIxYmM0MmI0NTRlNDAwNmQ4ZWZj
NTU4YzZiY2M0OTgyYmMuLjExMDkzMDliOWUwODVhMTZjZTRmZGFjZjVkNWM5YjA1NWRjMjUyOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0
aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEl0ZXJhdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRQbGFjZWhvbGRlckVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckFnZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVVbml0cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgpAQCAtNDAwMCw2ICs0
MDAxLDI0IEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJzVGV4dExlZ2liaWxpdHlCYXNl
ZFpvb21TY2FsaW5nKCkgY29uc3QKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6Omluc2VydFRl
eHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIC8vIEluc2VydGluZyB0aGUgcGxhY2Vob2xkZXIgbWF5IHJ1biBKYXZh
U2NyaXB0LCB3aGljaCBjYW4gZG8gYW55dGhpbmcsIGluY2x1ZGluZyBmcmFtZSBkZXN0cnVjdGlv
bi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byBwbGFjZWhvbGRlciA9IGZyYW1lLT5lZGl0
b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoc2l6ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
cGxhY2Vob2xkZXIgPyBjb250ZXh0Rm9yRWxlbWVudCgqcGxhY2Vob2xkZXIpIDogV1RGOjpudWxs
b3B0KTsKK30KKwordm9pZCBXZWJQYWdlOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQmIHBsYWNlaG9sZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKFJlZlB0cjxFbGVtZW50PiBlbGVt
ZW50ID0gZWxlbWVudEZvckNvbnRleHQocGxhY2Vob2xkZXIpKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1lbnQpKTsKKyAgICAgICAgaWYg
KFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25jYXN0PFRl
eHRQbGFjZWhvbGRlckVsZW1lbnQ+KCplbGVtZW50KSk7CisgICAgfQorICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGlu
dDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZjxGcmFtZT4gZnJhbWUg
PSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJl
bW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZGI0YmRiY2NhOGEyYTU1NDNkZTg2NDNiYWFiYTNkYzM0ZWE4MTlh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMg
dGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9t
IGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQg
dG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MWEyY2M3ZGRjMDZmMTg3ZDlkMDYyOTdlYzM2YzQ0MjhhZGQ5OGUyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0
aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0
LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vo
b2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1
YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhp
cyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJU
cmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1
ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1
dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIu
YWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQor
ICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
aW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9t
ID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJh
bmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBsZXQgcGxhY2Vob2xk
ZXJFbGVtZW50ID0gbnVsbDsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhh
dmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAg
IHBsYWNlaG9sZGVyRWxlbWVudCA9IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAq
IGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGxh
Y2Vob2xkZXJFbGVtZW50KTsKKyAgICB9CisgICAgCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBo
aWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZv
ckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnJlbW92ZVRleHRQbGFjZWhvbGRlcihw
bGFjZWhvbGRlckVsZW1lbnQpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhiM2I1MWJmNjI3NmFjYzNlNTk2ZDU1MTlmMjZjZWU0
MzI1YTMzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVu
dGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdl
YktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xh
c3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvICAgICAgZnJvbSBDdXBl
cnRpbm8hPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRp
dGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDAyMzFhMTJhYzgxNWYyYWJkNjYwNWZlNzBjYzEzNjM3
Y2MwYjEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0
ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8
L2NvZGU+IGVsZW1lbnQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1
bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2siIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbih0ZXN0RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMo
KSwgdGVzdEVsZW1lbnQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVz
dEVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9u
T2ZGcm9tLCB0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0
aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAg
ICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVz
dEVsZW1lbnQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigp
LCB0ZXN0RWxlbWVudCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVs
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1OThiMDQxOGIyOTIyM2U2NTY3YjQyYzUxZWRh
MTU2NjdhNTA3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNlaG9s
ZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg
cnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlk
PSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSIgICAgICAiPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGZjNDU5NDc3ZjQyNDA1OGIyN2YwMmY3ZTM2M2ZjYWY0MWMwMWZmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0
eS10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9
MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRk
ZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIg
cGxhY2Vob2xkZXI9IkZBSUwiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5m
b2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgw
LCAwKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ug
d2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2Ft
ZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxz
Lmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOwor
ICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVy
KCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDRlMDIzYTBhZDFkY2U3YWNjMzU3ZGExZDkwM2JhNDkyNjM1MTIwYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5
IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1
dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBm
cm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDdhODBkYjY1OTI3OGEzOGI1OTE2YmU3Nzc0MDdmYjI1ZGYxM2VjZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwt
c2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3Nz
Ij4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRl
ciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1
biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0i
aW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRp
bm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBp
bnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2Fp
dEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQs
ICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhP
ZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBw
b3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhh
dmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAg
IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVp
Z2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNv
ci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
aW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZTQzYWEyMTBmYjdh
YmEwMDNiYTZlMTdhMTljZGNkNjIzZWQxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIg
QEAKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIu
Li8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgv
MSBBaGVtOworICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8g
bWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAg
Y2FyZXQtY29sb3I6IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392616</attachid>
            <date>2020-03-05 13:30:47 -0800</date>
            <delta_ts>2020-03-05 13:46:37 -0800</delta_ts>
            <desc>For the bots</desc>
            <filename>ForBots.patch</filename>
            <type>text/plain</type>
            <size>51972</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkOTAxMGM1ZTE0OWMyYmVhOGNmYzgzN2VkNmM3MTEyZjAxY2Q4OTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDUgTWFyIDIwMjAgMTI6NDU6NDkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBGb3IgdGhl
IGJvdHM7IGZpcnN0IHBhc3MgYXQgaW1wbGVtZW50aW5nIHRleHQgcGxhY2Vob2xkZXJzCgotLS0K
IC4uLnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCB8IDEyICsrKysK
IC4uLi9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCAgICB8IDQ2ICsrKysr
KysrKysrKwogLi4uaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIHwg
MTIgKysrKwogLi4uL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCAgICAgICAgIHwg
NDEgKysrKysrKysrKysKIC4uLmluc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbCB8IDEyICsrKysKIC4uLi9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgICAg
ICAgICB8IDQwICsrKysrKysrKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3Rl
ZC5odG1sICAgICAgfCAxMiArKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sICAg
ICAgICAgICAgICAgfCA0MSArKysrKysrKysrKwogLi4uL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3MgIHwgMTIgKysrKwogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
ICAgICAgICAgICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIHwgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyAgICAg
ICAgICAgICAgICAgICB8ICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAg
ICAgICAgICAgfCA1MSArKysrKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oICAgICAgICAgICAgICAgfCAgNSArKwogLi4uL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRl
ckVsZW1lbnQuY3BwICAgIHwgNzEgKysrKysrKysrKysrKysrKysrKwogLi4uL2h0bWwvc2hhZG93
L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAgICAgIHwgNTMgKysrKysrKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmggICB8ICAyICstCiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAxMiArKysrCiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgMyArCiAuLi4vVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gfCAxNiArKysrLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmggIHwgNDIgKysrKysrKysrKysKIC4uLi9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbSB8IDU4ICsrKysrKysrKysrKysr
KwogLi4uL1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oICAgICAgIHwgIDMgKy0K
IC4uLi9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0gICAgICB8ICA3ICsrCiAu
Li4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tICAgfCAxOCArKysrKwog
Li4uL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDggKysrCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMyArCiAuLi4v
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgMiArCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tICAgICAgfCAxOSArKysrKwogMzIgZmls
ZXMgY2hhbmdlZCwgNjE2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVt
b3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZp
ZWxkLWV4cGVjdGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNz
cwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFj
ZWhvbGRlckVsZW1lbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0K
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkYjRiZGJj
Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBm
cm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0
ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0
UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0
ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTFhMmNjN2RkYzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFj
ZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZp
c3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZh
bHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlu
cHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBl
ci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNl
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZy
b20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9u
UmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhv
bGRlckVsZW1lbnQgPSBudWxsOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAg
IC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMg
aGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAg
ICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1
ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgICAgICBjb25zb2xlLmFzc2VydChw
bGFjZWhvbGRlckVsZW1lbnQpOworICAgIH0KKyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRv
IGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KHBsYWNlaG9sZGVyRWxlbWVudCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODhi
M2I1MWJmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRl
bnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyAgICAgIGZyb20gQ3Vw
ZXJ0aW5vITwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBkMDIz
MWExMmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0
ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8
L2NvZGU+IGVsZW1lbnQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1
bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2siIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbih0ZXN0RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMo
KSwgdGVzdEVsZW1lbnQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVz
dEVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9u
T2ZGcm9tLCB0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0
aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAg
ICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVz
dEVsZW1lbnQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigp
LCB0ZXN0RWxlbWVudCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVs
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41
NTk4YjA0MThiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xk
ZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy
dW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9
ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IiAgICAgICI+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGZjNDU5NDc3ZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHkt
dGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEu
MCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVu
IHdoZW4gYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHBs
YWNlaG9sZGVyPSJGQUlMIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVF
bGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBh
d2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9j
dXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwg
MCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdl
IGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUg
d2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1
dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5p
bnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAg
ICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigp
LCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NGUwMjNhMGFkMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRp
YWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3Qu
Y3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhv
bGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJl
IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBp
ZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9t
IEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ3YTgwZGI2NTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJl
Y2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0
aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgor
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1
dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjFlZTQzYWEyMTBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpAQCAtMCwwICsxLDEyIEBACitA
Zm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICBzcmM6IHVybCgiLi4vLi4v
cmVzb3VyY2VzL0FoZW0udHRmIik7Cit9CisKKy50ZXN0IHsKKyAgICBmb250OiAyNXB4LzEgQWhl
bTsKKyAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCUlOworICAgIC8qIFRvIG1ha2Ug
ZGVidWdnaW5nIGVhc2llciwgbWFrZSB0aGUgY2FyZXQgc3RhbmQgb3V0LiAqLworICAgIGNhcmV0
LWNvbG9yOiBibHVlOworICAgIGNvbG9yOiB5ZWxsb3c7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE3
MjFmYmIxYWQ4Li5hZGI4NGIwMDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNDgsNiArMTM0OCw3
IEBAIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAog
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAoraHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKIAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5j
cHAKIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZC4u
OTcxZTA1MWI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEw
MDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJF
NUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1l
ckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4
MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0
NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4
NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAw
NTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJ
CUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1
MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
VGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAx
RTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
Lmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNw
cDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBD
b2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJG
ODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhC
RUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIx
MjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJ
CQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAq
LywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxl
bWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJl
ZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJ
RTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHls
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkw
MDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0
QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4
QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MKaW5kZXggZTc0YmJhOWFmMTAuLjYyMjgwZjlhYjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2h0bWwuY3NzCkBAIC02OTgsNiArNjk4LDEyIEBAIHRleHRhcmVhIHsKICAgICBwb2ludGVyLWV2
ZW50czogbm9uZSAhaW1wb3J0YW50OwogfQogCis6Oi13ZWJraXQtdGV4dC1wbGFjZWhvbGRlciB7
CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207
CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKK30KKwogaW5wdXQ6OnBsYWNl
aG9sZGVyIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgIHdvcmQtd3JhcDogbm9ybWFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggMjhjYWQ4OTEyMDYuLmRhODA0NGQ3MzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
U3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
NmM2ZDgzYTcyOGYuLjQ0YjQ2OTM0MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlRleHRDaGVja2luZ0hlbHBlci5oIgogI2luY2x1
ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5j
bHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5p
dHMuaCIKQEAgLTMzMDksNiArMzMxMCw1NCBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHQo
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiAgICAgcmV0dXJuIHBsYWluVGV4
dChzZWxlY3Rpb24uc3RhcnQoKSwgc2VsZWN0aW9uLmVuZCgpLCBiZWhhdmlvcikucmVwbGFjZVdp
dGhMaXRlcmFsKCdcMCcsICIiKTsKIH0KIAorUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+
IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkgfHwgIW1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAvLyBUYWtlIG91dCBhIHJlZiBvbiB0aGUgZG9jdW1lbnQgYXMgdXBkYXRpbmcg
bGF5b3V0IGNhbiBjYXVzZSBkb2N1bWVudCBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RG9jdW1lbnQ+
IHByb3RlY3RlZERvY3VtZW50IHsgdGhpcy0+ZG9jdW1lbnQoKSB9OworCisgICAgVHlwaW5nQ29t
bWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGRvY3VtZW50KCkpOworCisgICAgYXV0byBwbGFjZWhvbGRl
ciA9IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzaXplKTsKKyAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCktPmluc2VydE5vZGUocGxh
Y2Vob2xkZXIuY29weVJlZigpKTsKKworICAgIC8vIFNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9p
bnQgdG8gYmUgYWZ0ZXIgdGhlIHBsYWNlaG9sZGVyLgorICAgIGRvY3VtZW50KCkudXBkYXRlTGF5
b3V0KCk7CisgICAgYXV0byBuZXdTZWxlY3Rpb24gPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCkp
OworICAgIG5ld1NlbGVjdGlvbi0+c2V0U3RhcnRBZnRlcihwbGFjZWhvbGRlcik7CisgICAgbmV3
U2VsZWN0aW9uLT5zZXRFbmRBZnRlcihwbGFjZWhvbGRlcik7CisgICAgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlvbi5wdHIoKSwgRE9XTlNUUkVBTSwgRnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworCisgICAgcmV0dXJuIHBsYWNl
aG9sZGVyOworfQorCit2b2lkIEVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQmIHBsYWNlaG9sZGVyKQoreworICAgIEFTU0VSVChwbGFjZWhvbGRlci5p
c0Nvbm5lY3RlZCgpKTsKKworICAgIC8vIFRha2Ugb3V0IGEgcmVmIG9uIHRoZSBkb2N1bWVudCBh
cyB1cGRhdGluZyBsYXlvdXQgY2FuIGNhdXNlIGRvY3VtZW50IGRlc3RydWN0aW9uLgorICAgIFJl
ZjxEb2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQgeyB0aGlzLT5kb2N1bWVudCgpIH07CisKKyAg
ICAvLyBTYXZlIG9mZiBzdGF0ZSBhbmQgY29tcHV0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBsYWNl
aG9sZGVyIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUKKyAgICAvLyB0ZXh0IGluc2VydGlvbiBwb3Np
dGlvbiB0byBqdXN0IGJlZm9yZSB0aGUgcGxhY2Vob2xkZXIgZWxlbWVudCBhZnRlciByZW1vdmFs
LgorICAgIGF1dG8gc2F2ZWRSb290RWRpdGFibGVFbGVtZW50ID0gcGxhY2Vob2xkZXIucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8qIHNhdmVkUGFyZW50Tm9kZSA9IHBsYWNlaG9sZGVy
LnBhcmVudE5vZGUoKTsKKyAgICB1bnNpZ25lZCBzYXZlZFBsYWNlaG9sZGVySW5kZXggPSBwbGFj
ZWhvbGRlci5jb21wdXRlTm9kZUluZGV4KCk7CisKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGUgY3Vy
cmVudCBzZWxlY3Rpb24gaWYgaXQgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHBsYWNlaG9sZGVyIHdh
cyBpbnNlcnRlZAorICAgIC8vIGFuZCByZXN0b3JlIGl0IGFmdGVyIHRleHQgaW5zZXJ0aW9uLgor
ICAgIHBsYWNlaG9sZGVyLnJlbW92ZSgpOworCisgICAgLy8gU2V0IHRoZSB0ZXh0IGluc2VydGlv
biBwb2ludCB0byBiZSBiZWZvcmUgd2VyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50
KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSBzYXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgYXV0byBuZXdTZWxlY3Rpb24g
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHNhdmVkUGFyZW50Tm9kZSwgc2F2ZWRQbGFjZWhv
bGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUsIHNhdmVkUGxhY2Vob2xkZXJJbmRleCk7CisgICAg
ICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdTZWxlY3Rpb24ucHRy
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsK
KyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lkdGgoSW50UmVj
dCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogV2lkdGggYWRqdXN0bWVudCBkb2Vzbid0IHdvcmsg
Zm9yIHJvdGF0ZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGY4Njc3YjMxOGU4
Li5kZTRjMmNlY2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Miw2ICs4Miw3IEBA
IGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hlY2tlckNs
aWVudDsKIGNsYXNzIFRleHRFdmVudDsKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ7CiAK
IHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBGb250QXR0cmlidXRlczsKQEAg
LTU0OSw2ICs1NTAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SFRN
TEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFjZWhvbGRlcihj
b25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERvY3VtZW50
JiBkb2N1bWVudCgpIGNvbnN0OwogCkBAIC02NDEsNiArNjQ1LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvIHsgZmFsc2UgfTsKICAgICBIYXNo
U2V0PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50Pj4gbV9pbWFnZUVsZW1lbnRzVG9Mb2FkQmVmb3Jl
UmV2ZWFsaW5nU2VsZWN0aW9uOworICAgIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBt
X3RleHRQbGFjZWhvbGRlckVsZW1lbnQ7CiB9OwogCiBpbmxpbmUgdm9pZCBFZGl0b3I6OnNldFN0
YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMjU4OTA0MGUxYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKwordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKworUmVmPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNp
emUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCB7
IGRvY3VtZW50LCBzaXplIH0pOworfQorCitUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSkKKyAgICA6IEhUTUxEaXZFbGVtZW50IHsgZGl2VGFnLCBkb2N1bWVudCB9Cit7CisgICAgc2V0
UHNldWRvKEF0b21TdHJpbmcgeyAiLXdlYmtpdC10ZXh0LXBsYWNlaG9sZGVyIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHNpemUuaGVpZ2h0KCks
IENTU1VuaXRUeXBlOjpDU1NfUFgpOworfQorCithdXRvIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFp
bmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0Cit7CisgICAgSFRNTERpdkVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2VydGlv
blR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25u
ZWN0ZWRUb0RvY3VtZW50KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gcGFyZW50
T2ZJbnNlcnRlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7CisgICAg
fQorICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKK30KKwordm9p
ZCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBl
IHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQorewor
ICAgIEhUTUxEaXZFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAoIXJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZy
b21Eb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0g
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIodHJ1ZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uY2JhODQwOTMwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4
dFBsYWNlaG9sZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYp
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1l
bnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICAvLyBFbGVtZW50CisgICAgYm9vbCBpc1Rl
eHRQbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICAvLyBOb2RlCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUp
IGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFp
bmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmluYWw7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4
dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRQbGFjZWhvbGRlckVs
ZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBu
b2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNh
c3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaAppbmRleCA0
OTgyYzYzYTAwMy4uNWNhYjQwNWIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1NlbGVjdGlvblJlY3QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTZWxlY3Rpb25SZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZWxlY3Rpb25SZWN0KGNvbnN0IEludFJl
Y3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50IGNvbHVtbk51bWJlcik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBpc0hvcml6
b250YWwsIGludCBwYWdlTnVtYmVyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBz
b21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0byBhbiBhdXhpbGxhcnkgc3RydWN0LgogICAgIFNlbGVj
dGlvblJlY3QoY29uc3QgSW50UmVjdCYsIFRleHREaXJlY3Rpb24sIGludCwgaW50LCBpbnQsIGlu
dCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0OTJkZjJmYzdjNy4uZjA5MjM5
NmY2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NSw2ICsxODUs
NyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVu
dHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHlwZUNvbnZl
cnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0MzYsNiAr
MTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVyKQogICAgICAgICBkb3duY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNh
blNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQqIEludGVybmFsczo6aW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gZnJhbWUoKS0+
ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKEludFNpemUgeyB3aWR0aCwgaGVpZ2h0IH0p
LmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1l
bnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93
bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworfQorCiB2b2lkIEludGVy
bmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAgICAgZWxlbWVudC5zZWxlY3RDb2xvcihj
b2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgxNTI2ZTllMmQ3
Li44OTg0ZTlkMDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMzgsNiAr
MjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCYp
OwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmLCBib29sKTsKIAorICAg
IEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBoZWlnaHQpOwor
ICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2Vs
ZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBj
b2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xT
dGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZv
cm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZDA3MTZjODM4ZC4uNWJi
ZTA0ZDg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwOSw2ICsz
MDksOSBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2FuU2hvd1Bs
YWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xkZXIpOwog
CisgICAgRWxlbWVudCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWln
aHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CisK
ICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0
ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlv
bnMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNG
b3JUZXh0KERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBE
T01TdHJpbmcgbWFya01hdGNoZXMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQg
bG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+
IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
Zjk2NzYzMTNhYzYuLmY4ODE5YTk1MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0
aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9CiAgICAg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFmYWU5NzUyNjRiLi5iODE4ODNjZGRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZl
bnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0
ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgog
I2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxl
Z2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsyOTIsNiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRl
eHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3QpcG9zaXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGlu
dGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVjdHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwog
KyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENH
UmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5k
CkBAIC03NDM2LDYgKzc0MzYsMjAgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlm
CiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNlaG9sZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVRleHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50
U2l6ZSB7IHNpemUgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFj
ZWhvbGRlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IFtbW1dL
VGV4dFBsYWNlaG9sZGVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRDb250ZXh0OipwbGFjZWhvbGRl
cl0gYXV0b3JlbGVhc2VdIDogbmlsKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVUZXh0
UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbEluc2VydFRl
eHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZv
ciB3aWxsSW5zZXJ0VGV4dC4KKyAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBkeW5h
bWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAgICBf
cGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250
ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hl
bkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykK
IHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4wOWE5MjYwZjBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlL
aXQvVUlLaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRDb250ZXh0
OworfQorCitAaW50ZXJmYWNlIFdLVGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vob2xkZXIK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0OworCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYpZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxh
Y2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xk
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFkNThkN2JlNTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBs
YWNlaG9sZGVyLm1tCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgiCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCisjaW1wb3J0IDxXZWJD
b3JlL0VsZW1lbnRDb250ZXh0Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1RleHRQbGFjZWhvbGRl
ciB7CisgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgX2VsZW1lbnRDb250ZXh0OworfQorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50Q29udGV4dDooY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmKWNvbnRleHQKK3sKKyAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIF9lbGVtZW50Q29udGV4dCA9IGNvbnRleHQ7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JillbGVt
ZW50Q29udGV4dAoreworICAgIHJldHVybiBfZWxlbWVudENvbnRleHQ7Cit9CisKKy0gKE5TQXJy
YXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAqKXJlY3RzCit7CisgICAgcmV0dXJuIEBbIFtbW1dL
VGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoQ0dSZWN0Ol9lbGVtZW50Q29udGV4dC5i
b3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLVGV4dFNlbGVjdGlvblJlY3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Rl
eHRTZWxlY3Rpb25SZWN0LmgKaW5kZXggOGQ1OGZlMWZhNmIuLmU2NTY2M2UwMDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKQEAg
LTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiAKIEBp
bnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNl
bGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggOTkxMDMzNWZiNWIuLmZhNTkwMGJlMWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJl
Y3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9CiAKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0
KGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVj
dGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVj
dGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVh
Li4zYzMyOWM5MWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCkBAIC00NTcsNiArNDU3LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBs
YWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRU
ZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVUZXh0UGxh
Y2Vob2xkZXIoY29uc3QgRWxlbWVudENvbnRleHQmIHBsYWNlaG9sZGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlVGV4dFBsYWNlaG9sZGVyIHsgcGxhY2Vob2xkZXIg
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0
Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rp
b25EYXRhKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDRjYTY4MzIyYzkzLi4yODdjMDUwZDY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYgKzE3MzQsOCBAQAogCQlDRTFBMEJE
MjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3
NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlDRTFBMEJENjFBNDhFNkM2MDA1
NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi87IH07CiAJCUNF
MUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAv
KiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8qIFdL
VGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAq
LzsgfTsKKwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNUUy
NDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovOyB9OwogCQlDRTQ1OTQ1
QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlG
IC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4
NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9w
dGlvbnMuaCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGlj
RmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdz
Q2hhbmdlZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYgKzUwNTMsOCBAQAogCQlDRTFBMEJD
QzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4
dFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFBsYWNlaG9sZGVyLmg7IHBhdGgg
PSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07IHBhdGggPSBpb3MvV0tUZXh0UGxh
Y2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVBMjQwRjg1
QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4
dFNlbGVjdGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1Rl
eHRTZWxlY3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9u
UmVjdC5tbTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBACiAJCQkJMjZGMTBCRTcxOTE4N0Uy
RTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCiAJCQkJ
MzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcuaCAqLywKIAkJ
CQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbSAqLywK
KwkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLywK
KwkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8s
CiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAq
LywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5t
bSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1OCw3IEBACiAJCQkJMkRENjdBMzUx
QkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5MDAwRkNGQzkgLyogV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTIxMjE1RjI0
MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyogV0tUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3NkE2MjJDNjIzMjUwMDdENjI5
NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTI2NDgsNiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3QUQxQjgwMEY5N0EzNSAvKiBXS1Nh
ZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxREIwMTk0NDIxMUNGMDA1
MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OEZGMzMy
MjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMjRlZmIzZGFkZDkuLjcwN2ZjNmJkYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJv
b2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAg
ICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29s
KTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisK
ICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJj
YmEuLmI0YWVhNzU1NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTExOSw2ICsxMTksOCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29u
dGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0
KSAtPiAoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5
bmMKIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFs
Q3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNl
bGVjdGlvbkFmdGVySW5zZXJ0aW9uKQorICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3Jl
OjpJbnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxh
Y2Vob2xkZXIpIEFzeW5jCisgICAgUmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHN0cnVjdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlcikgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAg
U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIzNGZm
NjIxYmM0Li4xMTA5MzA5YjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2ICsxMjcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2
ZW50Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZl
cnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBjb25zdAogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gSW5zZXJ0aW5nIHRoZSBwbGFj
ZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNhbiBkbyBhbnl0aGluZywgaW5jbHVk
aW5nIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBjb3JlUGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvIHBsYWNl
aG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhvbGRlcihzaXplKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFj
ZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlbW92ZVRleHRQ
bGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChwbGFjZWhvbGRlcikp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxl
bWVudCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxh
Y2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oKmVsZW1lbnQpKTsKKyAg
ICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVT
ZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERl
bHRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392618</attachid>
            <date>2020-03-05 13:46:37 -0800</date>
            <delta_ts>2020-03-05 14:22:24 -0800</delta_ts>
            <desc>For the bots</desc>
            <filename>ForBots_1.patch</filename>
            <type>text/plain</type>
            <size>51702</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBiMTRmYzUwNDY5MDE5MGVjNjkxYzE3NDllNTViMDkwNDhiYmU5ZGY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDUgTWFyIDIwMjAgMTI6NDU6NDkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBGb3IgdGhl
IGJvdHM7IGZpcnN0IHBhc3MgYXQgaW1wbGVtZW50aW5nIHRleHQgcGxhY2Vob2xkZXJzCgotLS0K
IC4uLnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCB8IDEyICsrKysK
IC4uLi9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCAgICB8IDQ2ICsrKysr
KysrKysrKwogLi4uaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIHwg
MTIgKysrKwogLi4uL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCAgICAgICAgIHwg
NDEgKysrKysrKysrKysKIC4uLmluc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbCB8IDEyICsrKysKIC4uLi9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgICAg
ICAgICB8IDQwICsrKysrKysrKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3Rl
ZC5odG1sICAgICAgfCAxMiArKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sICAg
ICAgICAgICAgICAgfCA0MSArKysrKysrKysrKwogLi4uL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3MgIHwgMTIgKysrKwogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
ICAgICAgICAgICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIHwgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyAgICAg
ICAgICAgICAgICAgICB8ICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAg
ICAgICAgICAgfCA0NyArKysrKysrKysrKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmggICAgICAgICAgICAgICB8ICA1ICsrCiAuLi4vaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgICAgfCA3MSArKysrKysrKysrKysrKysrKysrCiAuLi4vaHRtbC9zaGFkb3cv
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICAgICAgfCA1MyArKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaCAgIHwgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCAgICAgICAgICB8IDEyICsrKysKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggICAgICAgICAgICB8ICAzICsKIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAzICsKIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICAzICsKIC4uLi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSB8IDE2ICsrKystCiAuLi4vV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCAgfCA0MiArKysrKysrKysrKwogLi4uL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tIHwgNTggKysrKysrKysrKysrKysr
CiAuLi4vVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmggICAgICAgfCAgMyArLQog
Li4uL1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSAgICAgIHwgIDcgKysKIC4u
Li9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gICB8IDE4ICsrKysrCiAu
Li4vV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgOCArKysKIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAzICsKIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICAyICsKIC4uLi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gICAgICB8IDE5ICsrKysrCiAzMiBmaWxl
cyBjaGFuZ2VkLCA2MTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1v
dmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0
LWZpZWxkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVj
dGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmll
bGQtZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3Nz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5k
LXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGRiNGJkYmNj
YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZy
b20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRl
ZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRl
c3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MWEyY2M3ZGRjMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5k
LXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5p
dGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVz
dC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNl
aG9sZGVyIHRoYXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlz
dWFsbHkgbG9va3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRo
aXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVy
VHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFs
dWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5w
dXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVy
LmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UK
KyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+
IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJv
bSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25S
YW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgbGV0IHBsYWNlaG9s
ZGVyRWxlbWVudCA9IG51bGw7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
Ly8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBo
YXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAg
ICBwbGFjZWhvbGRlckVsZW1lbnQgPSBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUg
KiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBs
YWNlaG9sZGVyRWxlbWVudCk7CisgICAgfQorICAgIAorICAgIC8vIERlZm9jdXMgZmllbGQgdG8g
aGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRG
b3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5yZW1vdmVUZXh0UGxhY2Vob2xkZXIo
cGxhY2Vob2xkZXJFbGVtZW50KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OGIz
YjUxYmY2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVu
dGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdl
YktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xh
c3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvICAgICAgZnJvbSBDdXBl
cnRpbm8hPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRp
dGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGQwMjMx
YTEyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291
cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRl
eHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJsZTwv
Y29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0IiBz
dHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFj
ayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyBmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCB0ZXN0RWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKHRlc3RFbGVtZW50KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5mb2N1cygp
LCB0ZXN0RWxlbWVudCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSB0ZXN0
RWxlbWVudC50ZXh0Q29udGVudC5pbmRleE9mKCJmcm9tIik7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25P
ZkZyb20sIHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0
RWxlbWVudCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRl
eHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKwor
ICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5ibHVyKCks
IHRlc3RFbGVtZW50LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU1
OThiMDQxOGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRl
ciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1
biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0i
aW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iICAgICAgIj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZmM0NTk0NzdmNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10
ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4w
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4g
d2hlbiBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRo
aXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVy
VHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgcGxh
Y2Vob2xkZXI9IkZBSUwiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVs
ZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1
cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAw
KTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2Ug
YXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3
aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmlu
c2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAg
IH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0
IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCks
IGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZTAyM2EwYWQxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlh
bC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5j
c3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9s
ZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg
cnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlk
PSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZyb20g
Q3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDdhODBkYjY1OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxl
PTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMg
aW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4g
V2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0
IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJ
bnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9j
dXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZy
b20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRp
b25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVj
YXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRo
ZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRl
cm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAq
Lyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisg
ICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0
LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMWVlNDNhYTIxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIgQEAKK0Bm
b250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIuLi8uLi9y
ZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgvMSBBaGVt
OworICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8gbWFrZSBk
ZWJ1Z2dpbmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAgY2FyZXQt
Y29sb3I6IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYTcy
MWZiYjFhZDguLmFkYjg0YjAwOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcg
QEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNw
cAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkLi45
NzFlMDUxYjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDIzNyw2ICs0MjM3LDcgQEAKIAkJQ0UwOEMzRDIxNTJCNTk5QTAw
MjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKIAkJQ0UxODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQzMUY3MkU1
QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxQTUwMUYyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVy
SG9sZGluZ1RhbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMUE1MDFEMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UyMTIxNTgy
NDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTUzMjQwREJEMzAwMDZFRDQ0
MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKIAkJQ0U1MTY5RTcyMUYxQjg0
NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTUxNjlFNTIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTVGQTI1NTIw
OUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVGQTI1MzIwOUU0OEM1MDA1
MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTM3LDYgKzE0MTM4LDggQEAKIAkJ
Q0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWFya2VkVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRDIyRDUz
NTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01U
aW1lckhvbGRpbmdUYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUE1MDFF
MjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTVRpbWVySG9sZGluZ1RhbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFMjEyMTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4NjFDQTM2MERGMDBCNEE1
N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMu
aDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1N0YgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3Bw
OyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENv
bG9ySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODA2Miw2ICsxODA2NSw4IEBACiAJCQkJNDUxMjUwMjExNURDRTM3RDAwMkY4
NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmggKi8sCiAJCQkJMTQyQjk3QzcxMzEzODk0MzAwOEJF
RjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgKi8sCiAJCQkJMTQyQjk3QzgxMzEz
ODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oICovLAorCQkJCUNFMjEy
MTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCAqLywKKwkJ
CQlDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICov
LAogCQkJCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVt
ZW50LmNwcCAqLywKIAkJCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5oICovLAogCQkJKTsKQEAgLTMyNzgyLDYgKzMyNzg3LDcgQEAKIAkJCQlF
NEQ5ODhCNDE3QkZEMUY2MDA4NEZCODggLyogVGV4dE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRDOTFBMEUxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyogVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RjYwODI0NUU1OTAw
MUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjRC
NDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhC
MUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9odG1sLmNzcwppbmRleCBlNzRiYmE5YWYxMC4uNjIyODBmOWFiMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
aHRtbC5jc3MKQEAgLTY5OCw2ICs2OTgsMTIgQEAgdGV4dGFyZWEgewogICAgIHBvaW50ZXItZXZl
bnRzOiBub25lICFpbXBvcnRhbnQ7CiB9CiAKKzo6LXdlYmtpdC10ZXh0LXBsYWNlaG9sZGVyIHsK
KyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsK
KyAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50OworfQorCiBpbnB1dDo6cGxhY2Vo
b2xkZXIgewogICAgIHdoaXRlLXNwYWNlOiBwcmU7CiAgICAgd29yZC13cmFwOiBub3JtYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNi4uZGE4MDQ0ZDczNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtNDYxLDYgKzQ2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNT
cGluQnV0dG9uRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzVGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9s
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA2
YzZkODNhNzI4Zi4uOTU0MTQ1NGQ5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MTEwLDYgKzExMCw3IEBACiAjaW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVk
ZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNs
dWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0
cy5oIgpAQCAtMzMwOSw2ICszMzEwLDUwIEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChU
ZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKICAgICByZXR1cm4gcGxhaW5UZXh0
KHNlbGVjdGlvbi5zdGFydCgpLCBzZWxlY3Rpb24uZW5kKCksIGJlaGF2aW9yKS5yZXBsYWNlV2l0
aExpdGVyYWwoJ1wwJywgIiIpOwogfQogCitSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4g
RWRpdG9yOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSB8fCAhbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQgeyB0aGlzLT5kb2N1bWVudCgpIH07CisK
KyAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQpOworCisgICAgYXV0
byBwbGFjZWhvbGRlciA9IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
c2l6ZSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLT5pbnNl
cnROb2RlKHBsYWNlaG9sZGVyLmNvcHlSZWYoKSk7CisKKyAgICAvLyBTZXQgdGhlIHRleHQgaW5z
ZXJ0aW9uIHBvaW50IHRvIGJlIGFmdGVyIHRoZSBwbGFjZWhvbGRlci4KKyAgICBhdXRvIG5ld1Nl
bGVjdGlvbiA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQpOworICAgIG5ld1NlbGVjdGlvbi0+c2V0
U3RhcnRBZnRlcihwbGFjZWhvbGRlcik7CisgICAgbmV3U2VsZWN0aW9uLT5zZXRFbmRBZnRlcihw
bGFjZWhvbGRlcik7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5l
d1NlbGVjdGlvbi5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3Nl
VHlwaW5nOjpZZXMpOworCisgICAgcmV0dXJuIHBsYWNlaG9sZGVyOworfQorCit2b2lkIEVkaXRv
cjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmIHBsYWNlaG9s
ZGVyKQoreworICAgIEFTU0VSVChwbGFjZWhvbGRlci5pc0Nvbm5lY3RlZCgpKTsKKworICAgIFJl
ZjxEb2N1bWVudD4gZG9jdW1lbnQgeyB0aGlzLT5kb2N1bWVudCgpIH07CisKKyAgICAvLyBTYXZl
IG9mZiBzdGF0ZSBhbmQgY29tcHV0ZSB0aGUgaW5kZXggb2YgdGhlIHBsYWNlaG9sZGVyIHNvIHRo
YXQgd2UgY2FuIHNldCB0aGUKKyAgICAvLyB0ZXh0IGluc2VydGlvbiBwb3NpdGlvbiB0byBqdXN0
IGJlZm9yZSB0aGUgcGxhY2Vob2xkZXIgZWxlbWVudCBhZnRlciByZW1vdmFsLgorICAgIGF1dG8g
c2F2ZWRSb290RWRpdGFibGVFbGVtZW50ID0gcGxhY2Vob2xkZXIucm9vdEVkaXRhYmxlRWxlbWVu
dCgpOworICAgIGF1dG8qIHNhdmVkUGFyZW50Tm9kZSA9IHBsYWNlaG9sZGVyLnBhcmVudE5vZGUo
KTsKKyAgICB1bnNpZ25lZCBzYXZlZFBsYWNlaG9sZGVySW5kZXggPSBwbGFjZWhvbGRlci5jb21w
dXRlTm9kZUluZGV4KCk7CisKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGUgY3VycmVudCBzZWxlY3Rp
b24gaWYgaXQgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHBsYWNlaG9sZGVyIHdhcyBpbnNlcnRlZAor
ICAgIC8vIGFuZCByZXN0b3JlIGl0IGFmdGVyIHRleHQgaW5zZXJ0aW9uLgorICAgIHBsYWNlaG9s
ZGVyLnJlbW92ZSgpOworCisgICAgLy8gU2V0IHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB0byBi
ZSBiZWZvcmUgd2VyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIGlmIChtX2ZyYW1l
LnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50LT5mb2N1c2VkRWxl
bWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkgeworICAgICAgICBhdXRvIG5ld1Nl
bGVjdGlvbiA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHNhdmVkUGFyZW50Tm9kZSwgc2F2ZWRQ
bGFjZWhvbGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUsIHNhdmVkUGxhY2Vob2xkZXJJbmRleCk7
CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdTZWxlY3Rp
b24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzKTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lkdGgo
SW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogV2lkdGggYWRqdXN0bWVudCBkb2Vzbid0
IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGY4Njc3
YjMxOGU4Li5kZTRjMmNlY2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Miw2ICs4
Miw3IEBAIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hl
Y2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ7CiAKIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBGb250QXR0cmlidXRl
czsKQEAgLTU0OSw2ICs1NTAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwogCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFjZWhv
bGRlcihjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVUZXh0
UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERv
Y3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCkBAIC02NDEsNiArNjQ1LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvIHsgZmFsc2UgfTsKICAg
ICBIYXNoU2V0PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50Pj4gbV9pbWFnZUVsZW1lbnRzVG9Mb2Fk
QmVmb3JlUmV2ZWFsaW5nU2VsZWN0aW9uOworICAgIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50PiBtX3RleHRQbGFjZWhvbGRlckVsZW1lbnQ7CiB9OwogCiBpbmxpbmUgdm9pZCBFZGl0b3I6
OnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMjU4OTA0MGUxYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQu
Y3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKwordXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKKworUmVmPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNp
emUmIHNpemUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFBsYWNlaG9sZGVyRWxl
bWVudCB7IGRvY3VtZW50LCBzaXplIH0pOworfQorCitUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSkKKyAgICA6IEhUTUxEaXZFbGVtZW50IHsgZGl2VGFnLCBkb2N1bWVudCB9Cit7Cisg
ICAgc2V0UHNldWRvKEF0b21TdHJpbmcgeyAiLXdlYmtpdC10ZXh0LXBsYWNlaG9sZGVyIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgp
OworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHNpemUuaGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworfQorCithdXRvIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IEluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0Cit7CisgICAgSFRNTERpdkVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGlu
c2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKKyAgICBpZiAoaW5zZXJ0aW9uVHlw
ZS5jb25uZWN0ZWRUb0RvY3VtZW50KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0g
cGFyZW50T2ZJbnNlcnRlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7
CisgICAgfQorICAgIHJldHVybiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKK30K
Kwordm9pZCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92
YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
KQoreworICAgIEhUTUxEaXZFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAoIXJlbW92YWxUeXBlLmRpc2Nvbm5l
Y3RlZEZyb21Eb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBzaGFkb3dI
b3N0ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIodHJ1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uY2JhODQwOTMwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgTGF5b3V0
U2l6ZSYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFRleHRQbGFjZWhvbGRlckVsZW1lbnQo
RG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICAvLyBFbGVtZW50CisgICAgYm9v
bCBpc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisKKyAgICAvLyBOb2RlCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmluYWw7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRQbGFjZWhv
bGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpO
b2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUo
ZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0
aW9uUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaApp
bmRleCA0OTgyYzYzYTAwMy4uNWNhYjQwNWIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1NlbGVjdGlvblJlY3QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBTZWxlY3Rpb25SZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZWxlY3Rpb25SZWN0KGNvbnN0
IEludFJlY3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50IGNvbHVtbk51bWJlcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBp
c0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bW92ZSBzb21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0byBhbiBhdXhpbGxhcnkgc3RydWN0LgogICAg
IFNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYsIFRleHREaXJlY3Rpb24sIGludCwgaW50LCBp
bnQsIGludCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0OTJkZjJmYzdjNy4u
ZjA5MjM5NmY2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NSw2
ICsxODUsNyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0
Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHlw
ZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0
MzYsNiArMTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVs
ZW1lbnQmIGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVyKQogICAgICAgICBkb3duY2Fz
dDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuc2V0Q2FuU2hvd1BsYWNlaG9s
ZGVyKGNhblNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQqIEludGVybmFsczo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gZnJh
bWUoKS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKEludFNpemUgeyB3aWR0aCwgaGVp
Z2h0IH0pLmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+
KGVsZW1lbnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xk
ZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworfQorCiB2b2lk
IEludGVybmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAgICAgZWxlbWVudC5zZWxlY3RD
b2xvcihjb2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgxNTI2
ZTllMmQ3Li44OTg0ZTlkMDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
MzgsNiArMjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxl
bWVudCYpOwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmLCBib29sKTsK
IAorICAgIEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBoZWln
aHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKKwogICAgIHZv
aWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiBjb2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4gZm9ybUNv
bnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZDA3MTZjODM4
ZC4uNWJiZTA0ZDg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMw
OSw2ICszMDksOSBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2Fu
U2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xk
ZXIpOwogCisgICAgRWxlbWVudCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9u
ZyBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVu
dCk7CisKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0
cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmlu
ZE9wdGlvbnMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1h
dGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRp
b25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5z
aWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01T
dHJpbmc+IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggZjk2NzYzMTNhYzYuLmY4ODE5YTk1MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9
CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNjdXJlZENv
bnRlbnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFmYWU5NzUyNjRiLi5iODE4ODNjZGRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1l
bnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3NDaGFuZ2Vk
V2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmgiCisj
aW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVj
dC5oIgogI2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldL
VUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsyOTIsNiBAQCArIChXS1RleHRQb3NpdGlv
biAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3QpcG9zaXRpb25SZWN0OwogCiBAZW5kCiAK
LQogQGludGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVjdHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25S
ZWN0cwogKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhG
aXJzdENHUmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7
CiBAZW5kCkBAIC03NDM2LDYgKzc0MzYsMjAgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9p
bnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAog
I2VuZGlmCiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNlaG9sZGVyV2l0aFNpemU6KENHU2l6ZSlz
aXplIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVRleHRQbGFjZWhvbGRlciAqKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29y
ZTo6SW50U2l6ZSB7IHNpemUgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+
JiBwbGFjZWhvbGRlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/
IFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRDb250ZXh0OipwbGFj
ZWhvbGRlcl0gYXV0b3JlbGVhc2VdIDogbmlsKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1v
dmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbElu
c2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBw
b3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4KKyAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vob2xkZXIg
PSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQorICAg
ICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1l
bnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogc3RhdGlj
IFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5z
ZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3Zp
ZGVycykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOWE5MjYwZjBmNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRD
b250ZXh0OworfQorCitAaW50ZXJmYWNlIFdLVGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vo
b2xkZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0OworCistIChjb25zdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxh
Y2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFkNThk
N2JlNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
VGV4dFBsYWNlaG9sZGVyLm1tCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgiCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCisjaW1wb3J0
IDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1RleHRQbGFj
ZWhvbGRlciB7CisgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgX2VsZW1lbnRDb250ZXh0Owor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50Q29udGV4dDooY29uc3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQKK3sKKyAgICBpZiAoIShzZWxmID0gW3NlbGYgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9lbGVtZW50Q29udGV4dCA9IGNvbnRleHQ7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JillbGVtZW50Q29udGV4dAoreworICAgIHJldHVybiBfZWxlbWVudENvbnRleHQ7Cit9CisKKy0g
KE5TQXJyYXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAqKXJlY3RzCit7CisgICAgcmV0dXJuIEBb
IFtbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoQ0dSZWN0Ol9lbGVtZW50Q29u
dGV4dC5ib3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBdOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKaW5kZXggOGQ1OGZlMWZhNmIuLmU2NTY2M2UwMDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7
CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggOTkxMDMzNWZiNWIuLjU4MWI3YjNl
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVj
dGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9
CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5z
ZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVj
dGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDhiNGUwNDkzYzVhLi4zYzMyOWM5MWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NTcsNiArNDU3LDI0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29u
c3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50Q29udGV4
dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgRWxlbWVudENvbnRleHQmIHBsYWNlaG9sZGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlVGV4dFBsYWNlaG9sZGVy
IHsgcGxhY2Vob2xkZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlE
KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29u
c3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDRjYTY4MzIyYzkzLi4yODdjMDUwZDY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYgKzE3MzQs
OCBAQAogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkND
MUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlDRTFB
MEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJ
LmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0
OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYyNDBFRTU3
MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIuaCAqLzsgfTsKKwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4
dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICov
OyB9OwogCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0NUEy
NDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJQ0U1NTBF
MTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEg
LyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJFNjRG
IC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBX
S1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYgKzUwNTMs
OCBAQAogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0
IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8q
IFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5w
dXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBFRTU3MTAw
NkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFBsYWNl
aG9sZGVyLmg7IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9s
ZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07IHBhdGgg
PSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rp
b25SZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQwRjg1Qjkw
MDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEg
LyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBACiAJCQkJ
MjZGMTBCRTcxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6
ZXIubW0gKi8sCiAJCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmll
d1ZpZXcuaCAqLywKIAkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2
aWV3Vmlldy5tbSAqLywKKwkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIuaCAqLywKKwkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIubW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNl
bGVjdGlvblJlY3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0
U2VsZWN0aW9uUmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tU
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1OCw3IEBA
CiAJCQkJMkRENjdBMzUxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5
MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rp
b25SZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyog
V0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3NkE2
MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTI2NDgsNiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3QUQxQjgw
MEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
REIwMTk0NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBs
YWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggMjRlZmIzZGFkZDkuLjcwN2ZjNmJkYTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAg
cHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJ
bnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRl
ckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFj
ZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0
OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggMmFlMWNlMmJjYmEuLmI0YWVhNzU1NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTExOSw2ICsxMTks
OCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0RG9j
dW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4
dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbmQpCiAgICAg
U2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wgc2hvdWxk
UmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKQorICAgIEluc2VydFRleHRQbGFj
ZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5jCisgICAgUmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlcikgLT4gKCkgQXN5bmMK
ICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDIzNGZmNjIxYmM0Li4xMTA5MzA5YjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2ICsxMjcs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Vc2VyQWdlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBXZWJQYWdl
OjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBjb25zdAog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IElu
dFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gSW5z
ZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNhbiBkbyBh
bnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJh
bWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhv
bGRlcihzaXplKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNvbnRleHRG
b3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lkIFdlYlBh
Z2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYg
cGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4
dChwbGFjZWhvbGRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9
IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4o
KmVsZW1lbnQpKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBX
ZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBp
bnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2
KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392624</attachid>
            <date>2020-03-05 14:22:24 -0800</date>
            <delta_ts>2020-03-05 15:42:13 -0800</delta_ts>
            <desc>For the bots</desc>
            <filename>ForBots_2.patch</filename>
            <type>text/plain</type>
            <size>51366</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBjNGZjOGI3ZTY5ODQwMzM3NTA0ZjRmMzI1NjNjYTBjNTE1NmUwMTdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDUgTWFyIDIwMjAgMTI6NDU6NDkgLTA4MDAKU3ViamVjdDogW1BBVENIXSBGb3IgdGhl
IGJvdHM7IGZpcnN0IHBhc3MgYXQgaW1wbGVtZW50aW5nIHRleHQgcGxhY2Vob2xkZXJzCgotLS0K
IC4uLnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCB8IDEyICsrKysK
IC4uLi9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCAgICB8IDQ2ICsrKysr
KysrKysrKwogLi4uaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIHwg
MTIgKysrKwogLi4uL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCAgICAgICAgIHwg
NDEgKysrKysrKysrKysKIC4uLmluc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbCB8IDEyICsrKysKIC4uLi9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgICAg
ICAgICB8IDQwICsrKysrKysrKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3Rl
ZC5odG1sICAgICAgfCAxMiArKysrCiAuLi4vaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sICAg
ICAgICAgICAgICAgfCA0MSArKysrKysrKysrKwogLi4uL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3MgIHwgMTIgKysrKwogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
ICAgICAgICAgICAgICAgICAgIHwgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIHwgIDYgKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyAgICAg
ICAgICAgICAgICAgICB8ICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAg
ICAgICAgICAgfCA0NyArKysrKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oICAgICAgICAgICAgICAgfCAgNCArKwogLi4uL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRl
ckVsZW1lbnQuY3BwICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKwogLi4uL2h0bWwvc2hhZG93
L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAgICAgIHwgNTMgKysrKysrKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmggICB8ICAyICstCiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAxMiArKysrCiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oICAgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgICAgICAgICAgfCAgMyArCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgMyArCiAuLi4vVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gfCAxNiArKysrLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmggIHwgNDIgKysrKysrKysrKysKIC4uLi9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbSB8IDU4ICsrKysrKysrKysrKysr
KwogLi4uL1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oICAgICAgIHwgIDMgKy0K
IC4uLi9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0gICAgICB8ICA3ICsrCiAu
Li4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tICAgfCAxOCArKysrKwog
Li4uL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDggKysrCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMyArCiAuLi4v
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgMiArCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tICAgICAgfCAxOSArKysrKwogMzIgZmls
ZXMgY2hhbmdlZCwgNjEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVt
b3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZp
ZWxkLWV4cGVjdGVkLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNz
cwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFj
ZWhvbGRlckVsZW1lbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0K
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkYjRiZGJj
Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBm
cm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0
ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0
UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0
ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTFhMmNjN2RkYzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFj
ZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZp
c3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZh
bHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlu
cHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBl
ci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNl
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZy
b20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9u
UmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhv
bGRlckVsZW1lbnQgPSBudWxsOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAg
IC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMg
aGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAg
ICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1
ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgICAgICBjb25zb2xlLmFzc2VydChw
bGFjZWhvbGRlckVsZW1lbnQpOworICAgIH0KKyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRv
IGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KHBsYWNlaG9sZGVyRWxlbWVudCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODhi
M2I1MWJmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRl
bnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyAgICAgIGZyb20gQ3Vw
ZXJ0aW5vITwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBkMDIz
MWExMmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0
ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8
L2NvZGU+IGVsZW1lbnQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1
bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2siIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbih0ZXN0RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMo
KSwgdGVzdEVsZW1lbnQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVz
dEVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9u
T2ZGcm9tLCB0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0
aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAg
ICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVz
dEVsZW1lbnQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigp
LCB0ZXN0RWxlbWVudCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVs
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41
NTk4YjA0MThiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xk
ZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy
dW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9
ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IiAgICAgICI+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGZjNDU5NDc3ZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHkt
dGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEu
MCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVu
IHdoZW4gYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHBs
YWNlaG9sZGVyPSJGQUlMIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVF
bGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBh
d2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9j
dXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwg
MCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdl
IGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUg
d2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1
dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5p
bnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAg
ICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigp
LCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NGUwMjNhMGFkMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRp
YWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3Qu
Y3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhv
bGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJl
IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBp
ZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9t
IEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ3YTgwZGI2NTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJl
Y2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0
aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgor
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1
dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjFlZTQzYWEyMTBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpAQCAtMCwwICsxLDEyIEBACitA
Zm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICBzcmM6IHVybCgiLi4vLi4v
cmVzb3VyY2VzL0FoZW0udHRmIik7Cit9CisKKy50ZXN0IHsKKyAgICBmb250OiAyNXB4LzEgQWhl
bTsKKyAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCUlOworICAgIC8qIFRvIG1ha2Ug
ZGVidWdnaW5nIGVhc2llciwgbWFrZSB0aGUgY2FyZXQgc3RhbmQgb3V0LiAqLworICAgIGNhcmV0
LWNvbG9yOiBibHVlOworICAgIGNvbG9yOiB5ZWxsb3c7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE3
MjFmYmIxYWQ4Li5hZGI4NGIwMDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNDgsNiArMTM0OCw3
IEBAIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAog
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAoraHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKIAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5j
cHAKIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZC4u
OTcxZTA1MWI5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEw
MDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJF
NUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1l
ckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4
MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0
NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4
NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAw
NTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJ
CUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1
MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
VGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAx
RTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
Lmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNw
cDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBD
b2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJG
ODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhC
RUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIx
MjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJ
CQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAq
LywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxl
bWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJl
ZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJ
RTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHls
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkw
MDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0
QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4
QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MKaW5kZXggZTc0YmJhOWFmMTAuLjYyMjgwZjlhYjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2h0bWwuY3NzCkBAIC02OTgsNiArNjk4LDEyIEBAIHRleHRhcmVhIHsKICAgICBwb2ludGVyLWV2
ZW50czogbm9uZSAhaW1wb3J0YW50OwogfQogCis6Oi13ZWJraXQtdGV4dC1wbGFjZWhvbGRlciB7
CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207
CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKK30KKwogaW5wdXQ6OnBsYWNl
aG9sZGVyIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgIHdvcmQtd3JhcDogbm9ybWFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggMjhjYWQ4OTEyMDYuLmRhODA0NGQ3MzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
U3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
NmM2ZDgzYTcyOGYuLjk1NDE0NTRkOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlRleHRDaGVja2luZ0hlbHBlci5oIgogI2luY2x1
ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5j
bHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5p
dHMuaCIKQEAgLTMzMDksNiArMzMxMCw1MCBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHQo
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiAgICAgcmV0dXJuIHBsYWluVGV4
dChzZWxlY3Rpb24uc3RhcnQoKSwgc2VsZWN0aW9uLmVuZCgpLCBiZWhhdmlvcikucmVwbGFjZVdp
dGhMaXRlcmFsKCdcMCcsICIiKTsKIH0KIAorUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+
IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkgfHwgIW1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBSZWY8RG9jdW1lbnQ+IGRvY3VtZW50IHsgdGhpcy0+ZG9jdW1lbnQoKSB9Owor
CisgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGRvY3VtZW50KTsKKworICAgIGF1
dG8gcGxhY2Vob2xkZXIgPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQs
IHNpemUpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS0+aW5z
ZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisgICAgLy8gU2V0IHRoZSB0ZXh0IGlu
c2VydGlvbiBwb2ludCB0byBiZSBhZnRlciB0aGUgcGxhY2Vob2xkZXIuCisgICAgYXV0byBuZXdT
ZWxlY3Rpb24gPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBuZXdTZWxlY3Rpb24tPnNl
dFN0YXJ0QWZ0ZXIocGxhY2Vob2xkZXIpOworICAgIG5ld1NlbGVjdGlvbi0+c2V0RW5kQWZ0ZXIo
cGxhY2Vob2xkZXIpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShu
ZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKKworICAgIHJldHVybiBwbGFjZWhvbGRlcjsKK30KKwordm9pZCBFZGl0
b3I6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50JiBwbGFjZWhv
bGRlcikKK3sKKyAgICBBU1NFUlQocGxhY2Vob2xkZXIuaXNDb25uZWN0ZWQoKSk7CisKKyAgICBS
ZWY8RG9jdW1lbnQ+IGRvY3VtZW50IHsgdGhpcy0+ZG9jdW1lbnQoKSB9OworCisgICAgLy8gU2F2
ZSBvZmYgc3RhdGUgYW5kIGNvbXB1dGUgdGhlIGluZGV4IG9mIHRoZSBwbGFjZWhvbGRlciBzbyB0
aGF0IHdlIGNhbiBzZXQgdGhlCisgICAgLy8gdGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVz
dCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRv
IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCA9IHBsYWNlaG9sZGVyLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKTsKKyAgICBhdXRvKiBzYXZlZFBhcmVudE5vZGUgPSBwbGFjZWhvbGRlci5wYXJlbnROb2Rl
KCk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFjZWhvbGRlckluZGV4ID0gcGxhY2Vob2xkZXIuY29t
cHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8gRklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0
aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQK
KyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhv
bGRlci5yZW1vdmUoKTsKKworICAgIC8vIFNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9pbnQgdG8g
YmUgYmVmb3JlIHdlcmUgdGhlIHBsYWNlaG9sZGVyIHVzZSB0byBiZS4KKyAgICBpZiAobV9mcmFt
ZS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudC0+Zm9jdXNlZEVs
ZW1lbnQoKSA9PSBzYXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgYXV0byBuZXdT
ZWxlY3Rpb24gPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzYXZlZFBhcmVudE5vZGUsIHNhdmVk
UGxhY2Vob2xkZXJJbmRleCwgc2F2ZWRQYXJlbnROb2RlLCBzYXZlZFBsYWNlaG9sZGVySW5kZXgp
OworICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobmV3U2VsZWN0
aW9uLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Olllcyk7CisgICAgfQorfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VDYXJldFdpZHRo
KEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFdpZHRoIGFkanVzdG1lbnQgZG9lc24n
dCB3b3JrIGZvciByb3RhdGVkIHRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmODY3
N2IzMThlOC4uZTAzNzhhZWI3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODIsNiAr
ODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENo
ZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0
ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2VydEVkaXRhYmxlSW1hZ2UoKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBpbnNlcnRUZXh0UGxhY2Vo
b2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBE
b2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZDY3YjllMDEyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CisKK1JlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRQbGFjZWhvbGRlckVsZW1lbnQgeyBkb2N1
bWVudCwgc2l6ZSB9KTsKK30KKworVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUpCisg
ICAgOiBIVE1MRGl2RWxlbWVudCB7IGRpdlRhZywgZG9jdW1lbnQgfQoreworICAgIHNldFBzZXVk
byhBdG9tU3RyaW5nIHsgIi13ZWJraXQtdGV4dC1wbGFjZWhvbGRlciIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsIH0pOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXaWR0aCwgc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBzaXplLmhlaWdodCgpLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKK30KKworYXV0byBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5v
ZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdAor
eworICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCk7
IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAg
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2Fu
U2hvd1BsYWNlaG9sZGVyKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50
OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJl
ZSk7Cit9CisKK3ZvaWQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rv
cihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSkKK3sKKyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50
KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0
KSkKKyAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hh
ZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKHRydWUpOworICAgIH0KKyAgICBIVE1MRGl2
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2JhODQwOTMwMTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRN
TERpdkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3Qg
TGF5b3V0U2l6ZSYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQoRG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICAvLyBFbGVtZW50Cisg
ICAgYm9vbCBpc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisKKyAgICAvLyBOb2RlCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFs
VHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmluYWw7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRQ
bGFjZWhvbGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBp
c1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJl
Y3QuaAppbmRleCA0OTgyYzYzYTAwMy4uNWNhYjQwNWIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25SZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZWxlY3Rpb25SZWN0
KGNvbnN0IEludFJlY3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50IGNvbHVtbk51bWJlcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0Jiwg
Ym9vbCBpc0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbW92ZSBzb21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0byBhbiBhdXhpbGxhcnkgc3RydWN0
LgogICAgIFNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYsIFRleHREaXJlY3Rpb24sIGludCwg
aW50LCBpbnQsIGludCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0OTJkZjJm
YzdjNy4uZjA5MjM5NmY2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTE4NSw2ICsxODUsNyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHls
ZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVk
ZSAiVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
QEAgLTE0MzYsNiArMTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9s
ZGVyKEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVyKQogICAgICAgICBk
b3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuc2V0Q2FuU2hvd1Bs
YWNlaG9sZGVyKGNhblNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQqIEludGVybmFsczo6
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1
cm4gZnJhbWUoKS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKEludFNpemUgeyB3aWR0
aCwgaGVpZ2h0IH0pLmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxh
Y2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworfQor
CiB2b2lkIEludGVybmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAgICAgZWxlbWVudC5z
ZWxlY3RDb2xvcihjb2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IDgxNTI2ZTllMmQ3Li44OTg0ZTlkMDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC0yMzgsNiArMjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2aXNpYmxlUGxhY2Vob2xk
ZXIoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmLCBi
b29sKTsKIAorICAgIEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKKwog
ICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiwgY29u
c3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4g
Zm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVj
dG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZDA3
MTZjODM4ZC4uNWJiZTA0ZDg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTMwOSw2ICszMDksOSBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIHZvaWQg
c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBjYW5TaG93UGxh
Y2Vob2xkZXIpOwogCisgICAgRWxlbWVudCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIobG9uZyB3aWR0
aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQg
ZWxlbWVudCk7CisKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5n
KERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmlu
Zz4gZmluZE9wdGlvbnMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBj
b3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZp
bmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggZjk2NzYzMTNhYzYuLmY4ODE5YTk1MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlv
bkFmdGVySW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAgIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQog
ICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVj
dCgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNj
dXJlZENvbnRlbnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFmYWU5NzUyNjRiLi5iODE4
ODNjZGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3ND
aGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2ltcG9ydCAiV0tUZXh0U2VsZWN0
aW9uUmVjdC5oIgogI2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCIKICNpbXBv
cnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsyOTIsNiBAQCArIChXS1RleHRQ
b3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3QpcG9zaXRpb25SZWN0OwogCiBA
ZW5kCiAKLQogQGludGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVjdHMgOiBVSVdLQXV0b2NvcnJl
Y3Rpb25SZWN0cwogKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0
c1dpdGhGaXJzdENHUmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0Q0dSZWN0OihDR1JlY3QpbGFz
dFJlY3Q7CiBAZW5kCkBAIC03NDM2LDYgKzc0MzYsMjAgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlv
bkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1lbnRS
ZXEKIAogI2VuZGlmCiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNlaG9sZGVyV2l0aFNpemU6KENH
U2l6ZSlzaXplIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVRleHRQbGFjZWhvbGRlciAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNlcnRUZXh0UGxhY2Vob2xkZXIo
V2ViQ29yZTo6SW50U2l6ZSB7IHNpemUgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENv
bnRleHQ+JiBwbGFjZWhvbGRlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhv
bGRlciA/IFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRDb250ZXh0
OipwbGFjZWhvbGRlcl0gYXV0b3JlbGVhc2VdIDogbmlsKTsKKyAgICB9KTsKK30KKworLSAodm9p
ZClyZW1vdmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIg
d2lsbEluc2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBzdXBwb3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4KKyAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vo
b2xkZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIp
KQorICAgICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVy
LmVsZW1lbnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
c3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50
c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRl
bVByb3ZpZGVycykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOWE5MjYwZjBmNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwor
I2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEVs
ZW1lbnRDb250ZXh0OworfQorCitAaW50ZXJmYWNlIFdLVGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0
UGxhY2Vob2xkZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNv
bnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0OworCistIChjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmFkNThkN2JlNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgiCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCisj
aW1wb3J0IDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1Rl
eHRQbGFjZWhvbGRlciB7CisgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgX2VsZW1lbnRDb250
ZXh0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50Q29udGV4dDooY29uc3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQKK3sKKyAgICBpZiAoIShzZWxmID0gW3Nl
bGYgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9lbGVtZW50Q29udGV4dCA9IGNv
bnRleHQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0JillbGVtZW50Q29udGV4dAoreworICAgIHJldHVybiBfZWxlbWVudENvbnRleHQ7Cit9
CisKKy0gKE5TQXJyYXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAqKXJlY3RzCit7CisgICAgcmV0
dXJuIEBbIFtbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRXaXRoQ0dSZWN0Ol9lbGVt
ZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBdOworfQorCitAZW5kCisKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKaW5kZXggOGQ1OGZlMWZhNmIuLmU2NTY2M2Uw
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rp
b25SZWN0LmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
ICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlv
blJlY3Q7CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlv
blJlY3QKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVj
dGlvblJlY3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggOTkxMDMzNWZiNWIuLjU4
MWI3YjNlYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0
U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0
U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4
dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJl
Y3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sK
KyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9u
UmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVy
biBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6
OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCmluZGV4IDhiNGUwNDkzYzVhLi4zYzMyOWM5MWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NTcsNiArNDU3LDI0IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50
Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgRWxlbWVudENvbnRleHQmIHBsYWNl
aG9sZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlVGV4dFBsYWNl
aG9sZGVyIHsgcGxhY2Vob2xkZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2Vi
UGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRh
dGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRjYTY4MzIyYzkzLi4yODdjMDUwZDY1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYg
KzE3MzQsOCBAQAogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9Owog
CQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyog
VENDU1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEw
QkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYy
NDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyog
V0tUZXh0UGxhY2Vob2xkZXIuaCAqLzsgfTsKKwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8q
IFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVy
Lm1tICovOyB9OwogCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9u
UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0
NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJ
Q0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBE
Mjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAw
MjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0
RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYg
KzUwNTMsOCBAQAogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2Vydmlj
ZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2Vydmlj
ZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAw
NTRFRjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4
dFBsYWNlaG9sZGVyLmg7IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBs
YWNlaG9sZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07
IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRT
ZWxlY3Rpb25SZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQw
Rjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25S
ZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBE
Mjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBA
CiAJCQkJMjZGMTBCRTcxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJl
Y29nbml6ZXIubW0gKi8sCiAJCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVt
UHJldmlld1ZpZXcuaCAqLywKIAkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0
ZW1QcmV2aWV3Vmlldy5tbSAqLywKKwkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIuaCAqLywKKwkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIubW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdL
VGV4dFNlbGVjdGlvblJlY3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyog
V0tUZXh0U2VsZWN0aW9uUmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUg
LyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1
OCw3IEBACiAJCQkJMkRENjdBMzUxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4
QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRT
ZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2
MTkgLyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcx
QTY3NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTI2NDgsNiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3
QUQxQjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxREIwMTk0NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0Fs
ZXJ0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdL
VGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjRlZmIzZGFkZDkuLjcwN2ZjNmJkYTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQy
LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rp
b25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRl
eHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29u
c3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMmFlMWNlMmJjYmEuLmI0YWVhNzU1NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTExOSw2
ICsxMTksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXF1
ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdD
b250ZXh0UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbmQp
CiAgICAgU2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wg
c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKQorICAgIEluc2VydFRl
eHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5jCisgICAgUmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlcikgLT4gKCkg
QXN5bmMKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRy
b2xsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDIzNGZmNjIxYmM0Li4xMTA5MzA5YjllMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2
ICsxMjcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Vc2VyQWdlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBj
b25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNv
bnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Ly8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNh
biBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFt
ZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQ
bGFjZWhvbGRlcihzaXplKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNv
bnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lk
IFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9y
Q29udGV4dChwbGFjZWhvbGRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBm
cmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxl
bWVudD4oKmVsZW1lbnQpKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwog
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRl
bHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotLSAKMi4yNC4xIChBcHBsZSBH
aXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392637</attachid>
            <date>2020-03-05 15:42:15 -0800</date>
            <delta_ts>2020-03-06 16:28:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200305154214.patch</filename>
            <type>text/plain</type>
            <size>56447</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uNTBkODhhY2E0MDA1OTU0OWYyMjc5ZGVjYjcyZTc1
ZmI0ZTNjYTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAzLTA1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6Cisg
ICAgICAgICg6Oi13ZWJraXQtdGV4dC1wbGFjZWhvbGRlcik6IERlZmluZSB0aGUgYmFzZSBzdHls
ZXMgZm9yIHRoZSBwbGFjZWhvbGRlci4gSXQgYWN0cyBhcyBhbiBpbmxpbmUKKyAgICAgICAgZWxl
bWVudCwgdmVydGljYWxseSBhbGlnbmVkIHRvIHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGJ1dCBk
b2VzIG5vdCBwYWludCAoaS5lLiAidmlzaWJpbGl0eTogaGlkZGVuIikuCisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNlaG9sZGVy
RWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlkZSB0aGlz
CisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRQbGFjZWhv
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6
CisgICAgICAgIEluc2VydCBhIG5ldyBwbGFjZWhvbGRlciBvciByZW1vdmUgYW4gZXhpc3Rpbmcg
b25lLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCk6IFNldCBpbmxpbmUgc3R5
bGVzIHRvIHNpemUgdGhlIHBsYWNlaG9sZGVyLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBsYWNl
aG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIg
aXMgaW5zZXJ0ZWQgaW5zaWRlIGFuCisgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
IChlLmcuIDxpbnB1dD4gb3IgPHRleHRhcmVhPikgdGhlbiBoaWRlIHRoZSBIVE1MIHBsYWNlaG9s
ZGVyIHRleHQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpyZW1v
dmVkRnJvbUFuY2VzdG9yKTogSWYgdGhlIHBsYWNlaG9sZGVyIHdhcyByZW1vdmVkIGZyb20gaW5z
aWRlCisgICAgICAgIGFuIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHRoZW4gc2hvdyB0aGUg
SFRNTCBwbGFjZWhvbGRlciB0ZXh0LgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRQbGFjZWhv
bGRlckVsZW1lbnQuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1NlbGVjdGlvblJlY3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBm
cm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNh
ZjVlMDUuLjM5OTNhMGYyNWRlMzFjOWJlMWJiYWNmNTA5NTkxZTQ5ZTJjOWEyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDMtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5n
IGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MTA3Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRz
IHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlvbnMgLWluc2VydFRleHRQbGFjZWhvbGRl
cldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9sZGVyLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluc2VydFRleHRQbGFj
ZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxsSW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIFVJVGV4dElucHV0IHByb3Rv
Y29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQgYW5kIGNhbGwKKyAgICAgICAgdGhlIGNv
cnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5p
dFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxl
bWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDogUmVtb3ZlIGFuIHVu
bmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0gaGVyZS4KKyAgICAgICAgVGhpcyBmaWxl
IGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUtQy9DKysgZmlsZXMgc28gdGhhdCAjcHJh
Z21hIGlzIHVubmVjZXNzYXJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5tbToKKyAgICAgICAgKC1bV0tUZXh0U2VsZWN0aW9uUmVjdCBpbml0V2l0aENHUmVj
dDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKTog
QWRkZWQKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVUZXh0UGxhY2Vob2xk
ZXIpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGQgbmV3IG1lc3NhZ2VzIHRvIGlu
c2VydCBhbmQgcmVtb3ZlIGEgcGxhY2Vob2xkZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRU
ZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZW1vdmVUZXh0UGxh
Y2Vob2xkZXIpOgorICAgICAgICBUdXJuIGFyb3VuZCBhbmQgY2FsbCB0aGUgY29ycmVzcG9uZGlu
ZyBFZGl0b3IgZnVuY3Rpb25zLgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENh
dGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYTcyMWZiYjFhZDhhNWFhNmJkYTA5
YjYzYjNhMmE5ZDk5N2M5MTEyZi4uYWRiODRiMDA4ZDFkMTgxN2EzYjc5YjliMDVkNmVjMTk5N2Zm
NGRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNDgsNiArMTM0OCw3IEBAIGh0bWwvc2hhZG93L1By
b2dyZXNzU2hhZG93RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAoraHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVu
dC5jcHAKIAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKIGluc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZGRiZjY5MzQwNTcyMzY5N2FkZTli
ZjUzOTY4NTg5Li45NzFlMDUxYjllM2Q2NDNhZWE5MGExY2MzM2Y4ZTRkYmYxOThlZDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00MjM3LDYgKzQyMzcsNyBAQAogCQlDRTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlDRTE4
NjY0NTFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIE1h
cmtlZFRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRTFBNTAxRjIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTUwMUQyMkQ1
MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMg
LyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhv
bGRlckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oICovOyB9OwogCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29s
b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNUZBMjU1MjA5RTQ4QzUwMDUxRDcwMCAv
KiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUZBMjUzMjA5RTQ4QzUwMDUxRDcwMCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTQxMzcsNiArMTQxMzgsOCBAQAogCQlDRTE4NjY0MzFGNzJFNUI0
MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRUZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUE1MDFEMjJENTM1MDkwMENCQzkyNyAvKiBE
T01UaW1lckhvbGRpbmdUYW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVySG9sZGluZ1Rhbmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUUyMkQ1MzUwOTAwQ0JDOTI3
IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NVGltZXJI
b2xkaW5nVGFuay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjEyMTUzMjQw
REJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0UyMTIxNTQyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTUxNjlFNTIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29sb3JJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDYy
LDYgKzE4MDY1LDggQEAKIAkJCQk0NTEyNTAyMTE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRv
bkVsZW1lbnQuaCAqLywKIAkJCQkxNDJCOTdDNzEzMTM4OTQzMDA4QkVGNEIgLyogVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcCAqLywKIAkJCQkxNDJCOTdDODEzMTM4OTQzMDA4QkVGNEIgLyog
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggKi8sCisJCQkJQ0UyMTIxNTQyNDBEQkQzMDAwNkVE
NDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwICovLAorCQkJCUNFMjEyMTUzMjQwREJE
MzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi8sCiAJCQkJQTU0MTZGRTMx
ODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwICovLAogCQkJ
CUE1NDE2RkU0MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50Lmgg
Ki8sCiAJCQkpOwpAQCAtMzI3ODIsNiArMzI3ODcsNyBAQAogCQkJCUU0RDk4OEI0MTdCRkQxRjYw
MDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMxOERB
NTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJl
c291cmNlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgyNEI0NjUwRTJFRjJFQTAwODFB
N0I3IC8qIFRleHRSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0OEIxQjdBMEYzQTJGOUIwMDQ3
QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3Nz
CmluZGV4IGU3NGJiYTlhZjEwNmNmZTZhYzU3NTMwOWM2ZWI0NzVlMjM5MTgxY2IuLmE1MTM3YzMw
NThjOTgyN2E0YTBjNTNmNTY4NWEzMTJlMmY3YTQ4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9odG1sLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAgLTY5
OCw2ICs2OTgsMTIgQEAgdGV4dGFyZWEgewogICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBv
cnRhbnQ7CiB9CiAKKzo6LXdlYmtpdC10ZXh0LXBsYWNlaG9sZGVyIHsKKyAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKyAgICB2aXNpYmlsaXR5
OiBoaWRkZW4gIWltcG9ydGFudDsKK30KKwogaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICB3aGl0
ZS1zcGFjZTogcHJlOwogICAgIHdvcmQtd3JhcDogbm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggMjhjYWQ4OTEyMDZjNDg0NDJlNDI3Mjk4ODUwMzdiMzRmOThiZjdlNC4uZGE4MDQ0ZDczNTY0
N2IzYzI2NzUzNTUyNWViNzhhZTdmNjU1OTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00NjEs
NiArNDYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0RmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDZjNmQ4M2E3MjhmMzAyMDNi
OGVmZmNlMGYwOGJhYTQ1NWMzMjZhNmEuLjhlNTVmN2M0YTAzMWFiNmIyMmU2ZjBhYjIxNjI2ZGFh
YTI1Njc4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTEwLDYgKzExMCw3IEBA
CiAjaW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50Lmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtMzMwOSw2
ICszMzEwLDUwIEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JCZWhh
dmlvciBiZWhhdmlvcikgY29uc3QKICAgICByZXR1cm4gcGxhaW5UZXh0KHNlbGVjdGlvbi5zdGFy
dCgpLCBzZWxlY3Rpb24uZW5kKCksIGJlaGF2aW9yKS5yZXBsYWNlV2l0aExpdGVyYWwoJ1wwJywg
IiIpOwogfQogCitSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gRWRpdG9yOjppbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAobV9mcmFtZS5z
ZWxlY3Rpb24oKS5pc05vbmUoKSB8fCAhbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5p
c0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZjxE
b2N1bWVudD4gZG9jdW1lbnQgeyB0aGlzLT5kb2N1bWVudCgpIH07CisKKyAgICBUeXBpbmdDb21t
YW5kOjpkZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQpOworCisgICAgYXV0byBwbGFjZWhvbGRlciA9
IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgc2l6ZSk7CisgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLT5pbnNlcnROb2RlKHBsYWNlaG9s
ZGVyLmNvcHlSZWYoKSk7CisKKyAgICAvLyBUbyBtYXRjaCB0aGUgTGVnYWN5IFdlYktpdCBpbXBs
ZW1lbnRhdGlvbiwgc2V0IHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB0byBiZSBhZnRlciB0aGUg
cGxhY2Vob2xkZXIuCisgICAgYXV0byBuZXdTZWxlY3Rpb24gPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBuZXdTZWxlY3Rpb24tPnNldFN0YXJ0QWZ0ZXIocGxhY2Vob2xkZXIpOworICAg
IG5ld1NlbGVjdGlvbi0+c2V0RW5kQWZ0ZXIocGxhY2Vob2xkZXIpOworICAgIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0s
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKworICAgIHJldHVybiBw
bGFjZWhvbGRlcjsKK30KKwordm9pZCBFZGl0b3I6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihUZXh0
UGxhY2Vob2xkZXJFbGVtZW50JiBwbGFjZWhvbGRlcikKK3sKKyAgICBBU1NFUlQocGxhY2Vob2xk
ZXIuaXNDb25uZWN0ZWQoKSk7CisKKyAgICBSZWY8RG9jdW1lbnQ+IGRvY3VtZW50IHsgdGhpcy0+
ZG9jdW1lbnQoKSB9OworCisgICAgLy8gU2F2ZSBvZmYgc3RhdGUgYW5kIGNvbXB1dGUgdGhlIGlu
ZGV4IG9mIHRoZSBwbGFjZWhvbGRlciBzbyB0aGF0IHdlIGNhbiBzZXQgdGhlCisgICAgLy8gdGV4
dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVzdCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1l
bnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRvIHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCA9IHBs
YWNlaG9sZGVyLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBhdXRvKiBzYXZlZFBhcmVudE5v
ZGUgPSBwbGFjZWhvbGRlci5wYXJlbnROb2RlKCk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFjZWhv
bGRlckluZGV4ID0gcGxhY2Vob2xkZXIuY29tcHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8gRklY
TUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRo
ZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0
ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRvIG1h
dGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0
aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgor
ICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3Vt
ZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkgeworICAg
ICAgICBhdXRvIG5ld1NlbGVjdGlvbiA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHNhdmVkUGFy
ZW50Tm9kZSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUsIHNhdmVkUGxh
Y2Vob2xkZXJJbmRleCk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZShuZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xs
YXBzZUNhcmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogV2lkdGggYWRq
dXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2ZWVmMjYwODA1YjQ1M2UuLmUwMzc4
YWViN2E5MmI1MmFhNWRkOWM3YjllOTUwYTFmZTA0ZTVkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0
OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CitjbGFzcyBUZXh0
UGxhY2Vob2xkZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1
Y3QgRm9udEF0dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2VydEVkaXRhYmxlSW1hZ2Uo
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBp
bnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmKTsKKwog
cHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNjdiOWUwMTJiZjBkZDJhZTMwMmY3MmYyYzM3OGE3YWFjNzNiMjc3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxl
bWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gVGV4
dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisKK1RleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlv
dXRTaXplJiBzaXplKQorICAgIDogSFRNTERpdkVsZW1lbnQgeyBkaXZUYWcsIGRvY3VtZW50IH0K
K3sKKyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZyB7ICItd2Via2l0LXRleHQtcGxhY2Vob2xkZXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9KTsKKyAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6
ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cit9CisKK2F1dG8gVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRv
QW5jZXN0b3JSZXN1bHQKK3sKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3Vt
ZW50KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gcGFyZW50T2ZJbnNlcnRlZFRy
ZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9z
dCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNo
YWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7CisgICAgfQorICAgIHJldHVy
biBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFy
ZW50T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJl
bW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUm
IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5l
Y3RlZEZyb21Eb2N1bWVudCkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93SG9zdCA9IG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKKyAg
ICB9CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUs
IG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2JhODQwOTMwMTk4YTlhOTkzNzhiNDQyMzYwYjZkMzBiNDIyNzk2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhv
bGRlckVsZW1lbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1l
bnQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
VGV4dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKwor
ICAgIC8vIEVsZW1lbnQKKyAgICBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIE5vZGUKKyAgICBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlKSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVy
biBlbGVtZW50LmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkVs
ZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2VsZWN0aW9uUmVjdC5oCmluZGV4IDQ5ODJjNjNhMDAzM2Y1NzU0Y2UzNzkyZTg2MTJj
NzdiN2Y4MTBmYmQuLjVjYWI0MDViMGI2NGFlMmM2NmQ2Y2UxNjNhZWI0NmI4OGIzNDBjZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25SZWN0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTZWxlY3Rpb25SZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGlzSG9yaXpvbnRhbCwgaW50
IGNvbHVtbk51bWJlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VsZWN0aW9uUmVj
dChjb25zdCBJbnRSZWN0JiwgYm9vbCBpc0hvcml6b250YWwsIGludCBwYWdlTnVtYmVyKTsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBzb21lIG9mIHRoZXNlIGFyZ3VtZW50cyB0byBh
biBhdXhpbGxhcnkgc3RydWN0LgogICAgIFNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYsIFRl
eHREaXJlY3Rpb24sIGludCwgaW50LCBpbnQsIGludCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA0OTJkZjJmYzdjN2YxOWZjM2U5YjliMTQzNjM0ZjA3ZWIyOThkNWViLi5mMDky
Mzk2ZjZkYTM4Nzg3NWYwMTNjYTFiNmZhMjg0ZmQ4YTVkYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAKICNpbmNsdWRlICJTdHlsZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlRy
ZWVTY29wZS5oIgogI2luY2x1ZGUgIlR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDM2LDYgKzE0MzcsMTcgQEAgdm9pZCBJbnRlcm5hbHM6
OnNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50LCBib29sIGNhblNob3dQbGFj
ZWhvbGRlcikKICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVs
ZW1lbnQpLnNldENhblNob3dQbGFjZWhvbGRlcihjYW5TaG93UGxhY2Vob2xkZXIpOwogfQogCitF
bGVtZW50KiBJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgcmV0dXJuIGZyYW1lKCktPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhv
bGRlcihJbnRTaXplIHsgd2lkdGgsIGhlaWdodCB9KS5nZXQoKTsKK30KKwordm9pZCBJbnRlcm5h
bHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChp
czxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgZnJhbWUoKS0+ZWRp
dG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25jYXN0PFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ+KGVsZW1lbnQpKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNo
b29zZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVl
KQogewogICAgIGVsZW1lbnQuc2VsZWN0Q29sb3IoY29sb3JWYWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCA4MTUyNmU5ZTJkN2I4MzI5OTUwYWY5MWIxM2IzZTA0N2IyMTIw
OTk2Li44OTg0ZTlkMDM4MzFiZWFmNmI5MjNhOTA5NDcyOGJlZGJmYWQ3MWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRDYW5TaG93UGxh
Y2Vob2xkZXIoRWxlbWVudCYsIGJvb2wpOwogCisgICAgRWxlbWVudCogaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoRWxlbWVudCYpOworCiAgICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhU
TUxJbnB1dEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwogICAgIEV4Y2VwdGlv
bk9yPFZlY3RvcjxTdHJpbmc+PiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVt
KCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGJkMDcxNmM4MzhkNDNiZTY0MWRhNWNlNWJkNTcxMWMzODM4OTMxMzgu
LjViYmUwNGQ4OWM0NDlhZmRmNmM4MWEwNjUyZjg2YjhiYjQ3ZWNiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwOSw2ICszMDksOSBAQCBlbnVtIENvbXBvc2l0aW5n
UG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVu
dCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xkZXIpOwogCisgICAgRWxlbWVudCBpbnNlcnRUZXh0
UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CisKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFu
Z2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwog
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERP
TVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjk2NzYzMTNhYzYyNWZlNjBkZTlmZTMw
ZjFhMDRjOGYyMTk5NDI2NS4uZjg4MTlhOTUxMDg0NDM4Yzg1MDRlZjU3MmZlZDU4ZTNiODhlNTNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxMCw2ICs3MTAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldFNob3Vs
ZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQg
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYm
KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBkb3VibGUgZGlz
cGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9z
ZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZS5leHBvc2VkQ29udGVudFJlY3QoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlLnVub2JzY3VyZWRDb250ZW50UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCAxZmFlOTc1MjY0YmJlNDkzMjU4ODU4NGUyOWVmNGFlZDRhZDY5ZTRmLi5iODE4ODNjZGRj
MmMyODg3MTZiNjc1NjY2MGI1ZDhhMTgwNzNhYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY1LDYg
KzY1LDcgQEAKICNpbXBvcnQgIldLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIgogI2ltcG9ydCAiV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgi
CiAjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCiAjaW1wb3J0ICJXS1RpbWVQaWNrZXJW
aWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJpdmF0ZS5oIgpAQCAtMjkx
LDcgKzI5Miw2IEBAICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0aW9uV2l0aFJlY3Q6KENH
UmVjdClwb3NpdGlvblJlY3Q7CiAKIEBlbmQKIAotCiBAaW50ZXJmYWNlIFdLQXV0b2NvcnJlY3Rp
b25SZWN0cyA6IFVJV0tBdXRvY29ycmVjdGlvblJlY3RzCiArIChXS0F1dG9jb3JyZWN0aW9uUmVj
dHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OihDR1JlY3QpZmlyc3RSZWN0
IGxhc3RDR1JlY3Q6KENHUmVjdClsYXN0UmVjdDsKIEBlbmQKQEAgLTc0MzYsNiArNzQzNiwyMCBA
QCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4
dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAjZW5kaWYKIAorLSAodm9pZClpbnNlcnRUZXh0
UGxhY2Vob2xkZXJXaXRoU2l6ZTooQ0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJVGV4dFBsYWNlaG9sZGVyICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2Ut
Pmluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHsgc2l6ZSB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIHBsYWNlaG9sZGVyKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxsb2Nd
IGluaXRXaXRoRWxlbWVudENvbnRleHQ6KnBsYWNlaG9sZGVyXSBhdXRvcmVsZWFzZV0gOiBuaWwp
OworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZVRleHRQbGFjZWhvbGRlcjooVUlUZXh0UGxh
Y2Vob2xkZXIgKilwbGFjZWhvbGRlciB3aWxsSW5zZXJ0VGV4dDooQk9PTCl3aWxsSW5zZXJ0VGV4
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIHdpbGxJbnNlcnRUZXh0LgorICAg
IGlmIChhdXRvKiB3a1RleHRQbGFjZWhvbGRlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVGV4dFBs
YWNlaG9sZGVyPihwbGFjZWhvbGRlcikpCisgICAgICAgIF9wYWdlLT5yZW1vdmVUZXh0UGxhY2Vo
b2xkZXIod2tUZXh0UGxhY2Vob2xkZXIuZWxlbWVudENvbnRleHQsIG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNp
emVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyhOU0FycmF5
PE5TSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiBzaXplczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlhOTI2MGYwZjZkOGFkODcxYjc1NjhjYmVkNTY5
NmE2ZGYyZDg0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRDb250ZXh0OworfQorCitAaW50ZXJmYWNlIFdL
VGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vob2xkZXIKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250
ZXh0OworCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQ7
CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1
OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1Rl
eHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAi
V0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5o
PgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOworfQorCist
IChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICBy
ZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJl
Y3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFs
bG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVs
ZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmlu
ZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkw
NjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMjMsOCArMjMsNiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1
LDYgKzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxl
Y3Rpb25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDR1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9u
UmVjdDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlv
blJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5tbQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFi
N2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQs
MTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6
OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNl
bGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6
V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNl
bGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QK
IHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcx
ZGEzYTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5YzkxYWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRk
NGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRU
ZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
VGV4dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93
ZWJQYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMy
MmM5MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1YjczNTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNj
OWU2M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiArMTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAv
KiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovOyB9Owor
CQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4
NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyog
SW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0No
YW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2Vk
V2ViRXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiArNTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vo
b2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9X
S1RleHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1
RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgw
MTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0
aW9uUmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVj
dGlvblJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1t
OyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAKIAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBF
NjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2
MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4
QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNF
MjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNF
MjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlD
RTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJ
CUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAog
CQkJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2
MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1
RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0
NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdL
VG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2
ICsxMjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dz
aW5nV2FybmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNF
OCAvKiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlC
MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAy
NGVmYjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdjY2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4
YzZjZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lk
IHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAor
ICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2
OWU3Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRhZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBh
ODYwOGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTksNiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQo
c3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4g
KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQogICAgIFNldFNob3VsZFJldmVhbEN1cnJl
bnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rp
b25BZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50
U2l6ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9s
ZGVyKSBBc3luYworICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJj
NDJiNDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJjLi4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1
ZDVjOWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQu
aD4KQEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1Rl
eHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBX
ZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9s
ZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcg
ZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xk
ZXIgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9s
ZGVyKSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50
KSk7CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhv
bGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PigqZWxlbWVudCkpOworICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBS
ZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUwOWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdl
ZDFhYi4uYTdkM2I3ZmU0MzgxZjM4NTQ4M2JiZGNiMDBhMzcyYjFkMTU0MTcyZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIwLTAzLTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRl
eHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVu
c3VyZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisg
ICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3M6
IEFkZGVkLgorICAgICAgICAoQGZvbnQtZmFjZSk6CisgICAgICAgICgudGVzdCk6CisKIDIwMTkt
MDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYjRiZGJj
Y2E4YTJhNTU0M2RlODY0M2JhYWJhM2RjMzRlYTgxOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0
LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0
aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxv
b2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9w
PgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxs
byBmcm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1m
aWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYTJjYzdkZGMwNmYxODdk
OWQwNjI5N2VjMzZjNDQyOGFkZDk4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0
bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFu
ZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVy
IHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhvbGRlckVsZW1lbnQgPSBudWxsOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1
dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgICAgICBjb25zb2xlLmFzc2VydChwbGFjZWhvbGRlckVsZW1lbnQpOworICAgIH0K
KyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigp
LCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyRWxlbWVudCk7CisKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1l
ZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OGIzYjUxYmY2Mjc2YWNjM2U1OTZkNTUxOWYyNmNlZTQzMjVhMzNkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQt
ZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1z
Y2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVy
IGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8L2NvZGU+IGVsZW1lbnQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIgc3R5bGU9IndpZHRoOiAy
MDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2siIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+SGVsbG8gICAgICBmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBk
MDIzMWExMmFjODE1ZjJhYmQ2NjA1ZmU3MGNjMTM2MzdjYzBiMTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1l
ZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0
ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0
IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwv
cD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWln
aHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVl
Ij5IZWxsbyBmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGxldCB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBV
SUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKHRlc3RFbGVtZW50
KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRG
b3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5mb2N1cygpLCB0ZXN0RWxlbWVudCwgImZvY3VzIik7
CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSB0ZXN0RWxlbWVudC50ZXh0Q29udGVudC5pbmRl
eE9mKCJmcm9tIik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQo
dGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25PZkZyb20sIHRlc3RFbGVtZW50LmZpcnN0
Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBn
bHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJz
ZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RWxlbWVudCwgbnVsbCkuZm9udFNpemUs
IDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhX
aWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8g
aGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRG
b3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5ibHVyKCksIHRlc3RFbGVtZW50LCAiYmx1ciIpOwor
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5
LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTU5OGIwNDE4YjI5MjIzZTY1NjdiNDJjNTFlZGExNTY2N2E1MDczMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0
eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRp
YWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3Qu
Y3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRl
ciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRl
eHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBv
ciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlw
ZT0idGV4dCIgdmFsdWU9IiAgICAgICI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1m
aWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LWVtcHR5LXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmM0NTk0NzdmNDI0MDU4YjI3ZjAy
ZjdlMzYzZmNhZjQxYzAxZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApAQCAtMCww
ICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRl
ciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1
biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0i
aW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRkFJTCI+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNl
c3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0
aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsK
KworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOworCisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9u
dCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5
cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5m
b250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUg
KiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBm
aWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9u
QW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVs
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGUwMjNhMGFkMWRj
ZTdhY2MzNTdkYTFkOTAzYmE0OTI2MzUxMjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8g
YSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5u
ZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3Qi
IHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2E4MGRiNjU5
Mjc4YTM4YjU5MTZiZTc3NzQwN2ZiMjVkZjEzZWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApA
QCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
aGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0
IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3Ig
RHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9
InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMg
ZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2Fp
dCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsK
KyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JF
dmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9z
aXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0
U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1
dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFj
ZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8v
IERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1
ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90
ZXN0LmNzcyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVz
dC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWVlNDNhYTIxMGZiN2FiYTAwM2JhNmUxN2ExOWNkY2Q2MjNlZDEy
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3MKQEAgLTAsMCArMSwxMiBAQAorQGZvbnQtZmFjZSB7CisgICAgZm9u
dC1mYW1pbHk6IEFoZW07CisgICAgc3JjOiB1cmwoIi4uLy4uL3Jlc291cmNlcy9BaGVtLnR0ZiIp
OworfQorCisudGVzdCB7CisgICAgZm9udDogMjVweC8xIEFoZW07CisgICAgLXdlYmtpdC10ZXh0
LXNpemUtYWRqdXN0OiAxMDAlJTsKKyAgICAvKiBUbyBtYWtlIGRlYnVnZ2luZyBlYXNpZXIsIG1h
a2UgdGhlIGNhcmV0IHN0YW5kIG91dC4gKi8KKyAgICBjYXJldC1jb2xvcjogYmx1ZTsKKyAgICBj
b2xvcjogeWVsbG93OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392789</attachid>
            <date>2020-03-06 15:36:56 -0800</date>
            <delta_ts>2020-03-06 15:40:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306153655.patch</filename>
            <type>text/plain</type>
            <size>55317</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uYTRmZTMyNjRlYmYxZjUwYzViYTlkMzE5OGU4MTM4
MzYwZmY5YjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50IGNvbnN0
KTogQWRkZWQuIERlZmF1bHRzIHRvIGZhbHNlLiBJIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgaW4g
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICBJ
bnNlcnQgYSBuZXcgcGxhY2Vob2xkZXIgb3IgcmVtb3ZlIGFuIGV4aXN0aW5nIG9uZS4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQpOiBTZXQgaW5saW5lIHN0eWxlcyB0byBzaXpl
IHRoZSBwbGFjZWhvbGRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogSWYgdGhlIHBsYWNlaG9sZGVyIGlzIGluc2VydGVk
IGluc2lkZSBhbgorICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCAoZS5nLiA8aW5w
dXQ+IG9yIDx0ZXh0YXJlYT4pIHRoZW4gaGlkZSB0aGUgSFRNTCBwbGFjZWhvbGRlciB0ZXh0Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3Rvcik6IElmIHRoZSBwbGFjZWhvbGRlciB3YXMgcmVtb3ZlZCBmcm9tIGluc2lkZQorICAgICAg
ICBhbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB0aGVuIHNob3cgdGhlIEhUTUwgcGxhY2Vo
b2xkZXIgdGV4dC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6
IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFs
eXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTRlMjYwN2NjYTVlZjE5M2IxNDg4ODE2NGIzNTAz
ODNkM2FmNWUwNS4uZjc1MWI0NzY3MjNlZGVlMTM0ZTI4M2JjMzc4NDI5M2I2ZjlkYWM1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVt
b3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDg2NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzcxMDcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudHMgdGhlIFVJVGV4dElucHV0IHByb3RvY29sIGZ1bmN0aW9ucyAtaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyV2l0aFNpemUgYW5kIC1yZW1vdmVUZXh0UGxhY2Vob2xkZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4
dFBsYWNlaG9sZGVyV2l0aFNpemU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyOndpbGxJbnNlcnRUZXh0OmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbW9yZSBvZiB0aGUgVUlUZXh0SW5wdXQg
cHJvdG9jb2wuIFRoZXNlIGZ1bmN0aW9ucyB0dXJuIGFyb3VuZCBhbmQgY2FsbAorICAgICAgICB0
aGUgY29ycmVzcG9uZGluZyBXZWJQYWdlUHJveHkgZnVuY3Rpb25zLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tUZXh0UGxhY2Vob2xkZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRl
ciBpbml0V2l0aEVsZW1lbnRDb250ZXh0Ol0pOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRl
ciBlbGVtZW50Q29udGV4dF0pOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oOiBSZW1vdmUg
YW4gdW5uY2Vzc2FyeSAjcHJhZ21hIG9uY2Ugc2luY2UgSSBhbSBoZXJlLgorICAgICAgICBUaGlz
IGZpbGUgaXMgb25seSBpbmNsdWRlZCBmcm9tIE9iamVjdGl2ZS1DL0MrKyBmaWxlcyBzbyB0aGF0
ICNwcmFnbWEgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1RleHRT
ZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0IGluaXRXaXRo
Q0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xk
ZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFj
ZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBuZXcgbWVzc2FnZXMg
dG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92ZVRl
eHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5kIGFuZCBjYWxsIHRoZSBjb3JyZXNw
b25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBN
YWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzIxZmJiMWFkOGE1YWE2
YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhkMWQxODE3YTNiNzliOWIwNWQ2ZWMx
OTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcgQEAgaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkzNDA1NzIzNjk3
YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkwYTFjYzMzZjhlNGRiZjE5OGVkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJ
CUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0MDBBMENBQjYg
LyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBNTAx
RDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4MjQwREJFQjkwMDZF
RDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAv
KiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFE
NzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJCUNFMTg2NjQzMUY3
MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1MzUwOTAwQ0JDOTI3
IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGltZXJIb2xkaW5n
VGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRTIyRDUzNTA5MDBD
QkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01U
aW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIx
NTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGlu
QnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMxMzg5NDMwMDhCRUY0
QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIxMjE1NDI0MERCRDMw
MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJCQkJQ0UyMTIxNTMy
NDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLywKIAkJCQlBNTQx
NkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAgKi8s
CiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJRTREOTg4QjQxN0JG
RDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2NTBFMkVGMkVB
MDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0EwRjNBMkY5
QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0MjcyOTg4NTAzN2IzNGY5OGJmN2U0Li5k
YTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5MGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNmM2ZDgz
YTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uNmYxNjg1MDNlYjI3ZjRjZTI3YWM2
NTA4Yzc5MGIxMzE4NzJlYzY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMTAs
NiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJU
ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUg
IlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgi
CkBAIC0zMzA5LDYgKzMzMTAsNTMgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJ
dGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAgIHJldHVybiBwbGFpblRleHQoc2Vs
ZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0
ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0
b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAg
IC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
KCkuIEFzIG9mIDAzLzA2LzIwMjAsIHVzaW5nCisgICAgLy8gcmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCgpIHdoZW4gdGhlcmUgaXMgYSBjYXJldCBzZWxlY3Rpb24gYXQgYSB3b3JkIHN0YXJ0
CisgICAgLy8gZGVsZXRlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB3b3JkLgorICAgIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihkb2N1bWVudCk7CisKKyAgICBhdXRvIHBsYWNl
aG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzaXplKTsK
KyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCktPmluc2VydE5vZGUo
cGxhY2Vob2xkZXIuY29weVJlZigpKTsKKworICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2Vi
S2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGFm
dGVyIHRoZSBwbGFjZWhvbGRlci4KKyAgICBhdXRvIG5ld1NlbGVjdGlvbiA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIG5ld1NlbGVjdGlvbi0+c2V0U3RhcnRBZnRlcihwbGFjZWhvbGRl
cik7CisgICAgbmV3U2VsZWN0aW9uLT5zZXRFbmRBZnRlcihwbGFjZWhvbGRlcik7CisgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlvbi5wdHIoKSwgRE9X
TlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworCisgICAg
cmV0dXJuIHBsYWNlaG9sZGVyOworfQorCit2b2lkIEVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmIHBsYWNlaG9sZGVyKQoreworICAgIEFTU0VSVChw
bGFjZWhvbGRlci5pc0Nvbm5lY3RlZCgpKTsKKworICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQg
eyB0aGlzLT5kb2N1bWVudCgpIH07CisKKyAgICAvLyBTYXZlIG9mZiBzdGF0ZSBhbmQgY29tcHV0
ZSB0aGUgaW5kZXggb2YgdGhlIHBsYWNlaG9sZGVyIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUKKyAg
ICAvLyB0ZXh0IGluc2VydGlvbiBwb3NpdGlvbiB0byBqdXN0IGJlZm9yZSB0aGUgcGxhY2Vob2xk
ZXIgZWxlbWVudCBhZnRlciByZW1vdmFsLgorICAgIGF1dG8gc2F2ZWRSb290RWRpdGFibGVFbGVt
ZW50ID0gbWFrZVJlZlB0cihwbGFjZWhvbGRlci5yb290RWRpdGFibGVFbGVtZW50KCkpOworICAg
IGF1dG8gc2F2ZWRQYXJlbnROb2RlID0gbWFrZVJlZlB0cihwbGFjZWhvbGRlci5wYXJlbnROb2Rl
KCkpOworICAgIHVuc2lnbmVkIHNhdmVkUGxhY2Vob2xkZXJJbmRleCA9IHBsYWNlaG9sZGVyLmNv
bXB1dGVOb2RlSW5kZXgoKTsKKworICAgIC8vIEZJWE1FOiBTYXZlIHRoZSBjdXJyZW50IHNlbGVj
dGlvbiBpZiBpdCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcGxhY2Vob2xkZXIgd2FzIGluc2VydGVk
CisgICAgLy8gYW5kIHJlc3RvcmUgaXQgYWZ0ZXIgdGV4dCBpbnNlcnRpb24uCisgICAgcGxhY2Vo
b2xkZXIucmVtb3ZlKCk7CisKKyAgICAvLyBUbyBtYXRjaCB0aGUgTGVnYWN5IFdlYktpdCBpbXBs
ZW1lbnRhdGlvbiwgc2V0IHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB0byBiZSBiZWZvcmUgd2hl
cmUgdGhlIHBsYWNlaG9sZGVyIHVzZSB0byBiZS4KKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24o
KS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9PSBz
YXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgYXV0byBuZXdTZWxlY3Rpb24gPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzYXZlZFBhcmVudE5vZGUuZ2V0KCksIHNhdmVkUGxhY2Vo
b2xkZXJJbmRleCwgc2F2ZWRQYXJlbnROb2RlLmdldCgpLCBzYXZlZFBsYWNlaG9sZGVySW5kZXgp
OworICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobmV3U2VsZWN0
aW9uLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Olllcyk7CisgICAgfQorfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VDYXJldFdpZHRo
KEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFdpZHRoIGFkanVzdG1lbnQgZG9lc24n
dCB3b3JrIGZvciByb3RhdGVkIHRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmODY3
N2IzMThlOGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgwNWI0NTNlLi5lMDM3OGFlYjdhOTJiNTJhYTVk
ZDljN2I5ZTk1MGExZmUwNGU1ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgyLDYg
KzgyLDcgQEAgY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dDsKIGNsYXNzIFRleHRD
aGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVGV4dFBsYWNlaG9sZGVyRWxl
bWVudDsKIAogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IEZvbnRBdHRyaWJ1
dGVzOwpAQCAtNTQ5LDYgKzU1MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRl
eHRQbGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAg
RG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyZDA2
YjVjODkxMDhhNTQ4Y2RhYmRkMTY1N2M2OWE3YjZiMGE0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKwordXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKworUmVmPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCB7IGRv
Y3VtZW50LCBzaXplIH0pOworfQorCitUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkK
KyAgICA6IEhUTUxEaXZFbGVtZW50IHsgZGl2VGFnLCBkb2N1bWVudCB9Cit7CisgICAgLy8gRklY
TUU6IE1vdmUgdG8gVXNlciBBZ2VudCBzdHlsZXNoZWV0LgorICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZUJsb2NrLCBmYWxzZSk7Cisg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIENTU1Zh
bHVlQm90dG9tLCBmYWxzZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVZpc2liaWxpdHksIENTU1ZhbHVlSGlkZGVuLCB0cnVlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6ZS5o
ZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cit9CisKK2F1dG8gVGV4dFBsYWNlaG9sZGVy
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBl
LCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQKK3sKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50
KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gcGFyZW50T2ZJbnNlcnRlZFRyZWUu
c2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkp
CisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRv
d0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBI
VE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3Rl
ZEZyb21Eb2N1bWVudCkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93SG9zdCA9IG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKKyAgICB9
CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2JhODQwOTMwMTk4YTlhOTkzNzhiNDQyMzYwYjZkMzBiNDIyNzk2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVGV4
dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKworICAg
IC8vIEVsZW1lbnQKKyAgICBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIE5vZGUKKyAgICBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
KSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkVsZW1l
bnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA0OTJkZjJmYzdjN2YxOWZjM2U5YjliMTQzNjM0ZjA3ZWIyOThkNWViLi5mMDky
Mzk2ZjZkYTM4Nzg3NWYwMTNjYTFiNmZhMjg0ZmQ4YTVkYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAKICNpbmNsdWRlICJTdHlsZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlRy
ZWVTY29wZS5oIgogI2luY2x1ZGUgIlR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDM2LDYgKzE0MzcsMTcgQEAgdm9pZCBJbnRlcm5hbHM6
OnNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50LCBib29sIGNhblNob3dQbGFj
ZWhvbGRlcikKICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVs
ZW1lbnQpLnNldENhblNob3dQbGFjZWhvbGRlcihjYW5TaG93UGxhY2Vob2xkZXIpOwogfQogCitF
bGVtZW50KiBJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgcmV0dXJuIGZyYW1lKCktPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhv
bGRlcihJbnRTaXplIHsgd2lkdGgsIGhlaWdodCB9KS5nZXQoKTsKK30KKwordm9pZCBJbnRlcm5h
bHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChp
czxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgZnJhbWUoKS0+ZWRp
dG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25jYXN0PFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ+KGVsZW1lbnQpKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNo
b29zZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVl
KQogewogICAgIGVsZW1lbnQuc2VsZWN0Q29sb3IoY29sb3JWYWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCA4MTUyNmU5ZTJkN2I4MzI5OTUwYWY5MWIxM2IzZTA0N2IyMTIw
OTk2Li44OTg0ZTlkMDM4MzFiZWFmNmI5MjNhOTA5NDcyOGJlZGJmYWQ3MWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRDYW5TaG93UGxh
Y2Vob2xkZXIoRWxlbWVudCYsIGJvb2wpOwogCisgICAgRWxlbWVudCogaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoRWxlbWVudCYpOworCiAgICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhU
TUxJbnB1dEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwogICAgIEV4Y2VwdGlv
bk9yPFZlY3RvcjxTdHJpbmc+PiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVt
KCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGJkMDcxNmM4MzhkNDNiZTY0MWRhNWNlNWJkNTcxMWMzODM4OTMxMzgu
LjViYmUwNGQ4OWM0NDlhZmRmNmM4MWEwNjUyZjg2YjhiYjQ3ZWNiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwOSw2ICszMDksOSBAQCBlbnVtIENvbXBvc2l0aW5n
UG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVu
dCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xkZXIpOwogCisgICAgRWxlbWVudCBpbnNlcnRUZXh0
UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CisKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFu
Z2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwog
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERP
TVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjk2NzYzMTNhYzYyNWZlNjBkZTlmZTMw
ZjFhMDRjOGYyMTk5NDI2NS4uZjg4MTlhOTUxMDg0NDM4Yzg1MDRlZjU3MmZlZDU4ZTNiODhlNTNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxMCw2ICs3MTAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldFNob3Vs
ZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQg
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYm
KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBkb3VibGUgZGlz
cGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9z
ZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZS5leHBvc2VkQ29udGVudFJlY3QoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlLnVub2JzY3VyZWRDb250ZW50UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCAxZmFlOTc1MjY0YmJlNDkzMjU4ODU4NGUyOWVmNGFlZDRhZDY5ZTRmLi5iODE4ODNjZGRj
MmMyODg3MTZiNjc1NjY2MGI1ZDhhMTgwNzNhYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY1LDYg
KzY1LDcgQEAKICNpbXBvcnQgIldLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIgogI2ltcG9ydCAiV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgi
CiAjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCiAjaW1wb3J0ICJXS1RpbWVQaWNrZXJW
aWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJpdmF0ZS5oIgpAQCAtMjkx
LDcgKzI5Miw2IEBAICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0aW9uV2l0aFJlY3Q6KENH
UmVjdClwb3NpdGlvblJlY3Q7CiAKIEBlbmQKIAotCiBAaW50ZXJmYWNlIFdLQXV0b2NvcnJlY3Rp
b25SZWN0cyA6IFVJV0tBdXRvY29ycmVjdGlvblJlY3RzCiArIChXS0F1dG9jb3JyZWN0aW9uUmVj
dHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OihDR1JlY3QpZmlyc3RSZWN0
IGxhc3RDR1JlY3Q6KENHUmVjdClsYXN0UmVjdDsKIEBlbmQKQEAgLTc0MzYsNiArNzQzNiwyMCBA
QCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4
dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAjZW5kaWYKIAorLSAodm9pZClpbnNlcnRUZXh0
UGxhY2Vob2xkZXJXaXRoU2l6ZTooQ0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJVGV4dFBsYWNlaG9sZGVyICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2Ut
Pmluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHsgc2l6ZSB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIHBsYWNlaG9sZGVyKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxsb2Nd
IGluaXRXaXRoRWxlbWVudENvbnRleHQ6KnBsYWNlaG9sZGVyXSBhdXRvcmVsZWFzZV0gOiBuaWwp
OworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZVRleHRQbGFjZWhvbGRlcjooVUlUZXh0UGxh
Y2Vob2xkZXIgKilwbGFjZWhvbGRlciB3aWxsSW5zZXJ0VGV4dDooQk9PTCl3aWxsSW5zZXJ0VGV4
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIHdpbGxJbnNlcnRUZXh0LgorICAg
IGlmIChhdXRvKiB3a1RleHRQbGFjZWhvbGRlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVGV4dFBs
YWNlaG9sZGVyPihwbGFjZWhvbGRlcikpCisgICAgICAgIF9wYWdlLT5yZW1vdmVUZXh0UGxhY2Vo
b2xkZXIod2tUZXh0UGxhY2Vob2xkZXIuZWxlbWVudENvbnRleHQsIG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNp
emVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyhOU0FycmF5
PE5TSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiBzaXplczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlhOTI2MGYwZjZkOGFkODcxYjc1NjhjYmVkNTY5
NmE2ZGYyZDg0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRDb250ZXh0OworfQorCitAaW50ZXJmYWNlIFdL
VGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vob2xkZXIKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250
ZXh0OworCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQ7
CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1
OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1Rl
eHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAi
V0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5o
PgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOworfQorCist
IChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICBy
ZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJl
Y3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFs
bG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVs
ZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmlu
ZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkw
NjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMjMsOCArMjMsNiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1
LDYgKzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxl
Y3Rpb25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDR1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9u
UmVjdDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlv
blJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5tbQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFi
N2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQs
MTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6
OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNl
bGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6
V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNl
bGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QK
IHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcx
ZGEzYTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5YzkxYWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRk
NGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRU
ZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
VGV4dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93
ZWJQYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMy
MmM5MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1YjczNTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNj
OWU2M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiArMTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAv
KiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovOyB9Owor
CQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4
NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyog
SW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0No
YW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2Vk
V2ViRXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiArNTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vo
b2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9X
S1RleHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1
RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgw
MTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0
aW9uUmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVj
dGlvblJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1t
OyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAKIAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBF
NjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2
MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4
QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNF
MjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNF
MjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlD
RTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJ
CUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAog
CQkJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2
MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1
RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0
NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdL
VG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2
ICsxMjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dz
aW5nV2FybmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNF
OCAvKiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlC
MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAy
NGVmYjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdjY2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4
YzZjZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lk
IHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAor
ICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2
OWU3Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRhZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBh
ODYwOGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTksNiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQo
c3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4g
KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQogICAgIFNldFNob3VsZFJldmVhbEN1cnJl
bnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rp
b25BZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50
U2l6ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9s
ZGVyKSBBc3luYworICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJj
NDJiNDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJjLi4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1
ZDVjOWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQu
aD4KQEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1Rl
eHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBX
ZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9s
ZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcg
ZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xk
ZXIgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9s
ZGVyKSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50
KSk7CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhv
bGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PigqZWxlbWVudCkpOworICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBS
ZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUwOWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdl
ZDFhYi4uZTY5MzRkZTJkYzk1MzUyOGE1MWM3NGY0Y2ZjN2I2YTFlMTI5MGJhMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRl
eHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVu
c3VyZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisg
ICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3M6
IEFkZGVkLgorICAgICAgICAoQGZvbnQtZmFjZSk6CisgICAgICAgICgudGVzdCk6CisKIDIwMTkt
MDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYjRiZGJj
Y2E4YTJhNTU0M2RlODY0M2JhYWJhM2RjMzRlYTgxOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0
LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0
aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxv
b2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9w
PgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxs
byBmcm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1m
aWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYTJjYzdkZGMwNmYxODdk
OWQwNjI5N2VjMzZjNDQyOGFkZDk4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0
bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFu
ZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVy
IHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhvbGRlckVsZW1lbnQgPSBudWxsOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1
dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgICAgICBjb25zb2xlLmFzc2VydChwbGFjZWhvbGRlckVsZW1lbnQpOworICAgIH0K
KyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigp
LCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyRWxlbWVudCk7CisKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1l
ZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MmY4OTU3NzdjZWFhNjBjMGNhMzIwMzRkZTE1YTZhMjIwN2IyYWZkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQt
ZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1z
Y2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVy
IGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8L2NvZGU+IGVsZW1lbnQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIgc3R5bGU9IndpZHRoOiAy
MDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2siIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+SGVsbG8gJm5ic3A7Jm5ic3A7ZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODMyNWZmZDRhODUwZjhlMWVlODkzZTgyYWU0Yzc1ZGMxYmUxM2QzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNv
bnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8L2NvZGU+IGVsZW1lbnQuIFRo
aXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVy
VHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2siIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbih0ZXN0
RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMoKSwgdGVzdEVsZW1lbnQsICJm
b2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVzdEVsZW1lbnQudGV4dENvbnRl
bnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tLCB0ZXN0RWxlbWVu
dC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9z
dCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRo
ID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdEVsZW1lbnQsIG51bGwpLmZv
bnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoMiAq
IGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZp
ZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigpLCB0ZXN0RWxlbWVudCwgImJs
dXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU1OThiMDQxOGIyOTIyM2U2NTY3YjQyYzUxZWRhMTU2NjdhNTA3MzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxh
Y2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGlu
dG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRl
c3QiIHR5cGU9InRleHQiIHZhbHVlPSIgICAgICAiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5
LXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZjNDU5NDc3ZjQyNDA1
OGIyN2YwMmY3ZTM2M2ZjYWY0MWMwMWZmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwK
QEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxh
Y2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25s
eSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5w
dXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkZBSUwi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBB
aGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAg
bGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwg
bnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhv
bGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERl
Zm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxG
dW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIp
OworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRl
eHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRlMDIz
YTBhZDFkY2U3YWNjMzU3ZGExZDkwM2JhNDkyNjM1MTIwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRl
ZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRU
ZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNz
PSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9tIEN1cGVydGlubyEiPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdh
ODBkYjY1OTI3OGEzOGI1OTE2YmU3Nzc0MDdmYjI1ZGYxM2VjZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRv
IGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisK
K2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihp
bnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRX
YWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAg
bGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlu
cHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1
c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGgu
CisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5
bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1
dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNv
dXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3Vy
Y2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQyNWVhNDY5YTg5ZThiOWIzYmUy
NGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIgQEAKK0Bmb250LWZhY2Ugewor
ICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIuLi8uLi8uLi9yZXNvdXJjZXMv
QWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgvMSBBaGVtOworICAgIC13
ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8gbWFrZSBkZWJ1Z2dpbmcg
ZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAgY2FyZXQtY29sb3I6IGJs
dWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392790</attachid>
            <date>2020-03-06 15:40:08 -0800</date>
            <delta_ts>2020-03-06 16:44:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306154007.patch</filename>
            <type>text/plain</type>
            <size>55773</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uYTRmZTMyNjRlYmYxZjUwYzViYTlkMzE5OGU4MTM4
MzYwZmY5YjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50IGNvbnN0
KTogQWRkZWQuIERlZmF1bHRzIHRvIGZhbHNlLiBJIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgaW4g
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICBJ
bnNlcnQgYSBuZXcgcGxhY2Vob2xkZXIgb3IgcmVtb3ZlIGFuIGV4aXN0aW5nIG9uZS4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQpOiBTZXQgaW5saW5lIHN0eWxlcyB0byBzaXpl
IHRoZSBwbGFjZWhvbGRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKTogSWYgdGhlIHBsYWNlaG9sZGVyIGlzIGluc2VydGVk
IGluc2lkZSBhbgorICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCAoZS5nLiA8aW5w
dXQ+IG9yIDx0ZXh0YXJlYT4pIHRoZW4gaGlkZSB0aGUgSFRNTCBwbGFjZWhvbGRlciB0ZXh0Lgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3Rvcik6IElmIHRoZSBwbGFjZWhvbGRlciB3YXMgcmVtb3ZlZCBmcm9tIGluc2lkZQorICAgICAg
ICBhbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB0aGVuIHNob3cgdGhlIEhUTUwgcGxhY2Vo
b2xkZXIgdGV4dC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6
IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFs
eXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTRlMjYwN2NjYTVlZjE5M2IxNDg4ODE2NGIzNTAz
ODNkM2FmNWUwNS4uZjc1MWI0NzY3MjNlZGVlMTM0ZTI4M2JjMzc4NDI5M2I2ZjlkYWM1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVt
b3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDg2NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzcxMDcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudHMgdGhlIFVJVGV4dElucHV0IHByb3RvY29sIGZ1bmN0aW9ucyAtaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyV2l0aFNpemUgYW5kIC1yZW1vdmVUZXh0UGxhY2Vob2xkZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5zZXJ0VGV4
dFBsYWNlaG9sZGVyV2l0aFNpemU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyOndpbGxJbnNlcnRUZXh0OmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbW9yZSBvZiB0aGUgVUlUZXh0SW5wdXQg
cHJvdG9jb2wuIFRoZXNlIGZ1bmN0aW9ucyB0dXJuIGFyb3VuZCBhbmQgY2FsbAorICAgICAgICB0
aGUgY29ycmVzcG9uZGluZyBXZWJQYWdlUHJveHkgZnVuY3Rpb25zLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tUZXh0UGxhY2Vob2xkZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRl
ciBpbml0V2l0aEVsZW1lbnRDb250ZXh0Ol0pOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRl
ciBlbGVtZW50Q29udGV4dF0pOgorICAgICAgICAoLVtXS1RleHRQbGFjZWhvbGRlciByZWN0c10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oOiBSZW1vdmUg
YW4gdW5uY2Vzc2FyeSAjcHJhZ21hIG9uY2Ugc2luY2UgSSBhbSBoZXJlLgorICAgICAgICBUaGlz
IGZpbGUgaXMgb25seSBpbmNsdWRlZCBmcm9tIE9iamVjdGl2ZS1DL0MrKyBmaWxlcyBzbyB0aGF0
ICNwcmFnbWEgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1RleHRT
ZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0IGluaXRXaXRo
Q0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xk
ZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFj
ZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBuZXcgbWVzc2FnZXMg
dG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92ZVRl
eHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5kIGFuZCBjYWxsIHRoZSBjb3JyZXNw
b25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBN
YWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzIxZmJiMWFkOGE1YWE2
YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhkMWQxODE3YTNiNzliOWIwNWQ2ZWMx
OTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcgQEAgaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkzNDA1NzIzNjk3
YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkwYTFjYzMzZjhlNGRiZjE5OGVkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJ
CUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0MDBBMENBQjYg
LyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBNTAx
RDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4MjQwREJFQjkwMDZF
RDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAv
KiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFE
NzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJCUNFMTg2NjQzMUY3
MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1MzUwOTAwQ0JDOTI3
IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGltZXJIb2xkaW5n
VGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRTIyRDUzNTA5MDBD
QkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01U
aW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIx
NTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGlu
QnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMxMzg5NDMwMDhCRUY0
QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIxMjE1NDI0MERCRDMw
MDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJCQkJQ0UyMTIxNTMy
NDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLywKIAkJCQlBNTQx
NkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAgKi8s
CiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJRTREOTg4QjQxN0JG
RDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2NTBFMkVGMkVB
MDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0EwRjNBMkY5
QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0MjcyOTg4NTAzN2IzNGY5OGJmN2U0Li5k
YTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5MGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNmM2ZDgz
YTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uNmYxNjg1MDNlYjI3ZjRjZTI3YWM2
NTA4Yzc5MGIxMzE4NzJlYzY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMTAs
NiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJU
ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUg
IlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgi
CkBAIC0zMzA5LDYgKzMzMTAsNTMgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJ
dGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAgIHJldHVybiBwbGFpblRleHQoc2Vs
ZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0
ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0
b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAg
IC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
KCkuIEFzIG9mIDAzLzA2LzIwMjAsIHVzaW5nCisgICAgLy8gcmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCgpIHdoZW4gdGhlcmUgaXMgYSBjYXJldCBzZWxlY3Rpb24gYXQgYSB3b3JkIHN0YXJ0
CisgICAgLy8gZGVsZXRlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB3b3JkLgorICAgIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihkb2N1bWVudCk7CisKKyAgICBhdXRvIHBsYWNl
aG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzaXplKTsK
KyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCktPmluc2VydE5vZGUo
cGxhY2Vob2xkZXIuY29weVJlZigpKTsKKworICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2Vi
S2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGFm
dGVyIHRoZSBwbGFjZWhvbGRlci4KKyAgICBhdXRvIG5ld1NlbGVjdGlvbiA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIG5ld1NlbGVjdGlvbi0+c2V0U3RhcnRBZnRlcihwbGFjZWhvbGRl
cik7CisgICAgbmV3U2VsZWN0aW9uLT5zZXRFbmRBZnRlcihwbGFjZWhvbGRlcik7CisgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlvbi5wdHIoKSwgRE9X
TlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworCisgICAg
cmV0dXJuIHBsYWNlaG9sZGVyOworfQorCit2b2lkIEVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmIHBsYWNlaG9sZGVyKQoreworICAgIEFTU0VSVChw
bGFjZWhvbGRlci5pc0Nvbm5lY3RlZCgpKTsKKworICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQg
eyB0aGlzLT5kb2N1bWVudCgpIH07CisKKyAgICAvLyBTYXZlIG9mZiBzdGF0ZSBhbmQgY29tcHV0
ZSB0aGUgaW5kZXggb2YgdGhlIHBsYWNlaG9sZGVyIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUKKyAg
ICAvLyB0ZXh0IGluc2VydGlvbiBwb3NpdGlvbiB0byBqdXN0IGJlZm9yZSB0aGUgcGxhY2Vob2xk
ZXIgZWxlbWVudCBhZnRlciByZW1vdmFsLgorICAgIGF1dG8gc2F2ZWRSb290RWRpdGFibGVFbGVt
ZW50ID0gbWFrZVJlZlB0cihwbGFjZWhvbGRlci5yb290RWRpdGFibGVFbGVtZW50KCkpOworICAg
IGF1dG8gc2F2ZWRQYXJlbnROb2RlID0gbWFrZVJlZlB0cihwbGFjZWhvbGRlci5wYXJlbnROb2Rl
KCkpOworICAgIHVuc2lnbmVkIHNhdmVkUGxhY2Vob2xkZXJJbmRleCA9IHBsYWNlaG9sZGVyLmNv
bXB1dGVOb2RlSW5kZXgoKTsKKworICAgIC8vIEZJWE1FOiBTYXZlIHRoZSBjdXJyZW50IHNlbGVj
dGlvbiBpZiBpdCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcGxhY2Vob2xkZXIgd2FzIGluc2VydGVk
CisgICAgLy8gYW5kIHJlc3RvcmUgaXQgYWZ0ZXIgdGV4dCBpbnNlcnRpb24uCisgICAgcGxhY2Vo
b2xkZXIucmVtb3ZlKCk7CisKKyAgICAvLyBUbyBtYXRjaCB0aGUgTGVnYWN5IFdlYktpdCBpbXBs
ZW1lbnRhdGlvbiwgc2V0IHRoZSB0ZXh0IGluc2VydGlvbiBwb2ludCB0byBiZSBiZWZvcmUgd2hl
cmUgdGhlIHBsYWNlaG9sZGVyIHVzZSB0byBiZS4KKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24o
KS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9PSBz
YXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgYXV0byBuZXdTZWxlY3Rpb24gPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzYXZlZFBhcmVudE5vZGUuZ2V0KCksIHNhdmVkUGxhY2Vo
b2xkZXJJbmRleCwgc2F2ZWRQYXJlbnROb2RlLmdldCgpLCBzYXZlZFBsYWNlaG9sZGVySW5kZXgp
OworICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobmV3U2VsZWN0
aW9uLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Olllcyk7CisgICAgfQorfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VDYXJldFdpZHRo
KEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFdpZHRoIGFkanVzdG1lbnQgZG9lc24n
dCB3b3JrIGZvciByb3RhdGVkIHRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmODY3
N2IzMThlOGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgwNWI0NTNlLi5lMDM3OGFlYjdhOTJiNTJhYTVk
ZDljN2I5ZTk1MGExZmUwNGU1ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgyLDYg
KzgyLDcgQEAgY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dDsKIGNsYXNzIFRleHRD
aGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVGV4dFBsYWNlaG9sZGVyRWxl
bWVudDsKIAogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IEZvbnRBdHRyaWJ1
dGVzOwpAQCAtNTQ5LDYgKzU1MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRl
eHRQbGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAg
RG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyZDA2
YjVjODkxMDhhNTQ4Y2RhYmRkMTY1N2M2OWE3YjZiMGE0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKwordXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKworUmVmPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCB7IGRv
Y3VtZW50LCBzaXplIH0pOworfQorCitUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkK
KyAgICA6IEhUTUxEaXZFbGVtZW50IHsgZGl2VGFnLCBkb2N1bWVudCB9Cit7CisgICAgLy8gRklY
TUU6IE1vdmUgdG8gVXNlciBBZ2VudCBzdHlsZXNoZWV0LgorICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZUJsb2NrLCBmYWxzZSk7Cisg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIENTU1Zh
bHVlQm90dG9tLCBmYWxzZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVZpc2liaWxpdHksIENTU1ZhbHVlSGlkZGVuLCB0cnVlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19Q
WCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6ZS5o
ZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7Cit9CisKK2F1dG8gVGV4dFBsYWNlaG9sZGVy
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBl
LCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQKK3sKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50
KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gcGFyZW50T2ZJbnNlcnRlZFRyZWUu
c2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkp
CisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRv
d0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBI
VE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50
T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3Rl
ZEZyb21Eb2N1bWVudCkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93SG9zdCA9IG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKKyAgICB9
CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2JhODQwOTMwMTk4YTlhOTkzNzhiNDQyMzYwYjZkMzBiNDIyNzk2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVGV4
dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKworICAg
IC8vIEVsZW1lbnQKKyAgICBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIE5vZGUKKyAgICBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgZmluYWw7CisgICAgdm9pZCByZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
KSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OkVsZW1l
bnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSk7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA0OTJkZjJmYzdjN2YxOWZjM2U5YjliMTQzNjM0ZjA3ZWIyOThkNWViLi5mMDky
Mzk2ZjZkYTM4Nzg3NWYwMTNjYTFiNmZhMjg0ZmQ4YTVkYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAKICNpbmNsdWRlICJTdHlsZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlRy
ZWVTY29wZS5oIgogI2luY2x1ZGUgIlR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDM2LDYgKzE0MzcsMTcgQEAgdm9pZCBJbnRlcm5hbHM6
OnNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50LCBib29sIGNhblNob3dQbGFj
ZWhvbGRlcikKICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVs
ZW1lbnQpLnNldENhblNob3dQbGFjZWhvbGRlcihjYW5TaG93UGxhY2Vob2xkZXIpOwogfQogCitF
bGVtZW50KiBJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgcmV0dXJuIGZyYW1lKCktPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhv
bGRlcihJbnRTaXplIHsgd2lkdGgsIGhlaWdodCB9KS5nZXQoKTsKK30KKwordm9pZCBJbnRlcm5h
bHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChp
czxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgZnJhbWUoKS0+ZWRp
dG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25jYXN0PFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ+KGVsZW1lbnQpKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNo
b29zZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVl
KQogewogICAgIGVsZW1lbnQuc2VsZWN0Q29sb3IoY29sb3JWYWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCA4MTUyNmU5ZTJkN2I4MzI5OTUwYWY5MWIxM2IzZTA0N2IyMTIw
OTk2Li44OTg0ZTlkMDM4MzFiZWFmNmI5MjNhOTA5NDcyOGJlZGJmYWQ3MWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRDYW5TaG93UGxh
Y2Vob2xkZXIoRWxlbWVudCYsIGJvb2wpOwogCisgICAgRWxlbWVudCogaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoRWxlbWVudCYpOworCiAgICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhU
TUxJbnB1dEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwogICAgIEV4Y2VwdGlv
bk9yPFZlY3RvcjxTdHJpbmc+PiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVt
KCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGJkMDcxNmM4MzhkNDNiZTY0MWRhNWNlNWJkNTcxMWMzODM4OTMxMzgu
LjViYmUwNGQ4OWM0NDlhZmRmNmM4MWEwNjUyZjg2YjhiYjQ3ZWNiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwOSw2ICszMDksOSBAQCBlbnVtIENvbXBvc2l0aW5n
UG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVu
dCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xkZXIpOwogCisgICAgRWxlbWVudCBpbnNlcnRUZXh0
UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CisKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0ZXh0LCBSYW5nZT8gcmVmZXJlbmNlUmFu
Z2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMpOwog
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudEZpbmRNYXRjaGVzKERP
TVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjk2NzYzMTNhYzYyNWZlNjBkZTlmZTMw
ZjFhMDRjOGYyMTk5NDI2NS4uZjg4MTlhOTUxMDg0NDM4Yzg1MDRlZjU3MmZlZDU4ZTNiODhlNTNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxMCw2ICs3MTAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNldFNob3Vs
ZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQg
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYm
KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBkb3VibGUgZGlz
cGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9z
ZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZS5leHBvc2VkQ29udGVudFJlY3QoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlLnVub2JzY3VyZWRDb250ZW50UmVjdCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCAxZmFlOTc1MjY0YmJlNDkzMjU4ODU4NGUyOWVmNGFlZDRhZDY5ZTRmLi5iODE4ODNjZGRj
MmMyODg3MTZiNjc1NjY2MGI1ZDhhMTgwNzNhYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY1LDYg
KzY1LDcgQEAKICNpbXBvcnQgIldLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIgogI2ltcG9ydCAiV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9sZGVyLmgi
CiAjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCiAjaW1wb3J0ICJXS1RpbWVQaWNrZXJW
aWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJpdmF0ZS5oIgpAQCAtMjkx
LDcgKzI5Miw2IEBAICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0aW9uV2l0aFJlY3Q6KENH
UmVjdClwb3NpdGlvblJlY3Q7CiAKIEBlbmQKIAotCiBAaW50ZXJmYWNlIFdLQXV0b2NvcnJlY3Rp
b25SZWN0cyA6IFVJV0tBdXRvY29ycmVjdGlvblJlY3RzCiArIChXS0F1dG9jb3JyZWN0aW9uUmVj
dHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OihDR1JlY3QpZmlyc3RSZWN0
IGxhc3RDR1JlY3Q6KENHUmVjdClsYXN0UmVjdDsKIEBlbmQKQEAgLTc0MzYsNiArNzQzNiwyMCBA
QCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4
dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAjZW5kaWYKIAorLSAodm9pZClpbnNlcnRUZXh0
UGxhY2Vob2xkZXJXaXRoU2l6ZTooQ0dTaXplKXNpemUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJVGV4dFBsYWNlaG9sZGVyICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2Ut
Pmluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHsgc2l6ZSB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIHBsYWNlaG9sZGVyKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxsb2Nd
IGluaXRXaXRoRWxlbWVudENvbnRleHQ6KnBsYWNlaG9sZGVyXSBhdXRvcmVsZWFzZV0gOiBuaWwp
OworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZVRleHRQbGFjZWhvbGRlcjooVUlUZXh0UGxh
Y2Vob2xkZXIgKilwbGFjZWhvbGRlciB3aWxsSW5zZXJ0VGV4dDooQk9PTCl3aWxsSW5zZXJ0VGV4
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIHdpbGxJbnNlcnRUZXh0LgorICAg
IGlmIChhdXRvKiB3a1RleHRQbGFjZWhvbGRlciA9IGR5bmFtaWNfb2JqY19jYXN0PFdLVGV4dFBs
YWNlaG9sZGVyPihwbGFjZWhvbGRlcikpCisgICAgICAgIF9wYWdlLT5yZW1vdmVUZXh0UGxhY2Vo
b2xkZXIod2tUZXh0UGxhY2Vob2xkZXIuZWxlbWVudENvbnRleHQsIG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNp
emVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdGVtcyhOU0FycmF5
PE5TSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiBzaXplczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlhOTI2MGYwZjZkOGFkODcxYjc1NjhjYmVkNTY5
NmE2ZGYyZDg0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRDb250ZXh0OworfQorCitAaW50ZXJmYWNlIFdL
VGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vob2xkZXIKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250
ZXh0OworCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQ7
CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1
OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1Rl
eHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAi
V0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5o
PgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOworfQorCist
IChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICBy
ZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJl
Y3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFs
bG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVs
ZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmlu
ZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkw
NjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMjMsOCArMjMsNiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1
LDYgKzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxl
Y3Rpb25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDR1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9u
UmVjdDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlv
blJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5tbQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFi
N2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQs
MTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6
OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNl
bGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6
V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNl
bGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QK
IHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcx
ZGEzYTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5YzkxYWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRk
NGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRU
ZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
VGV4dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93
ZWJQYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMy
MmM5MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1YjczNTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNj
OWU2M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiArMTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFz
c2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAv
KiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovOyB9Owor
CQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4
NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyog
SW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0No
YW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2Vk
V2ViRXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiArNTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2
QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vo
b2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9X
S1RleHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1
RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgw
MTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0
aW9uUmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVj
dGlvblJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1t
OyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAKIAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBF
NjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2
MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4
QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNF
MjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNF
MjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlD
RTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJ
CUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAog
CQkJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2
MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1
RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1
dFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0
NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdL
VG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2
ICsxMjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dz
aW5nV2FybmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNF
OCAvKiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlC
MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAy
NGVmYjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdjY2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4
YzZjZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lk
IHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAor
ICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2
OWU3Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRhZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBh
ODYwOGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTksNiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQo
c3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4g
KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQogICAgIFNldFNob3VsZFJldmVhbEN1cnJl
bnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rp
b25BZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50
U2l6ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9s
ZGVyKSBBc3luYworICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJj
NDJiNDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJjLi4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1
ZDVjOWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQu
aD4KQEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1Rl
eHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBX
ZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9s
ZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcg
ZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xk
ZXIgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9s
ZGVyKSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50
KSk7CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhv
bGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PigqZWxlbWVudCkpOworICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBS
ZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUwOWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdl
ZDFhYi4uZTY5MzRkZTJkYzk1MzUyOGE1MWM3NGY0Y2ZjN2I2YTFlMTI5MGJhMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRl
eHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVu
c3VyZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisg
ICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3M6
IEFkZGVkLgorICAgICAgICAoQGZvbnQtZmFjZSk6CisgICAgICAgICgudGVzdCk6CisKIDIwMTkt
MDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZjMwNDBi
YTY5NjZlMjI1NzcxMWNlZjFkM2JkZGRjYTc3MWZjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0
LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0
aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxv
b2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9w
PgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxs
byBmcm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1m
aWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNTRjNGIzZDRmMDdkN2I1
NTJkMzg0YjJkYTZjMDY0ZTdmODE2NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0
bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFu
ZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVy
IHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhvbGRlckVsZW1lbnQgPSBudWxsOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1
dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgcGxhY2Vob2xkZXJFbGVtZW50ID0gaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgICAgICBjb25zb2xlLmFzc2VydChwbGFjZWhvbGRlckVsZW1lbnQpOworICAgIH0K
KyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigp
LCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyRWxlbWVudCk7CisKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1l
ZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDY1MDFiMjZjOGNkN2M4ZjJjMDBkM2RkMTAwZDM4YTgyODVjZmNjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQt
ZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1z
Y2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVy
IGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8L2NvZGU+IGVsZW1lbnQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIgc3R5bGU9IndpZHRoOiAy
MDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2siIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+SGVsbG8gJm5ic3A7Jm5ic3A7ZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODk0OWVkODQxODFkYzFkM2E3MjU3MmQ3NTVlYTgyMjEzMGFiN2Q2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNv
bnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8L2NvZGU+IGVsZW1lbnQuIFRo
aXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVy
VHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2siIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbih0ZXN0
RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMoKSwgdGVzdEVsZW1lbnQsICJm
b2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVzdEVsZW1lbnQudGV4dENvbnRl
bnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tLCB0ZXN0RWxlbWVu
dC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9z
dCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRo
ID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdEVsZW1lbnQsIG51bGwpLmZv
bnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoMiAq
IGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZp
ZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigpLCB0ZXN0RWxlbWVudCwgImJs
dXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjljNGZkM2QwNzlhYTk5MzliMGM5Y2FiMzhhNmM4NDA4YjNjZTU4ZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxh
Y2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGlu
dG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRl
c3QiIHR5cGU9InRleHQiIHZhbHVlPSIgICAgICAiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5
LXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA1MTA0MWRkMzg2ZWZm
MTY2ZTQ4MmUzMzRlMjc0NWM4M2I2MjJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwK
QEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxh
Y2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25s
eSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5w
dXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkZBSUwi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBB
aGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAg
bGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwg
bnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhv
bGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERl
Zm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxG
dW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIp
OworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRl
eHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZjMzFm
MzNlMGM5YzEwYWJhMWI4YjdjNTNkNzI2N2IxNWQ3YTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRl
ZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRU
ZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNz
PSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9tIEN1cGVydGlubyEiPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBh
ODM1NTNiZjE5MjUxMTJmMDBmODdhZjA2M2U4Yjg1YTdkOTU4ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRv
IGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisK
K2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihp
bnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRX
YWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAg
bGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlu
cHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1
c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGgu
CisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5
bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1
dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNv
dXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3Vy
Y2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQyNWVhNDY5YTg5ZThiOWIzYmUy
NGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIgQEAKK0Bmb250LWZhY2Ugewor
ICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIuLi8uLi8uLi9yZXNvdXJjZXMv
QWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgvMSBBaGVtOworICAgIC13
ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8gbWFrZSBkZWJ1Z2dpbmcg
ZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAgY2FyZXQtY29sb3I6IGJs
dWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392807</attachid>
            <date>2020-03-06 16:44:16 -0800</date>
            <delta_ts>2020-03-06 18:15:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306164415.patch</filename>
            <type>text/plain</type>
            <size>60336</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
NWYxYzkyODExYTdmMDRkNjVhY2I2ODQ1MzRlMTI2MDhmZWZhYjU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTEgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9u
KGRvY3VtZW50KTsKKworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIHNpemUpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9O
b3JtYWxpemVkUmFuZ2UoKS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisg
ICAgLy8gVG8gbWF0Y2ggdGhlIExlZ2FjeSBXZWJLaXQgaW1wbGVtZW50YXRpb24sIHNldCB0aGUg
dGV4dCBpbnNlcnRpb24gcG9pbnQgdG8gYmUgYWZ0ZXIgdGhlIHBsYWNlaG9sZGVyLgorICAgIGF1
dG8gbmV3U2VsZWN0aW9uID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbmV3U2VsZWN0
aW9uLT5zZXRTdGFydEFmdGVyKHBsYWNlaG9sZGVyKTsKKyAgICBuZXdTZWxlY3Rpb24tPnNldEVu
ZEFmdGVyKHBsYWNlaG9sZGVyKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UobmV3U2VsZWN0aW9uLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6Olllcyk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3Zv
aWQgRWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYg
cGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOwor
CisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAg
IC8vIFNhdmUgb2ZmIHN0YXRlIGFuZCBjb21wdXRlIHRoZSBpbmRleCBvZiB0aGUgcGxhY2Vob2xk
ZXIgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZQorICAgIC8vIHRleHQgaW5zZXJ0aW9uIHBvc2l0aW9u
IHRvIGp1c3QgYmVmb3JlIHRoZSBwbGFjZWhvbGRlciBlbGVtZW50IGFmdGVyIHJlbW92YWwuCisg
ICAgYXV0byBzYXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHBsYWNlaG9sZGVy
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSk7CisgICAgYXV0byBzYXZlZFBhcmVudE5vZGUgPSBtYWtl
UmVmUHRyKHBsYWNlaG9sZGVyLnBhcmVudE5vZGUoKSk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFj
ZWhvbGRlckluZGV4ID0gcGxhY2Vob2xkZXIuY29tcHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8g
RklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNl
IHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRl
ciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRv
IG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5z
ZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJl
LgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRv
Y3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkgewor
ICAgICAgICBhdXRvIG5ld1NlbGVjdGlvbiA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHNhdmVk
UGFyZW50Tm9kZS5nZXQoKSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUu
Z2V0KCksIHNhdmVkUGxhY2Vob2xkZXJJbmRleCk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICB9Cit9CisKIHN0YXRpYyBp
bmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBG
SVhNRTogV2lkdGggYWRqdXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2ZWVmMjYw
ODA1YjQ1M2UuLmUwMzc4YWViN2E5MmI1MmFhNWRkOWM3YjllOTUwYTFmZTA0ZTVkNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZl
bnQ7CitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25I
aWdobGlnaHQ7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2Vy
dEVkaXRhYmxlSW1hZ2UoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50PiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODg2MzUxMmFmYjVkZTExYjI4NmZkNDEyMWI1ZTEzNzg5
M2E5MzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCisK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQpOworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudD4gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisKK1RleHRQ
bGFjZWhvbGRlckVsZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorICAgIDogSFRNTERpdkVsZW1lbnQgeyBkaXZU
YWcsIGRvY3VtZW50IH0KK3sKKyAgICAvLyBGSVhNRTogTW92ZSB0byBVc2VyIEFnZW50IHN0eWxl
c2hlZXQuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0
NT4uCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1Zh
bHVlSW5saW5lQmxvY2ssIGZhbHNlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVCb3R0b20sIGZhbHNlKTsKKyAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVIaWRkZW4sIHRy
dWUpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgc2l6ZS53
aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCBzaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
K30KKworYXV0byBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdAoreworICAgIGlmIChpbnNlcnRp
b25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNoYWRvd0hv
c3QgPSBwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGZh
bHNlKTsKKyAgICB9CisgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50OjppbnNlcnRlZEludG9BbmNl
c3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cit9CisKK3ZvaWQgVGV4
dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKK3sKKyAgICBp
ZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CisgICAgICAgIGlmIChh
dXRvKiBzaGFkb3dIb3N0ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCk7IGlz
PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hv
d1BsYWNlaG9sZGVyKHRydWUpOworICAgIH0KKyAgICBIVE1MRGl2RWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmE4NDA5MzAxOThhOWE5OTM3
OGI0NDIzNjBiNmQzMGI0MjI3OTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jiwg
Y29uc3QgTGF5b3V0U2l6ZSYpOworCisgICAgLy8gRWxlbWVudAorICAgIGJvb2wgaXNUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8g
Tm9kZQorICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9y
KEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSBmaW5h
bDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5v
ZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRQbGFj
ZWhvbGRlckVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdl
YkNvcmU6OkVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQ5MmRmMmZjN2M3ZjE5ZmMzZTli
OWIxNDM2MzRmMDdlYjI5OGQ1ZWIuLmYwOTIzOTZmNmRhMzg3ODc1ZjAxM2NhMWI2ZmEyODRmZDhh
NWRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NSw2ICsxODUs
NyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVu
dHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHlwZUNvbnZl
cnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0MzYsNiAr
MTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVyKQogICAgICAgICBkb3duY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNh
blNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQqIEludGVybmFsczo6aW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gZnJhbWUoKS0+
ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKEludFNpemUgeyB3aWR0aCwgaGVpZ2h0IH0p
LmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1l
bnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93
bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworfQorCiB2b2lkIEludGVy
bmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAgICAgZWxlbWVudC5zZWxlY3RDb2xvcihj
b2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgxNTI2ZTllMmQ3
YjgzMjk5NTBhZjkxYjEzYjNlMDQ3YjIxMjA5OTYuLjg5ODRlOWQwMzgzMWJlYWY2YjkyM2E5MDk0
NzI4YmVkYmZhZDcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjM4LDYg
KzIzOCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQm
KTsKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiwgYm9vbCk7CiAKKyAg
ICBFbGVtZW50KiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50Jik7CisKICAgICB2b2lkIHNl
bGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxlbWVudCYsIGNvbnN0IFN0cmluZyYg
Y29sb3JWYWx1ZSk7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+IGZvcm1Db250cm9s
U3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRG
b3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYmQwNzE2YzgzOGQ0M2Jl
NjQxZGE1Y2U1YmQ1NzExYzM4Mzg5MzEzOC4uNWJiZTA0ZDg5YzQ0OWFmZGY2YzgxYTA2NTJmODZi
OGJiNDdlY2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzA5LDYg
KzMwOSw5IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgdm9pZCBzZXRDYW5TaG93
UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGNhblNob3dQbGFjZWhvbGRlcik7
CiAKKyAgICBFbGVtZW50IGluc2VydFRleHRQbGFjZWhvbGRlcihsb25nIHdpZHRoLCBsb25nIGhl
aWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50KTsK
KwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5n
IHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0
aW9ucyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hl
c0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMs
IERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmlu
Zz4gZmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBmOTY3NjMxM2FjNjI1ZmU2MGRlOWZlMzBmMWEwNGM4ZjIxOTk0MjY1Li5mODgxOWE5NTEwODQ0
MzhjODUwNGVmNTcyZmVkNThlM2I4OGU1M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9CiAg
ICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNjdXJlZENvbnRl
bnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFmYWU5NzUyNjRiYmU0OTMyNTg4NTg0ZTI5
ZWY0YWVkNGFkNjllNGYuLmQ4NGRkMjg3ZWE3ZWRkYjlmM2RjYmMzMTYyMWViYjM5ZjU2ZjI5NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjUsNiArNjUsNyBAQAogI2ltcG9ydCAiV0tTZWxlY3RNZW51
TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oIgorI2lt
cG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIldLVGV4dFNlbGVjdGlvblJlY3Qu
aCIKICNpbXBvcnQgIldLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1VJ
RGVsZWdhdGVQcml2YXRlLmgiCkBAIC0yOTEsNyArMjkyLDYgQEAgKyAoV0tUZXh0UG9zaXRpb24g
Kil0ZXh0UG9zaXRpb25XaXRoUmVjdDooQ0dSZWN0KXBvc2l0aW9uUmVjdDsKIAogQGVuZAogCi0K
IEBpbnRlcmZhY2UgV0tBdXRvY29ycmVjdGlvblJlY3RzIDogVUlXS0F1dG9jb3JyZWN0aW9uUmVj
dHMKICsgKFdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqKWF1dG9jb3JyZWN0aW9uUmVjdHNXaXRoRmly
c3RDR1JlY3Q6KENHUmVjdClmaXJzdFJlY3QgbGFzdENHUmVjdDooQ0dSZWN0KWxhc3RSZWN0Owog
QGVuZApAQCAtNzQzNiw2ICs3NDM2LDI3IEBAIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50
OihDR1BvaW50KXBvaW50IHdpdGhDb250ZXh0UmVxdWVzdDooVUlXS0RvY3VtZW50UmVxCiAKICNl
bmRpZgogCistICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOihDR1NpemUpc2l6
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlUZXh0UGxhY2Vob2xkZXIgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6
OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+
KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYgcGxhY2Vob2xkZXIp
IHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlm
ICghc3Ryb25nU2VsZiB8fCAhcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXJUb1VzZSB7ICpwbGFjZWhvbGRlciB9Owor
ICAgICAgICBwbGFjZWhvbGRlcldpdGhXZWJWaWV3Qm91bmRwbGFjZWhvbGRlclRvVXNlaW5nUmVj
dC5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBjb252ZXJ0UmVjdDpwbGFjZWhvbGRlcldpdGhX
ZWJWaWV3Qm91bmRpbmdSZWN0LmJvdW5kaW5nUmVjdCBmcm9tVmlldzpbc3Ryb25nU2VsZiB3ZWJW
aWV3XV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFs
bG9jXSBpbml0V2l0aEVsZW1lbnRDb250ZXh0OnBsYWNlaG9sZGVyV2l0aFdlYlZpZXdCb3VuZGlu
Z1JlY3RdIGF1dG9yZWxlYXNlXSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlVGV4dFBs
YWNlaG9sZGVyOihVSVRleHRQbGFjZWhvbGRlciAqKXBsYWNlaG9sZGVyIHdpbGxJbnNlcnRUZXh0
OihCT09MKXdpbGxJbnNlcnRUZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Ig
d2lsbEluc2VydFRleHQuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODc0Nz4uCisgICAgaWYgKGF1dG8qIHdrVGV4dFBsYWNlaG9sZGVyID0gZHluYW1pY19v
YmpjX2Nhc3Q8V0tUZXh0UGxhY2Vob2xkZXI+KHBsYWNlaG9sZGVyKSkKKyAgICAgICAgX3BhZ2Ut
PnJlbW92ZVRleHRQbGFjZWhvbGRlcih3a1RleHRQbGFjZWhvbGRlci5lbGVtZW50Q29udGV4dCwg
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHN0YXRpYyBWZWN0b3I8V2Vi
Q29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9w
cGluZ0l0ZW1zKE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMpCiB7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWIzMTMzYWIyY2Zj
NGMwYTliZjM0OWYxNGMyY2I5ZTRkYTIwODJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDxVSUtpdC9V
SUtpdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7Cit9
CisKK0BpbnRlcmZhY2UgV0tUZXh0UGxhY2Vob2xkZXIgOiBVSVRleHRQbGFjZWhvbGRlcgorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50Q29udGV4dDooY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmKWNvbnRleHQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0OworCitAZW5kCisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNThkN2JlNTYwMzU1
NzZlOGIwZmE5NGQ5ZTc4NDk5OTU1NzgxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tUZXh0UGxhY2Vob2xk
ZXIuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLVGV4dFNlbGVj
dGlvblJlY3QuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4KKworQGltcGxl
bWVudGF0aW9uIFdLVGV4dFBsYWNlaG9sZGVyIHsKKyAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCBfZWxlbWVudENvbnRleHQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVsZW1lbnRD
b250ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4dAoreworICAgIGlm
ICghKHNlbGYgPSBbc2VsZiBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2VsZW1l
bnRDb250ZXh0ID0gY29udGV4dDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQmKWVsZW1lbnRDb250ZXh0Cit7CisgICAgcmV0dXJuIF9lbGVt
ZW50Q29udGV4dDsKK30KKworLSAoTlNBcnJheTxVSVRleHRTZWxlY3Rpb25SZWN0ICo+ICopcmVj
dHMKK3sKKyAgICByZXR1cm4gQFsgW1tbV0tUZXh0U2VsZWN0aW9uUmVjdCBhbGxvY10gaW5pdFdp
dGhDR1JlY3Q6X2VsZW1lbnRDb250ZXh0LmJvdW5kaW5nUmVjdF0gYXV0b3JlbGVhc2VdIF07Cit9
CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaAppbmRleCA4ZDU4ZmUx
ZmE2YmY0NGMwN2IyODA3ZWVmYjc1YTMwMzZjMjlhZWQwLi5lNjU2NjNlMDA5MDYyODU3MGRkZGQ1
Y2E0MjZiZTlmMjVmMDBmMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBA
IGNsYXNzIFNlbGVjdGlvblJlY3Q7CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6
IFVJVGV4dFNlbGVjdGlvblJlY3QKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihD
R1JlY3QpcmVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0
IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXgg
OTkxMDMzNWZiNWI1NTEwOThjNDM5YTg1ZTRjMTc5OTY4OTYyZTRmMy4uNTgxYjdiM2VjM2YzNjBm
N2I2YjYzNjA5Y2FlNzIxODAwZDRiZWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KQEAgLTM0LDYgKzM0LDEzIEBAIEBpbXBs
ZW1lbnRhdGlvbiBXS1RleHRTZWxlY3Rpb25SZWN0IHsKICAgICBXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0IF9zZWxlY3Rpb25SZWN0OwogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6
KENHUmVjdClyZWN0Cit7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0
OworICAgIHNlbGVjdGlvblJlY3Quc2V0UmVjdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJl
Y3QpKTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhTZWxlY3Rpb25SZWN0OldURk1vdmUoc2Vs
ZWN0aW9uUmVjdCldOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0
Oihjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0CiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4YjRlMDQ5M2M1YTZhOTc2YzM3MWRhM2E4ODE1ZDQ0
YzI5MmJmMTUzLi4zYzMyOWM5MWFlOGRlNTkyNDU0NTUxYjA4ZTNhZmUxMGY0ZDRlNzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ1
Nyw2ICs0NTcsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29u
c3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1QKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3RlZFRleHQob2xkVGV4dCwgbmV3VGV4
dCksIG1fd2ViUGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFj
ZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRQbGFjZWhv
bGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBFbGVt
ZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZW1vdmVUZXh0UGxhY2Vob2xkZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIGNhbGxiYWNr
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNhNjgzMjJjOTM1MTY3YWI2
YTliZDI3MGM2ODc3ZWFhNWI3MzU5Ni4uMjg3YzA1MGQ2NTNlMTRiN2M1YzhjYzllNjNhZTA1OTg4
ZTdmNTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzM0LDYgKzE3MzQsOCBAQAogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQg
LyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2
aWNlc1NQSS5oICovOyB9OwogCQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFB
NDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0
RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAq
LzsgfTsKKwkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RDI0
MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLzsgfTsKKwkJQ0UyMTIxNjAy
NDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8q
IFdLVGV4dFBsYWNlaG9sZGVyLm1tICovOyB9OwogCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYg
LyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlv
blJlY3QuaCAqLzsgfTsKIAkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLzsgfTsKIAkJ
Q0U1QjRDODgyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUI0
Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50Lmgg
Ki87IH07CkBAIC01MDUxLDYgKzUwNTMsOCBAQAogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQg
LyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0UyMTIxNUQyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLVGV4dFBsYWNlaG9sZGVyLmg7IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vo
b2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUUyNDBFRTU3MTAw
NkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tU
ZXh0UGxhY2Vob2xkZXIubW07IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1Rl
eHRTZWxlY3Rpb25SZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QuaDsg
cGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgcGF0aCA9IGlv
cy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zZXJ0VGV4dE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY3OTgsNiArNjgwMiw4IEBACiAJCQkJMjZGMTBCRTcxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3lu
dGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCiAJCQkJMzE2QjhCNjIyMDU0QjU1ODAw
QkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcuaCAqLywKIAkJCQkzMTZCOEI2MTIwNTRCNTU4
MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbSAqLywKKwkJCQlDRTIxMjE1RDI0MEVF
NTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLywKKwkJCQlDRTIxMjE1RTI0MEVF
NTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBG
ODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0
MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSAqLywKIAkJCQk3MUE2NzZB
NDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8s
CkBAIC0xMTM1Miw2ICsxMTM1OCw3IEBACiAJCQkJMkRENjdBMzUxQkQ4NjEwNjAwNTNCMjUxIC8q
IFdLVGV4dEZpbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENUY1MUQyMDYwODdB
MTAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyog
V0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUw
MDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2
RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxQTY3NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2NDgsNiArMTI2NTUsNyBA
QAogCQkJCTVDQTI2RDgzMjE3QUQxQjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxREIwMTk0NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFy
ZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8q
IFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UyMTIxNjAyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjRlZmIzZGFkZDk4
ZTM3ODIwZmQ4ODMwZTI0OGQ3Y2NjNGFkOTIwNS4uNzA3ZmM2YmRhNDIzOTg1OGM2Y2Y0NmM0MGQ4
ZDcxMGUyMDhiYTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtNjQyLDYgKzY0Miw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFJldmVhbEN1
cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2
ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uOyB9CiAgICAgdm9pZCBzZXRTaG91bGRS
ZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGlu
c2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7
CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENv
bnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxh
YmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNj
cmVlblNpemUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJhZTFjZTJiY2JhNWI3NjllNzI3NTIzZGZm
ZjY5OTE5Y2ZjZjg3M2UuLmI0YWVhNzU1NTRkYTc1NGY4MTA0OTFhMzRlNDIwYTg2MDhiMmQ0ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMTE5LDYgKzExOSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHN0cnVjdCBXZWJL
aXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0IHJlc3BvbnNlKSBBc3luYwogR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUgY29tbWFuZCkKICAgICBTZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb24oYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNl
cnRpb24pCisgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkg
LT4gKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMK
KyAgICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
IHBsYWNlaG9sZGVyKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlB
dXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMjM0ZmY2MjFiYzQyYjQ1NGU0MDA2
ZDhlZmM1NThjNmJjYzQ5ODJiYy4uMTEwOTMwOWI5ZTA4NWExNmNlNGZkYWNmNWQ1YzliMDU1ZGMy
NTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTEyNyw2ICsxMjcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CkBAIC00MDAw
LDYgKzQwMDEsMjQgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0
eUJhc2VkWm9vbVNjYWxpbmcoKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgLy8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVu
IEphdmFTY3JpcHQsIHdoaWNoIGNhbiBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3Ry
dWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUt
PmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhvbGRlcihzaXplKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihwbGFjZWhvbGRlciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6
Om51bGxvcHQpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25z
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChwbGFjZWhvbGRlcikpIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXM8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworICAgICAg
ICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNh
c3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oKmVsZW1lbnQpKTsKKyAgICB9CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVs
dGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBm
cmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDMyMGFkYzQ1MDlkMTY3MzU5YmQzZjRjZDFlNzFjNzZhNjQ3ZWQxYWIuLjFjOTUw
YjRlOWQxNThkMGJkYWQxMmMxZGYwMDE0YTIyM2ZkYzhiMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9s
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2
NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzcxMDczPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBlbnN1cmUgdGhhdCBp
bnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgcGxhY2Vob2xkZXIgd29yay4KKworICAgICAgICAqIGZh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
Y29udGVudC1lZGl0YWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1m
aWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1p
bi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jl
c291cmNlcy90ZXN0LmNzczogQWRkZWQuCisgICAgICAgIChAZm9udC1mYWNlKToKKyAgICAgICAg
KC50ZXN0KToKKwogMjAxOS0wNy0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9OIEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSBpbiBXZWJLaXQ6OkVkaXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50
by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTNmMzA0MGJhNjk2NmUyMjU3NzExY2VmMWQzYmRkZGNhNzcxZmM5MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5k
LXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdw
b3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0
ZXh0IHBsYWNlaG9sZGVyIHRoYXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQg
ZmllbGQgdmlzdWFsbHkgbG9va3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2lu
IHdpdGguIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBE
dW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0i
dGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1y
ZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmY1NGM0YjNkNGYwN2Q3YjU1MmQzODRiMmRhNmMwNjRlN2Y4MTY2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1p
bnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRo
YXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9v
a3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+
Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxv
IGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAg
YXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZv
Y3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0
LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3Np
dGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgbGV0IHBsYWNlaG9sZGVyRWxlbWVu
dCA9IG51bGw7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBz
YW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBwbGFjZWhv
bGRlckVsZW1lbnQgPSBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdp
ZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBsYWNlaG9sZGVy
RWxlbWVudCk7CisgICAgfQorICAgIAorICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUg
Y3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgo
KSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5yZW1vdmVUZXh0UGxhY2Vob2xkZXIocGxhY2Vob2xk
ZXJFbGVtZW50KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwNjUwMWIyNmM4Y2Q3YzhmMmMwMGQzZGQxMDBkMzhhODI4NWNmY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAK
KzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBh
IHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJs
ZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0
UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0
IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBi
bGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyAmbmJzcDsmbmJzcDtmcm9tIEN1cGVy
dGlubyE8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0
YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4OTQ5ZWQ4NDE4MWRjMWQzYTcyNTcyZDc1NWVhODIyMTMw
YWI3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwh
RE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3Bv
cnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291
cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRl
eHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJsZTwv
Y29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0IiBz
dHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFj
ayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyBmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCB0ZXN0RWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKHRlc3RFbGVtZW50KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5mb2N1cygp
LCB0ZXN0RWxlbWVudCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSB0ZXN0
RWxlbWVudC50ZXh0Q29udGVudC5pbmRleE9mKCJmcm9tIik7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25P
ZkZyb20sIHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRo
ZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAg
ICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0
RWxlbWVudCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRl
eHRQbGFjZWhvbGRlcigyICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKwor
ICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5ibHVyKCks
IHRlc3RFbGVtZW50LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM0ZmQzZDA3OWFhOTkzOWIwYzljYWIzOGE2Yzg0
MDhiM2NlNThmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xk
ZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy
dW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9
ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IiAgICAgICI+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MDUxMDQxZGQzODZlZmYxNjZlNDgyZTMzNGUyNzQ1YzgzYjYyMmU4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5
LXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0x
LjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRl
biB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4g
VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5k
ZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiBw
bGFjZWhvbGRlcj0iRkFJTCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAg
YXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZv
Y3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAs
IDApOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3
ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1l
IHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMu
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7Cisg
ICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIo
KSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZmMzMWYzM2UwYzljMTBhYmExYjhiN2M1M2Q3MjY3YjE1ZDdhODE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
XSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5p
dGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVz
dC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNl
aG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkg
YmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0
IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZy
b20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2Zh
NmUyNmU4ODUyODkzYTY0MTc0MjY3MzZjZGQ5MjVlZDQ2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1p
bi1pZnJhbWUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1z
Y2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVy
IGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVu
IGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlmcmFtZSBzcmNk
b2M9JzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL3Rlc3QuY3NzIj48L2hlYWQ+PGJvZHk+PGlucHV0IGlkPSJpbnB1dCIgY2xh
c3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZyb20gQ3VwZXJ0aW5vISI+
PC9ib2R5PjwvaHRtbD4nIHdpZHRoPSI2MDAiIGhlaWdodD0iMjAwIj48L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWQxOWEwODAxOGQ5NWMzZmE5YTNiODM1OWZmMWE5N2RhMWY4ZjdlYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJp
bml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90
ZXN0LmNzcyI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmll
bGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1w
UmVuZGVyVHJlZS48L3A+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQt
ZmllbGQtaW4taWZyYW1lLmh0bWwiIHdpZHRoPSI2MDAiIGhlaWdodD0iMjAwIj48L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw
YTgzNTUzYmYxOTI1MTEyZjAwZjg3YWYwNjNlOGI4NWE3ZDk1OGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVs
ZC5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50
byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1
bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVz
dCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24o
aW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5k
V2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAg
IGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBp
bnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOwor
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUg
dXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRo
LgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQor
CisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlI
ZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5w
dXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVz
b3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQt
aW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYyYWZlY2JjMTM5YzIyMjhkMTk2OGM4ZGVjYWVm
NGRkZDMxNDhjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJ0ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD0i
aW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRp
bm8hIj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
bnB1dCIpOworCisgICAgLy8gRklYTUU6IFVzZSBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRX
YWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA4NzQ5Pi4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisg
ICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAg
IGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7
CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFy
ZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lk
dGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVk
U3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNl
cnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9
CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBV
SUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBp
bnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVz
b3VyY2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQyNWVhNDY5YTg5ZThiOWIz
YmUyNGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIgQEAKK0Bmb250LWZhY2Ug
eworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIuLi8uLi8uLi9yZXNvdXJj
ZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgvMSBBaGVtOworICAg
IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8gbWFrZSBkZWJ1Z2dp
bmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAgY2FyZXQtY29sb3I6
IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392810</attachid>
            <date>2020-03-06 16:49:10 -0800</date>
            <delta_ts>2020-03-06 18:15:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306164909.patch</filename>
            <type>text/plain</type>
            <size>60325</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
NWYxYzkyODExYTdmMDRkNjVhY2I2ODQ1MzRlMTI2MDhmZWZhYjU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTEgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9u
KGRvY3VtZW50KTsKKworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIHNpemUpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9O
b3JtYWxpemVkUmFuZ2UoKS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisg
ICAgLy8gVG8gbWF0Y2ggdGhlIExlZ2FjeSBXZWJLaXQgaW1wbGVtZW50YXRpb24sIHNldCB0aGUg
dGV4dCBpbnNlcnRpb24gcG9pbnQgdG8gYmUgYWZ0ZXIgdGhlIHBsYWNlaG9sZGVyLgorICAgIGF1
dG8gbmV3U2VsZWN0aW9uID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbmV3U2VsZWN0
aW9uLT5zZXRTdGFydEFmdGVyKHBsYWNlaG9sZGVyKTsKKyAgICBuZXdTZWxlY3Rpb24tPnNldEVu
ZEFmdGVyKHBsYWNlaG9sZGVyKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UobmV3U2VsZWN0aW9uLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6Olllcyk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3Zv
aWQgRWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYg
cGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOwor
CisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAg
IC8vIFNhdmUgb2ZmIHN0YXRlIGFuZCBjb21wdXRlIHRoZSBpbmRleCBvZiB0aGUgcGxhY2Vob2xk
ZXIgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZQorICAgIC8vIHRleHQgaW5zZXJ0aW9uIHBvc2l0aW9u
IHRvIGp1c3QgYmVmb3JlIHRoZSBwbGFjZWhvbGRlciBlbGVtZW50IGFmdGVyIHJlbW92YWwuCisg
ICAgYXV0byBzYXZlZFJvb3RFZGl0YWJsZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHBsYWNlaG9sZGVy
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSk7CisgICAgYXV0byBzYXZlZFBhcmVudE5vZGUgPSBtYWtl
UmVmUHRyKHBsYWNlaG9sZGVyLnBhcmVudE5vZGUoKSk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFj
ZWhvbGRlckluZGV4ID0gcGxhY2Vob2xkZXIuY29tcHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8g
RklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNl
IHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRl
ciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRv
IG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5z
ZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJl
LgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRv
Y3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkgewor
ICAgICAgICBhdXRvIG5ld1NlbGVjdGlvbiA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHNhdmVk
UGFyZW50Tm9kZS5nZXQoKSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4LCBzYXZlZFBhcmVudE5vZGUu
Z2V0KCksIHNhdmVkUGxhY2Vob2xkZXJJbmRleCk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdTZWxlY3Rpb24ucHRyKCksIERPV05TVFJFQU0sIEZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICB9Cit9CisKIHN0YXRpYyBp
bmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBG
SVhNRTogV2lkdGggYWRqdXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2ZWVmMjYw
ODA1YjQ1M2UuLmUwMzc4YWViN2E5MmI1MmFhNWRkOWM3YjllOTUwYTFmZTA0ZTVkNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZl
bnQ7CitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25I
aWdobGlnaHQ7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2Vy
dEVkaXRhYmxlSW1hZ2UoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50PiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODg2MzUxMmFmYjVkZTExYjI4NmZkNDEyMWI1ZTEzNzg5
M2E5MzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCisK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQpOworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudD4gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisKK1RleHRQ
bGFjZWhvbGRlckVsZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorICAgIDogSFRNTERpdkVsZW1lbnQgeyBkaXZU
YWcsIGRvY3VtZW50IH0KK3sKKyAgICAvLyBGSVhNRTogTW92ZSB0byBVc2VyIEFnZW50IHN0eWxl
c2hlZXQuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0
NT4uCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1Zh
bHVlSW5saW5lQmxvY2ssIGZhbHNlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVCb3R0b20sIGZhbHNlKTsKKyAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVIaWRkZW4sIHRy
dWUpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgc2l6ZS53
aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCBzaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
K30KKworYXV0byBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdAoreworICAgIGlmIChpbnNlcnRp
b25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNoYWRvd0hv
c3QgPSBwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGZh
bHNlKTsKKyAgICB9CisgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50OjppbnNlcnRlZEludG9BbmNl
c3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cit9CisKK3ZvaWQgVGV4
dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1v
dmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKK3sKKyAgICBp
ZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CisgICAgICAgIGlmIChh
dXRvKiBzaGFkb3dIb3N0ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCk7IGlz
PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hv
d1BsYWNlaG9sZGVyKHRydWUpOworICAgIH0KKyAgICBIVE1MRGl2RWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmE4NDA5MzAxOThhOWE5OTM3
OGI0NDIzNjBiNmQzMGI0MjI3OTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jiwg
Y29uc3QgTGF5b3V0U2l6ZSYpOworCisgICAgLy8gRWxlbWVudAorICAgIGJvb2wgaXNUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8g
Tm9kZQorICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9y
KEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSBmaW5h
bDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5v
ZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpIGZpbmFsOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRQbGFj
ZWhvbGRlckVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdl
YkNvcmU6OkVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQ5MmRmMmZjN2M3ZjE5ZmMzZTli
OWIxNDM2MzRmMDdlYjI5OGQ1ZWIuLmYwOTIzOTZmNmRhMzg3ODc1ZjAxM2NhMWI2ZmEyODRmZDhh
NWRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NSw2ICsxODUs
NyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVu
dHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVHlwZUNvbnZl
cnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0MzYsNiAr
MTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVyKQogICAgICAgICBkb3duY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNh
blNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQqIEludGVybmFsczo6aW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICByZXR1cm4gZnJhbWUoKS0+
ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKEludFNpemUgeyB3aWR0aCwgaGVpZ2h0IH0p
LmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1l
bnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93
bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworfQorCiB2b2lkIEludGVy
bmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAgICAgZWxlbWVudC5zZWxlY3RDb2xvcihj
b2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgxNTI2ZTllMmQ3
YjgzMjk5NTBhZjkxYjEzYjNlMDQ3YjIxMjA5OTYuLjg5ODRlOWQwMzgzMWJlYWY2YjkyM2E5MDk0
NzI4YmVkYmZhZDcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjM4LDYg
KzIzOCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQm
KTsKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiwgYm9vbCk7CiAKKyAg
ICBFbGVtZW50KiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50Jik7CisKICAgICB2b2lkIHNl
bGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxlbWVudCYsIGNvbnN0IFN0cmluZyYg
Y29sb3JWYWx1ZSk7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+IGZvcm1Db250cm9s
U3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRG
b3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYmQwNzE2YzgzOGQ0M2Jl
NjQxZGE1Y2U1YmQ1NzExYzM4Mzg5MzEzOC4uNWJiZTA0ZDg5YzQ0OWFmZGY2YzgxYTA2NTJmODZi
OGJiNDdlY2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzA5LDYg
KzMwOSw5IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgdm9pZCBzZXRDYW5TaG93
UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGNhblNob3dQbGFjZWhvbGRlcik7
CiAKKyAgICBFbGVtZW50IGluc2VydFRleHRQbGFjZWhvbGRlcihsb25nIHdpZHRoLCBsb25nIGhl
aWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50KTsK
KwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5n
IHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0
aW9ucyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hl
c0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMs
IERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNlPERPTVN0cmlu
Zz4gZmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBmOTY3NjMxM2FjNjI1ZmU2MGRlOWZlMzBmMWEwNGM4ZjIxOTk0MjY1Li5mODgxOWE5NTEwODQ0
MzhjODUwNGVmNTcyZmVkNThlM2I4OGU1M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRDb250ZW50U2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuc2NhbGUoKTsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4cG9zZWRDb250ZW50UmVjdCgpOyB9CiAg
ICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudW5vYnNjdXJlZENvbnRl
bnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFmYWU5NzUyNjRiYmU0OTMyNTg4NTg0ZTI5
ZWY0YWVkNGFkNjllNGYuLmI1ZjBlNjU2ZTlmYjMxOTQ3YmZjYWJkMDdhNGUwZWIwYmM0YzA1MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjUsNiArNjUsNyBAQAogI2ltcG9ydCAiV0tTZWxlY3RNZW51
TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdl
YkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oIgorI2lt
cG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIldLVGV4dFNlbGVjdGlvblJlY3Qu
aCIKICNpbXBvcnQgIldLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1VJ
RGVsZWdhdGVQcml2YXRlLmgiCkBAIC0yOTEsNyArMjkyLDYgQEAgKyAoV0tUZXh0UG9zaXRpb24g
Kil0ZXh0UG9zaXRpb25XaXRoUmVjdDooQ0dSZWN0KXBvc2l0aW9uUmVjdDsKIAogQGVuZAogCi0K
IEBpbnRlcmZhY2UgV0tBdXRvY29ycmVjdGlvblJlY3RzIDogVUlXS0F1dG9jb3JyZWN0aW9uUmVj
dHMKICsgKFdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqKWF1dG9jb3JyZWN0aW9uUmVjdHNXaXRoRmly
c3RDR1JlY3Q6KENHUmVjdClmaXJzdFJlY3QgbGFzdENHUmVjdDooQ0dSZWN0KWxhc3RSZWN0Owog
QGVuZApAQCAtNzQzNiw2ICs3NDM2LDI3IEBAIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50
OihDR1BvaW50KXBvaW50IHdpdGhDb250ZXh0UmVxdWVzdDooVUlXS0RvY3VtZW50UmVxCiAKICNl
bmRpZgogCistICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOihDR1NpemUpc2l6
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlUZXh0UGxhY2Vob2xkZXIgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6
OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+
KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYgcGxhY2Vob2xkZXIp
IHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlm
ICghc3Ryb25nU2VsZiB8fCAhW3N0cm9uZ1NlbGYgd2ViVmlld10gfHwgIXBsYWNlaG9sZGVyKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVy
VG9Vc2UgeyAqcGxhY2Vob2xkZXIgfTsKKyAgICAgICAgcGxhY2Vob2xkZXJUb1VzZS5ib3VuZGlu
Z1JlY3QgPSBbc3Ryb25nU2VsZiBjb252ZXJ0UmVjdDpwbGFjZWhvbGRlclRvVXNlLmJvdW5kaW5n
UmVjdCBmcm9tVmlldzpbc3Ryb25nU2VsZiB3ZWJWaWV3XV07CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRDb250ZXh0
OnBsYWNlaG9sZGVyVG9Vc2VdIGF1dG9yZWxlYXNlXSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
cmVtb3ZlVGV4dFBsYWNlaG9sZGVyOihVSVRleHRQbGFjZWhvbGRlciAqKXBsYWNlaG9sZGVyIHdp
bGxJbnNlcnRUZXh0OihCT09MKXdpbGxJbnNlcnRUZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
c3VwcG9ydCBmb3Igd2lsbEluc2VydFRleHQuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODc0Nz4uCisgICAgaWYgKGF1dG8qIHdrVGV4dFBsYWNlaG9sZGVy
ID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tUZXh0UGxhY2Vob2xkZXI+KHBsYWNlaG9sZGVyKSkKKyAg
ICAgICAgX3BhZ2UtPnJlbW92ZVRleHRQbGFjZWhvbGRlcih3a1RleHRQbGFjZWhvbGRlci5lbGVt
ZW50Q29udGV4dCwgbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHN0YXRp
YyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0lu
c2VydFdoZW5Ecm9wcGluZ0l0ZW1zKE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92
aWRlcnMpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
OWIzMTMzYWIyY2ZjNGMwYTliZjM0OWYxNGMyY2I5ZTRkYTIwODJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmgKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1w
b3J0IDxVSUtpdC9VSUtpdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRWxlbWVu
dENvbnRleHQ7Cit9CisKK0BpbnRlcmZhY2UgV0tUZXh0UGxhY2Vob2xkZXIgOiBVSVRleHRQbGFj
ZWhvbGRlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50Q29udGV4dDooY29uc3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQ7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0
OworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFk
NThkN2JlNTYwMzU1NzZlOGIwZmE5NGQ5ZTc4NDk5OTU1NzgxYjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tU
ZXh0UGxhY2Vob2xkZXIuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQg
IldLVGV4dFNlbGVjdGlvblJlY3QuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudENvbnRleHQu
aD4KKworQGltcGxlbWVudGF0aW9uIFdLVGV4dFBsYWNlaG9sZGVyIHsKKyAgICBXZWJDb3JlOjpF
bGVtZW50Q29udGV4dCBfZWxlbWVudENvbnRleHQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4
dAoreworICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgX2VsZW1lbnRDb250ZXh0ID0gY29udGV4dDsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWVsZW1lbnRDb250ZXh0Cit7CisgICAg
cmV0dXJuIF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoTlNBcnJheTxVSVRleHRTZWxlY3Rpb25S
ZWN0ICo+ICopcmVjdHMKK3sKKyAgICByZXR1cm4gQFsgW1tbV0tUZXh0U2VsZWN0aW9uUmVjdCBh
bGxvY10gaW5pdFdpdGhDR1JlY3Q6X2VsZW1lbnRDb250ZXh0LmJvdW5kaW5nUmVjdF0gYXV0b3Jl
bGVhc2VdIF07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApp
bmRleCA4ZDU4ZmUxZmE2YmY0NGMwN2IyODA3ZWVmYjc1YTMwMzZjMjlhZWQwLi5lNjU2NjNlMDA5
MDYyODU3MGRkZGQ1Y2E0MjZiZTlmMjVmMDBmMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKQEAgLTIzLDggKzIzLDYgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKLQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0z
NSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2Vs
ZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlv
blJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rp
b25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJl
Y3QubW0KaW5kZXggOTkxMDMzNWZiNWI1NTEwOThjNDM5YTg1ZTRjMTc5OTY4OTYyZTRmMy4uNTgx
YjdiM2VjM2YzNjBmN2I2YjYzNjA5Y2FlNzIxODAwZDRiZWMwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KQEAgLTM0LDYgKzM0
LDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRTZWxlY3Rpb25SZWN0IHsKICAgICBXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0IF9zZWxlY3Rpb25SZWN0OwogfQogCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDR1JlY3Q6KENHUmVjdClyZWN0Cit7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCBz
ZWxlY3Rpb25SZWN0OworICAgIHNlbGVjdGlvblJlY3Quc2V0UmVjdChXZWJDb3JlOjplbmNsb3Np
bmdJbnRSZWN0KHJlY3QpKTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhTZWxlY3Rpb25SZWN0
OldURk1vdmUoc2VsZWN0aW9uUmVjdCldOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhT
ZWxlY3Rpb25SZWN0Oihjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0
CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4YjRlMDQ5M2M1YTZhOTc2YzM3
MWRhM2E4ODE1ZDQ0YzI5MmJmMTUzLi4zYzMyOWM5MWFlOGRlNTkyNDU0NTUxYjA4ZTNhZmUxMGY0
ZDRlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTQ1Nyw2ICs0NTcsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxl
Y3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1QKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3RlZFRleHQob2xk
VGV4dCwgbmV3VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omlu
c2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcHJvY2Vzcy0+
Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2Vy
dFRleHRQbGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
d2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRl
cihjb25zdCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xkZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRv
Y29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkRhdGEp
PiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNhNjgz
MjJjOTM1MTY3YWI2YTliZDI3MGM2ODc3ZWFhNWI3MzU5Ni4uMjg3YzA1MGQ2NTNlMTRiN2M1Yzhj
YzllNjNhZTA1OTg4ZTdmNTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYgKzE3MzQsOCBAQAogCQlDRTFBMEJEMjFBNDhF
NkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBB
c3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQg
LyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi87IH07CiAJCUNFMUEwQkQ3
MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0
SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBs
YWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLzsgfTsK
KwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNUUyNDBFRTU3
MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovOyB9OwogCQlDRTQ1OTQ1QzI0MEY4
ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdL
VGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8q
IEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMu
aCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3ND
aGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdl
ZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYgKzUwNTMsOCBAQAogCQlDRTFBMEJDQzFBNDhF
NkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNl
aG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFBsYWNlaG9sZGVyLmg7IHBhdGggPSBpb3Mv
V0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIx
NUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xk
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVBMjQwRjg1QjkwMDc4
MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFNlbGVj
dGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxl
Y3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5t
bTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBACiAJCQkJMjZGMTBCRTcxOTE4N0UyRTAwMUQw
RTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCiAJCQkJMzE2QjhC
NjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcuaCAqLywKIAkJCQkzMTZC
OEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5tbSAqLywKKwkJCQlD
RTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLywKKwkJCQlD
RTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8sCiAJCQkJ
Q0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLywKIAkJ
CQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSAqLywK
IAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1OCw3IEBACiAJCQkJMkRENjdBMzUxQkQ4NjEw
NjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRE
NUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTIxMjE1RjI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNDU5
NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyogV0tUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBX
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2NDgs
NiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3QUQxQjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93
c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxREIwMTk0NDIxMUNGMDA1MDA5RkIz
RTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OEZGMzMyMjQxOTE5
QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MjRlZmIzZGFkZDk4ZTM3ODIwZmQ4ODMwZTI0OGQ3Y2NjNGFkOTIwNS4uNzA3ZmM2YmRhNDIzOTg1
OGM2Y2Y0NmM0MGQ4ZDcxMGUyMDhiYTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQyLDYgKzY0Miw5IEBAIHB1YmxpYzoKICAgICBib29sIHNo
b3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uOyB9CiAgICAgdm9p
ZCBzZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAK
KyAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dD4mKT4mJik7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAg
V2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJhZTFjZTJiY2JhNWI3
NjllNzI3NTIzZGZmZjY5OTE5Y2ZjZjg3M2UuLmI0YWVhNzU1NTRkYTc1NGY4MTA0OTFhMzRlNDIw
YTg2MDhiMmQ0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTE5LDYgKzExOSw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0
KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlc3QpIC0+
IChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0IHJlc3BvbnNlKSBBc3luYwog
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuZCkKICAgICBTZXRTaG91bGRSZXZlYWxDdXJy
ZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBzaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0
aW9uQWZ0ZXJJbnNlcnRpb24pCisgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6Oklu
dFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhv
bGRlcikgQXN5bmMKKyAgICBSZW1vdmVUZXh0UGxhY2Vob2xkZXIoc3RydWN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMjM0ZmY2MjFi
YzQyYjQ1NGU0MDA2ZDhlZmM1NThjNmJjYzQ5ODJiYy4uMTEwOTMwOWI5ZTA4NWExNmNlNGZkYWNm
NWQ1YzliMDU1ZGMyNTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2ICsxMjcsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50
Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNU
ZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQg
V2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhv
bGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNhbiBkbyBhbnl0aGluZywgaW5jbHVkaW5n
IGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvIHBsYWNlaG9s
ZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQbGFjZWhvbGRlcihzaXplKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFjZWhv
bGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFj
ZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChwbGFjZWhvbGRlcikpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVu
dCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50
KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oKmVsZW1lbnQpKTsKKyAgICB9
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
UmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMGFkYzQ1MDlkMTY3MzU5YmQzZjRjZDFlNzFjNzZhNjQ3
ZWQxYWIuLjFjOTUwYjRlOWQxNThkMGJkYWQxMmMxZGYwMDE0YTIyM2ZkYzhiMTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0wMy0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0
ZXh0IHBsYWNlaG9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDg2NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzcxMDczPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBl
bnN1cmUgdGhhdCBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgcGxhY2Vob2xkZXIgd29yay4KKwor
ICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRl
eHQtZmllbGQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJs
ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
ZW1wdHktdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJh
bWUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8t
dGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzczogQWRkZWQuCisgICAgICAgIChAZm9udC1mYWNl
KToKKyAgICAgICAgKC50ZXN0KToKKwogMjAxOS0wNy0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9OIEZBSUxVUkU6ICFpc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSBpbiBXZWJLaXQ6OkVkaXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmMzA0MGJhNjk2NmUyMjU3NzExY2VmMWQzYmRkZGNhNzcx
ZmM5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VG
bGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRoYXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQg
ZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9va3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2Vy
dGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0i
dGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmY1NGM0YjNkNGYwN2Q3YjU1MmQzODRiMmRhNmMwNjRlN2Y4MTY2MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
YW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
aW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
dGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBs
YWNlaG9sZGVyIHRoYXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQg
dmlzdWFsbHkgbG9va3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGgu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIg
dmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVs
c2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9m
RnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rp
b25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgbGV0IHBsYWNl
aG9sZGVyRWxlbWVudCA9IG51bGw7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAg
ICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBo
cyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50
KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAg
ICAgICBwbGFjZWhvbGRlckVsZW1lbnQgPSBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHBsYWNlaG9sZGVyRWxlbWVudCk7CisgICAgfQorICAgIAorICAgIC8vIERlZm9jdXMgZmllbGQg
dG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdh
aXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5yZW1vdmVUZXh0UGxhY2Vob2xk
ZXIocGxhY2Vob2xkZXJFbGVtZW50KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJs
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNjUwMWIyNmM4Y2Q3YzhmMmMwMGQzZGQxMDBk
MzhhODI4NWNmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVz
ZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNv
bnRlbnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBp
biBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3Qi
IGNsYXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6
IDFweCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyAmbmJzcDsmbmJz
cDtmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRh
YmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
Y29udGVudC1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4OTQ5ZWQ4NDE4MWRjMWQzYTcyNTcy
ZDc1NWVhODIyMTMwYWI3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCkBAIC0wLDAg
KzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRl
bnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyBmcm9tIEN1cGVydGlu
byE8L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxl
dCB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1l
bnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKHRlc3RFbGVtZW50KTsKKyAgICBlbHNlCisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxl
bWVudC5mb2N1cygpLCB0ZXN0RWxlbWVudCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25P
ZkZyb20gPSB0ZXN0RWxlbWVudC50ZXh0Q29udGVudC5pbmRleE9mKCJmcm9tIik7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGVzdEVsZW1lbnQuZmlyc3RDaGls
ZCwgcG9zaXRpb25PZkZyb20sIHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9t
KTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2Ug
YXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3
aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXN0RWxlbWVudCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJu
YWxzLmluc2VydFRleHRQbGFjZWhvbGRlcigyICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8p
OworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxl
bWVudC5ibHVyKCksIHRlc3RFbGVtZW50LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0
eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM0ZmQzZDA3OWFhOTkzOWIw
YzljYWIzOGE2Yzg0MDhiM2NlNThmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hlbiBhIHRl
eHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+
Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IiAgICAg
ICI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MDUxMDQxZGQzODZlZmYxNjZlNDgyZTMzNGUyNzQ1YzgzYjYyMmU4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
XSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5p
dGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVz
dC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIHBsYWNlaG9s
ZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEg
dGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVy
IG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0
eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRkFJTCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVs
c2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGlucHV0LnNldFNlbGVj
dGlvblJhbmdlKDAsIDApOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
Ly8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBo
YXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAg
ICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhl
aWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJz
b3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+
IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmMzMWYzM2UwYzljMTBhYmExYjhiN2M1M2Q3MjY3YjE1
ZDdhODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
YSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRl
c3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUu
PC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJI
ZWxsbyAgICAgIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVs
ZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVlMTRiMjczMTg5MWNkYTIxOTQ2YTA3MDczMmYwNTQ2MDFhMzk0N2EKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
dGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJj
ZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0
IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJh
bWUuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1w
UmVuZGVyVHJlZS48L3A+Cis8aWZyYW1lIHNyY2RvYz0nPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhl
YWQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPjwvaGVh
ZD48Ym9keT48aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9
IkhlbGxvICAgICAgZnJvbSBDdXBlcnRpbm8hIj48L2JvZHk+PC9odG1sPicgd2lkdGg9IjYwMCIg
aGVpZ2h0PSIyMDAiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4t
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODFlNTg2N2U4MjZiNGMy
ZjU5NjZlNTljNDgxNjkxZWI0YjQ4OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRl
ciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZCBpbnNpZGUgYW4gaWZyYW1lLiBUaGlzIHRl
c3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUu
PC9wPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlm
cmFtZS5odG1sIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjIwMCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGE4MzU1M2JmMTky
NTExMmYwMGY4N2FmMDYzZThiODVhN2Q5NThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApAQCAt
MCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlz
IHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZp
ZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVt
cFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRl
eHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBV
SUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAg
ICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVu
dCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRp
b25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2Vs
ZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBB
aGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAg
bGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwg
bnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhv
bGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERl
Zm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxG
dW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIp
OworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2MmFmZWNiYzEzOWMyMjI4ZDE5NjhjOGRlY2FlZjRkZGQzMTQ4Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVz
b3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGli
bGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0idGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFz
cz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8cHJl
IGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKwor
ICAgIC8vIEZJWE1FOiBVc2UgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0
U2Vzc2lvbihpbnB1dCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODc0OT4uCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2
ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3Np
dGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRT
ZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhl
IEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAg
ICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0
LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8g
RGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVy
Iik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rl
c3QuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0
LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43OTg5MWRiZTI3MGVkMjVlYTQ2OWE4OWU4YjliM2JlMjRmZmUzNmI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jl
c291cmNlcy90ZXN0LmNzcwpAQCAtMCwwICsxLDEyIEBACitAZm9udC1mYWNlIHsKKyAgICBmb250
LWZhbWlseTogQWhlbTsKKyAgICBzcmM6IHVybCgiLi4vLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRm
Iik7Cit9CisKKy50ZXN0IHsKKyAgICBmb250OiAyNXB4LzEgQWhlbTsKKyAgICAtd2Via2l0LXRl
eHQtc2l6ZS1hZGp1c3Q6IDEwMCUlOworICAgIC8qIFRvIG1ha2UgZGVidWdnaW5nIGVhc2llciwg
bWFrZSB0aGUgY2FyZXQgc3RhbmQgb3V0LiAqLworICAgIGNhcmV0LWNvbG9yOiBibHVlOworICAg
IGNvbG9yOiB5ZWxsb3c7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392825</attachid>
            <date>2020-03-06 18:15:45 -0800</date>
            <delta_ts>2020-03-06 18:24:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306181544.patch</filename>
            <type>text/plain</type>
            <size>60292</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
YjM3OTBlMTcwZTVjZDYwNDNhM2NkMWM0NzNkODA1YjRkNzE1YzBlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTMgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRl
KGZhbHNlKTsKKworICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHBsYWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBzaXplKTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVm
KCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9y
ZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5w
dHIoKSkgfTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dl
cmVkKSk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7
CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3Vt
ZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0
YXRlIGFuZCBjb21wdXRlIHRoZSBpbmRleCBvZiB0aGUgcGxhY2Vob2xkZXIgc28gdGhhdCB3ZSBj
YW4gc2V0IHRoZQorICAgIC8vIHRleHQgaW5zZXJ0aW9uIHBvc2l0aW9uIHRvIGp1c3QgYmVmb3Jl
IHRoZSBwbGFjZWhvbGRlciBlbGVtZW50IGFmdGVyIHJlbW92YWwuCisgICAgYXV0byBzYXZlZFJv
b3RFZGl0YWJsZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHBsYWNlaG9sZGVyLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSk7CisgICAgYXV0byBzYXZlZFBhcmVudE5vZGUgPSBtYWtlUmVmUHRyKHBsYWNlaG9s
ZGVyLnBhcmVudE5vZGUoKSk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFjZWhvbGRlckluZGV4ID0g
cGxhY2Vob2xkZXIuY29tcHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8gRklYTUU6IFNhdmUgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFjZWhvbGRl
ciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGluc2VydGlv
bi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdh
Y3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRv
IGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIC8vIEZJWE1F
OiBVcGRhdGUgc2VsZWN0aW9uIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIFJhbmdlLiBTZWUgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwODc1MT4uCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCku
aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gc2F2
ZWRSb290RWRpdGFibGVFbGVtZW50KSB7CisgICAgICAgIGF1dG8gbmV3U2VsZWN0aW9uID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCwgc2F2ZWRQYXJlbnROb2RlLmdldCgpLCBzYXZlZFBsYWNlaG9s
ZGVySW5kZXgsIHNhdmVkUGFyZW50Tm9kZS5nZXQoKSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4KTsK
KyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlv
bi5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMpOworICAgIH0KK30KKwogc3RhdGljIGlubGluZSB2b2lkIGNvbGxhcHNlQ2FyZXRXaWR0aChJ
bnRSZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1FOiBXaWR0aCBhZGp1c3RtZW50IGRvZXNuJ3Qg
d29yayBmb3Igcm90YXRlZCB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZjg2Nzdi
MzE4ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZS4uZTAzNzhhZWI3YTkyYjUyYWE1ZGQ5
YzdiOWU5NTBhMWZlMDRlNWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Miw2ICs4
Miw3IEBAIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hl
Y2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ7CiAKIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBGb250QXR0cmlidXRl
czsKQEAgLTU0OSw2ICs1NTAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwogCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFjZWhv
bGRlcihjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVUZXh0
UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERv
Y3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MDMwMjUy
MzBlY2U0Y2RmMzcxYzUwMDZmNjgzNzUxYWZlZmI5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CisKK1JlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRQbGFjZWhvbGRlckVsZW1lbnQgeyBkb2N1
bWVudCwgc2l6ZSB9KTsKK30KKworVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUpCisg
ICAgOiBIVE1MRGl2RWxlbWVudCB7IGRpdlRhZywgZG9jdW1lbnQgfQoreworICAgIC8vIEZJWE1F
OiBNb3ZlIHRvIFVzZXIgQWdlbnQgc3R5bGVzaGVldC4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8yMDg3NDU+LgorICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5
LCBDU1NWYWx1ZUlubGluZUJsb2NrLCBmYWxzZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIENTU1ZhbHVlQm90dG9tLCBmYWxzZSk7CisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlSGlk
ZGVuLCB0cnVlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Cit9CisKK2F1dG8gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRP
Zkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQKK3sKKyAgICBpZiAo
aW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkKSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFk
b3dIb3N0ID0gcGFyZW50T2ZJbnNlcnRlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRl
cihmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lk
IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7Cisg
ICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHNoYWRvd0hvc3QgPSBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLnNoYWRvd0hvc3QoKTsgaXM8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KHNoYWRvd0hvc3QpKQorICAgICAgICAgICAgZG93bmNh
c3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxh
Y2Vob2xkZXIodHJ1ZSk7CisgICAgfQorICAgIEhUTUxEaXZFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZDY4ZTgxNjY1ZTZkOGVlZWZmYzFl
NmNjNGVhZTZjMTM4OTU0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmLCBjb25z
dCBMYXlvdXRTaXplJik7CisKKyAgICBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBh
cmVudE9mSW5zZXJ0ZWRUcmVlKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3Io
UmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpIGZpbmFs
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RWxlbWVudD4obm9k
ZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDQ5MmRmMmZjN2M3ZjE5ZmMzZTliOWIxNDM2MzRmMDdlYjI5OGQ1ZWIuLmYwOTIzOTZmNmRh
Mzg3ODc1ZjAxM2NhMWI2ZmEyODRmZDhhNWRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE4NSw2ICsxODUsNyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKQEAgLTE0MzYsNiArMTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2Fu
U2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVy
KQogICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCku
c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNhblNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQq
IEludGVybmFsczo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICByZXR1cm4gZnJhbWUoKS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKElu
dFNpemUgeyB3aWR0aCwgaGVpZ2h0IH0pLmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVt
b3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5y
ZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxl
bWVudCkpOworfQorCiB2b2lkIEludGVybmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAg
ICAgZWxlbWVudC5zZWxlY3RDb2xvcihjb2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDgxNTI2ZTllMmQ3YjgzMjk5NTBhZjkxYjEzYjNlMDQ3YjIxMjA5OTYuLjg5
ODRlOWQwMzgzMWJlYWY2YjkyM2E5MDk0NzI4YmVkYmZhZDcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMjM4LDYgKzIzOCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmlz
aWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRl
cihFbGVtZW50JiwgYm9vbCk7CiAKKyAgICBFbGVtZW50KiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihF
bGVtZW50Jik7CisKICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0
RWxlbWVudCYsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSk7CiAgICAgRXhjZXB0aW9uT3I8VmVj
dG9yPFN0cmluZz4+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJ
dGVtKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYmQwNzE2YzgzOGQ0M2JlNjQxZGE1Y2U1YmQ1NzExYzM4Mzg5MzEzOC4uNWJiZTA0
ZDg5YzQ0OWFmZGY2YzgxYTA2NTJmODZiOGJiNDdlY2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtMzA5LDYgKzMwOSw5IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kg
ewogCiAgICAgdm9pZCBzZXRDYW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50LCBib29s
ZWFuIGNhblNob3dQbGFjZWhvbGRlcik7CiAKKyAgICBFbGVtZW50IGluc2VydFRleHRQbGFjZWhv
bGRlcihsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoRWxlbWVudCBlbGVtZW50KTsKKwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/
IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2Vx
dWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNl
PERPTVN0cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7CiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5n
IHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmOTY3NjMxM2FjNjI1ZmU2MGRlOWZlMzBmMWEwNGM4
ZjIxOTk0MjY1Li5mODgxOWE5NTEwODQ0MzhjODUwNGVmNTcyZmVkNThlM2I4OGU1M2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFs
Q3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAg
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRD
b250ZW50U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUuc2NhbGUoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRl
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4
cG9zZWRDb250ZW50UmVjdCgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9i
c2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUudW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFm
YWU5NzUyNjRiYmU0OTMyNTg4NTg0ZTI5ZWY0YWVkNGFkNjllNGYuLmI1ZjBlNjU2ZTlmYjMxOTQ3
YmZjYWJkMDdhNGUwZWIwYmM0YzA1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjUsNiArNjUsNyBA
QAogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
S1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKICNpbXBv
cnQgIldLVGV4dFNlbGVjdGlvblJlY3QuaCIKICNpbXBvcnQgIldLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC0yOTEsNyArMjky
LDYgQEAgKyAoV0tUZXh0UG9zaXRpb24gKil0ZXh0UG9zaXRpb25XaXRoUmVjdDooQ0dSZWN0KXBv
c2l0aW9uUmVjdDsKIAogQGVuZAogCi0KIEBpbnRlcmZhY2UgV0tBdXRvY29ycmVjdGlvblJlY3Rz
IDogVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMKICsgKFdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqKWF1
dG9jb3JyZWN0aW9uUmVjdHNXaXRoRmlyc3RDR1JlY3Q6KENHUmVjdClmaXJzdFJlY3QgbGFzdENH
UmVjdDooQ0dSZWN0KWxhc3RSZWN0OwogQGVuZApAQCAtNzQzNiw2ICs3NDM2LDI3IEBAIC0gKHZv
aWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhDb250ZXh0UmVxdWVz
dDooVUlXS0RvY3VtZW50UmVxCiAKICNlbmRpZgogCistICh2b2lkKWluc2VydFRleHRQbGFjZWhv
bGRlcldpdGhTaXplOihDR1NpemUpc2l6ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlU
ZXh0UGxhY2Vob2xkZXIgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdl
YWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYgcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vh
a1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCAhW3N0cm9uZ1NlbGYgd2Vi
Vmlld10gfHwgIXBsYWNlaG9sZGVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
aWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyVG9Vc2UgeyAqcGxhY2Vob2xkZXIgfTsKKyAgICAgICAg
cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBjb252ZXJ0UmVjdDpw
bGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVjdCBmcm9tVmlldzpbc3Ryb25nU2VsZiB3ZWJWaWV3
XV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9j
XSBpbml0V2l0aEVsZW1lbnRDb250ZXh0OnBsYWNlaG9sZGVyVG9Vc2VdIGF1dG9yZWxlYXNlXSk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlVGV4dFBsYWNlaG9sZGVyOihVSVRleHRQbGFj
ZWhvbGRlciAqKXBsYWNlaG9sZGVyIHdpbGxJbnNlcnRUZXh0OihCT09MKXdpbGxJbnNlcnRUZXh0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igd2lsbEluc2VydFRleHQuIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0Nz4uCisgICAgaWYg
KGF1dG8qIHdrVGV4dFBsYWNlaG9sZGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tUZXh0UGxhY2Vo
b2xkZXI+KHBsYWNlaG9sZGVyKSkKKyAgICAgICAgX3BhZ2UtPnJlbW92ZVRleHRQbGFjZWhvbGRl
cih3a1RleHRQbGFjZWhvbGRlci5lbGVtZW50Q29udGV4dCwgbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNP
ZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0ZW1zKE5TQXJyYXk8TlNJ
dGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6Oklu
dFNpemU+IHNpemVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
VGV4dFBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxh
Y2Vob2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWIzMTMzYWIyY2ZjNGMwYTliZjM0OWYxNGMyY2I5ZTRk
YTIwODJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
VGV4dFBsYWNlaG9sZGVyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7Cit9CisKK0BpbnRlcmZhY2UgV0tUZXh0
UGxhY2Vob2xkZXIgOiBVSVRleHRQbGFjZWhvbGRlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhFbGVtZW50Q29udGV4dDooY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQ7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgY29uc3QgV2ViQ29yZTo6RWxlbWVu
dENvbnRleHQmIGVsZW1lbnRDb250ZXh0OworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNl
aG9sZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNThkN2JlNTYwMzU1NzZlOGIwZmE5NGQ5ZTc4NDk5OTU1
NzgxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIubW0KQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLVGV4dFNlbGVjdGlvblJlY3QuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4KKworQGltcGxlbWVudGF0aW9uIFdLVGV4dFBsYWNl
aG9sZGVyIHsKKyAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBfZWxlbWVudENvbnRleHQ7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYpY29udGV4dAoreworICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2VsZW1lbnRDb250ZXh0ID0gY29udGV4dDsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQm
KWVsZW1lbnRDb250ZXh0Cit7CisgICAgcmV0dXJuIF9lbGVtZW50Q29udGV4dDsKK30KKworLSAo
TlNBcnJheTxVSVRleHRTZWxlY3Rpb25SZWN0ICo+ICopcmVjdHMKK3sKKyAgICByZXR1cm4gQFsg
W1tbV0tUZXh0U2VsZWN0aW9uUmVjdCBhbGxvY10gaW5pdFdpdGhDR1JlY3Q6X2VsZW1lbnRDb250
ZXh0LmJvdW5kaW5nUmVjdF0gYXV0b3JlbGVhc2VdIF07Cit9CisKK0BlbmQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLVGV4dFNlbGVjdGlvblJlY3QuaAppbmRleCA4ZDU4ZmUxZmE2YmY0NGMwN2IyODA3ZWVmYjc1
YTMwMzZjMjlhZWQwLi5lNjU2NjNlMDA5MDYyODU3MGRkZGQ1Y2E0MjZiZTlmMjVmMDBmMmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7
CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggOTkxMDMzNWZiNWI1NTEwOThjNDM5
YTg1ZTRjMTc5OTY4OTYyZTRmMy4uNTgxYjdiM2VjM2YzNjBmN2I2YjYzNjA5Y2FlNzIxODAwZDRi
ZWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KQEAgLTM0LDYgKzM0LDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRTZWxl
Y3Rpb25SZWN0IHsKICAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IF9zZWxlY3Rpb25SZWN0Owog
fQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0OworICAgIHNlbGVjdGlvblJlY3Qu
c2V0UmVjdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKKyAgICByZXR1cm4gW3Nl
bGYgaW5pdFdpdGhTZWxlY3Rpb25SZWN0OldURk1vdmUoc2VsZWN0aW9uUmVjdCldOworfQorCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0Oihjb25zdCBXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCA4YjRlMDQ5M2M1YTZhOTc2YzM3MWRhM2E4ODE1ZDQ0YzI5MmJmMTUzLi4zYzMyOWM5MWFl
OGRlNTkyNDU0NTUxYjA4ZTNhZmUxMGY0ZDRlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ1Nyw2ICs0NTcsMjQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBj
b25zdCBTdHJpbmcmIG5ld1QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcGxhY2VTZWxlY3RlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPEVsZW1lbnRDb250
ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRQbGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xk
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xk
ZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdl
SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNhNjgzMjJjOTM1MTY3YWI2YTliZDI3MGM2ODc3ZWFhNWI3MzU5
Ni4uMjg3YzA1MGQ2NTNlMTRiN2M1YzhjYzllNjNhZTA1OTg4ZTdmNTZhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYgKzE3
MzQsOCBAQAogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEw
QkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlD
RTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVEND
U1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQx
MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIuaCAqLzsgfTsKKwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdL
VGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1t
ICovOyB9OwogCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0
NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJQ0U1
NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBEMjg3
OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJF
NjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAv
KiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYgKzUw
NTMsOCBAQAogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0
IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBFRTU3
MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFBs
YWNlaG9sZGVyLmg7IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNl
aG9sZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07IHBh
dGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRTZWxl
Y3Rpb25SZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQwRjg1
QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3
OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9wdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBACiAJ
CQkJMjZGMTBCRTcxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29n
bml6ZXIubW0gKi8sCiAJCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJl
dmlld1ZpZXcuaCAqLywKIAkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1Q
cmV2aWV3Vmlldy5tbSAqLywKKwkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIuaCAqLywKKwkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIubW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4
dFNlbGVjdGlvblJlY3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyog
V0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1OCw3
IEBACiAJCQkJMkRENjdBMzUxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4QkJF
M0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxl
Y3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkg
LyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3
NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTI2NDgsNiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3QUQx
QjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxREIwMTk0NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4
dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjRlZmIzZGFkZDk4ZTM3ODIwZmQ4ODMwZTI0OGQ3Y2Nj
NGFkOTIwNS4uNzA3ZmM2YmRhNDIzOTg1OGM2Y2Y0NmM0MGQ4ZDcxMGUyMDhiYTYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQyLDYgKzY0Miw5
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlcklu
c2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFm
dGVySW5zZXJ0aW9uOyB9CiAgICAgdm9pZCBzZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCByZW1vdmVUZXh0
UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBj
b25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0
OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDJhZTFjZTJiY2JhNWI3NjllNzI3NTIzZGZmZjY5OTE5Y2ZjZjg3M2UuLmI0YWVh
NzU1NTRkYTc1NGY4MTA0OTFhMzRlNDIwYTg2MDhiMmQ0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTE5LDYg
KzExOSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVl
c3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdD
b250ZXh0IHJlc3BvbnNlKSBBc3luYwogR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuZCkK
ICAgICBTZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBz
aG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24pCisgICAgSW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMKKyAgICBSZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBB
c3luYwogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJv
bGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMjM0ZmY2MjFiYzQyYjQ1NGU0MDA2ZDhlZmM1NThjNmJjYzQ5ODJiYy4u
MTEwOTMwOWI5ZTA4NWExNmNlNGZkYWNmNWQ1YzliMDU1ZGMyNTI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2
ICsxMjcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Vc2VyQWdlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBj
b25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNv
bnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Ly8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNh
biBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFt
ZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQ
bGFjZWhvbGRlcihzaXplKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNv
bnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lk
IFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9y
Q29udGV4dChwbGFjZWhvbGRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBm
cmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxl
bWVudD4oKmVsZW1lbnQpKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwog
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRl
bHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMGFkYzQ1MDlk
MTY3MzU5YmQzZjRjZDFlNzFjNzZhNjQ3ZWQxYWIuLjFjOTUwYjRlOWQxNThkMGJkYWQxMmMxZGYw
MDE0YTIyM2ZkYzhiMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMy0wNiAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlu
c2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU5MzcxMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0cyB0byBlbnN1cmUgdGhhdCBpbnNlcnRpbmcgYW5kIHJlbW92aW5n
IGEgcGxhY2Vob2xkZXIgd29yay4KKworICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1w
dHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRl
ci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzczogQWRk
ZWQuCisgICAgICAgIChAZm9udC1mYWNlKToKKyAgICAgICAgKC50ZXN0KToKKwogMjAxOS0wNy0y
NiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQVNT
RVJUSU9OIEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpbiBXZWJLaXQ6OkVkaXRv
clN0YXRlOjpwb3N0TGF5b3V0RGF0YSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1v
dmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmMzA0MGJhNjk2
NmUyMjU3NzExY2VmMWQzYmRkZGNhNzcxZmM5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmll
bGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0x
LjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRoYXQg
aXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9va3Mg
YXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBjYW4g
b25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8
aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZy
b20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1v
dmUtaW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY1NGM0YjNkNGYwN2Q3YjU1MmQz
ODRiMmRhNmMwNjRlN2Y4MTY2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApA
QCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
aGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRoYXQgaXMgaW5zZXJ0ZWQgYW5kIHJl
bW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9va3MgYXMgaWYgaXQgbmV2ZXIgd2Fz
IGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2Vi
S2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBj
bGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1
dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1
bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMi
KTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20i
KTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25P
ZkZyb20pOworCisgICAgbGV0IHBsYWNlaG9sZGVyRWxlbWVudCA9IG51bGw7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFo
ZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBs
ZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBu
dWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBwbGFjZWhvbGRlckVsZW1lbnQgPSBpbnRlcm5h
bHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBsYWNlaG9sZGVyRWxlbWVudCk7CisgICAgfQorICAg
IAorICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJ
SGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlu
cHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVy
bmFscy5yZW1vdmVUZXh0UGxhY2Vob2xkZXIocGxhY2Vob2xkZXJFbGVtZW50KTsKKworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRh
YmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNjUw
MWIyNmM4Y2Q3YzhmMmMwMGQzZGQxMDBkMzhhODI4NWNmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0
YWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxl
PTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMg
aW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhp
cyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJU
cmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4
OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxl
PSJ0cnVlIj5IZWxsbyAmbmJzcDsmbmJzcDtmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4OTQ5ZWQ4NDE4MWRjMWQzYTcyNTcyZDc1NWVhODIyMTMwYWI3ZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVu
dC1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEu
MCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5z
ZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0
ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVl
LjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBo
ZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0
cnVlIj5IZWxsbyBmcm9tIEN1cGVydGlubyE8L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGxldCB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2Fp
dCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKHRlc3RFbGVt
ZW50KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdh
aXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5mb2N1cygpLCB0ZXN0RWxlbWVudCwgImZvY3Vz
Iik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSB0ZXN0RWxlbWVudC50ZXh0Q29udGVudC5p
bmRleE9mKCJmcm9tIik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRl
bnQodGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25PZkZyb20sIHRlc3RFbGVtZW50LmZp
cnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFs
bCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBw
YXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RWxlbWVudCwgbnVsbCkuZm9udFNp
emUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcigyICogZ2x5
cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQg
dG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdh
aXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVudC5ibHVyKCksIHRlc3RFbGVtZW50LCAiYmx1ciIp
OworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVt
cHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWM0ZmQzZDA3OWFhOTkzOWIwYzljYWIzOGE2Yzg0MDhiM2NlNThmNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhv
bGRlciBpcyBoaWRkZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBh
IHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5l
ciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIg
dHlwZT0idGV4dCIgdmFsdWU9IiAgICAgICI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4
dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDUxMDQxZGQzODZlZmYxNjZl
NDgyZTMzNGUyNzQ1YzgzYjYyMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApAQCAt
MCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1
c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlz
IHRlc3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhv
bGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJl
IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBp
ZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRkFJTCI+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1
dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1
bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMi
KTsKKworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0g
Zm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQg
Z2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxs
KS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1
cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0
aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1m
aWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmMzMWYzM2Uw
YzljMTBhYmExYjhiN2M1M2Q3MjY3YjE1ZDdhODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGlu
dG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRl
c3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlm
cmFtZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTRiMjczMTg5MWNkYTIxOTQ2YTA3MDcz
MmYwNTQ2MDFhMzk0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0
ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4g
V2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aWZyYW1lIHNyY2RvYz0n
PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvdGVzdC5jc3MiPjwvaGVhZD48Ym9keT48aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0i
dGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvICAgICAgZnJvbSBDdXBlcnRpbm8hIj48L2Jv
ZHk+PC9odG1sPicgd2lkdGg9IjYwMCIgaGVpZ2h0PSIyMDAiPjwvaWZyYW1lPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mODFlNTg2N2U4MjZiNGMyZjU5NjZlNTljNDgxNjkxZWI0YjQ4OTA0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0g
LS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRp
YWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3Qu
Y3NzIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZCBp
bnNpZGUgYW4gaWZyYW1lLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjIw
MCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MGE4MzU1M2JmMTkyNTExMmYwMGY4N2FmMDYzZThiODVhN2Q5NThlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGlu
IFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1
dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEi
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZv
Y3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJm
cm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0
aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJl
Y2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0
aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50
ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQg
Ki8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgor
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1
dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MmFmZWNiYzEzOWMyMjI4
ZDE5NjhjOGRlY2FlZjRkZGQzMTQ4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4t
aWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+
Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxv
IGZyb20gQ3VwZXJ0aW5vISI+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cith
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW5wdXQiKTsKKworICAgIC8vIEZJWE1FOiBVc2UgVUlIZWxwZXIuYWN0aXZh
dGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCkuIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0OT4uCisgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAi
Zm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2Yo
ImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9z
aXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8g
QmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZl
IHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBp
bnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdo
dCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3Iu
CisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlu
cHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTg5MWRiZTI3MGVkMjVl
YTQ2OWE4OWU4YjliM2JlMjRmZmUzNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpAQCAtMCwwICsxLDEyIEBA
CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICBzcmM6IHVybCgiLi4v
Li4vLi4vcmVzb3VyY2VzL0FoZW0udHRmIik7Cit9CisKKy50ZXN0IHsKKyAgICBmb250OiAyNXB4
LzEgQWhlbTsKKyAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCUlOworICAgIC8qIFRv
IG1ha2UgZGVidWdnaW5nIGVhc2llciwgbWFrZSB0aGUgY2FyZXQgc3RhbmQgb3V0LiAqLworICAg
IGNhcmV0LWNvbG9yOiBibHVlOworICAgIGNvbG9yOiB5ZWxsb3c7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392826</attachid>
            <date>2020-03-06 18:24:07 -0800</date>
            <delta_ts>2020-03-06 18:32:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306182406.patch</filename>
            <type>text/plain</type>
            <size>60314</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
YjM3OTBlMTcwZTVjZDYwNDNhM2NkMWM0NzNkODA1YjRkNzE1YzBlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTMgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRl
KGZhbHNlKTsKKworICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHBsYWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBzaXplKTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVm
KCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9y
ZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5w
dHIoKSkgfTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dl
cmVkKSk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7
CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3Vt
ZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0
YXRlIGFuZCBjb21wdXRlIHRoZSBpbmRleCBvZiB0aGUgcGxhY2Vob2xkZXIgc28gdGhhdCB3ZSBj
YW4gc2V0IHRoZQorICAgIC8vIHRleHQgaW5zZXJ0aW9uIHBvc2l0aW9uIHRvIGp1c3QgYmVmb3Jl
IHRoZSBwbGFjZWhvbGRlciBlbGVtZW50IGFmdGVyIHJlbW92YWwuCisgICAgYXV0byBzYXZlZFJv
b3RFZGl0YWJsZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHBsYWNlaG9sZGVyLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSk7CisgICAgYXV0byBzYXZlZFBhcmVudE5vZGUgPSBtYWtlUmVmUHRyKHBsYWNlaG9s
ZGVyLnBhcmVudE5vZGUoKSk7CisgICAgdW5zaWduZWQgc2F2ZWRQbGFjZWhvbGRlckluZGV4ID0g
cGxhY2Vob2xkZXIuY29tcHV0ZU5vZGVJbmRleCgpOworCisgICAgLy8gRklYTUU6IFNhdmUgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFjZWhvbGRl
ciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGluc2VydGlv
bi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdh
Y3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRv
IGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIC8vIEZJWE1F
OiBVcGRhdGUgc2VsZWN0aW9uIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIFJhbmdlLiBTZWUgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIwODc1MT4uCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCku
aXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gc2F2
ZWRSb290RWRpdGFibGVFbGVtZW50KSB7CisgICAgICAgIGF1dG8gbmV3U2VsZWN0aW9uID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCwgc2F2ZWRQYXJlbnROb2RlLmdldCgpLCBzYXZlZFBsYWNlaG9s
ZGVySW5kZXgsIHNhdmVkUGFyZW50Tm9kZS5nZXQoKSwgc2F2ZWRQbGFjZWhvbGRlckluZGV4KTsK
KyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG5ld1NlbGVjdGlv
bi5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMpOworICAgIH0KK30KKwogc3RhdGljIGlubGluZSB2b2lkIGNvbGxhcHNlQ2FyZXRXaWR0aChJ
bnRSZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1FOiBXaWR0aCBhZGp1c3RtZW50IGRvZXNuJ3Qg
d29yayBmb3Igcm90YXRlZCB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZjg2Nzdi
MzE4ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZS4uZTAzNzhhZWI3YTkyYjUyYWE1ZGQ5
YzdiOWU5NTBhMWZlMDRlNWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Miw2ICs4
Miw3IEBAIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hl
Y2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ7CiAKIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBGb250QXR0cmlidXRl
czsKQEAgLTU0OSw2ICs1NTAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwogCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFjZWhv
bGRlcihjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVUZXh0
UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERv
Y3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNzQzMTlk
ZGRhNTI5ZjM2ZWRkOTgyMGNmMmM1YzRiZWQ0ZmE1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CisKK1JlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRQbGFjZWhvbGRlckVsZW1lbnQgeyBkb2N1
bWVudCwgc2l6ZSB9KTsKK30KKworVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUpCisg
ICAgOiBIVE1MRGl2RWxlbWVudCB7IGRpdlRhZywgZG9jdW1lbnQgfQoreworICAgIC8vIEZJWE1F
OiBNb3ZlIHRvIFVzZXIgQWdlbnQgc3R5bGVzaGVldC4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8yMDg3NDU+LgorICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5
LCBDU1NWYWx1ZUlubGluZUJsb2NrLCBmYWxzZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIENTU1ZhbHVlQm90dG9tLCBmYWxzZSk7CisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlSGlk
ZGVuLCB0cnVlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IHNpemUud2lkdGgoKSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6OkNT
U19QWCk7Cit9CisKK2F1dG8gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRP
Zkluc2VydGVkVHJlZSkgLT4gSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQKK3sKKyAgICBpZiAo
aW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkKSB7CisgICAgICAgIGlmIChhdXRvIHNoYWRv
d0hvc3QgPSBtYWtlUmVmUHRyKHBhcmVudE9mSW5zZXJ0ZWRUcmVlLnNoYWRvd0hvc3QoKSk7IGlz
PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0KSkKKyAgICAgICAgICAgIGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hv
d1BsYWNlaG9sZGVyKGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojpp
bnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7
Cit9CisKK3ZvaWQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihS
ZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVk
VHJlZSkKK3sKKyAgICBpZiAocmVtb3ZhbFR5cGUudHJlZVNjb3BlQ2hhbmdlZCkgeworICAgICAg
ICBpZiAoYXV0byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LnNoYWRvd0hvc3QoKSk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFkb3dIb3N0
KSkKKyAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hh
ZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKHRydWUpOworICAgIH0KKyAgICBIVE1MRGl2
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWQ2OGU4MTY2NWU2ZDhlZWVmZmMxZTZjYzRlYWU2YzEzODk1NDM1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhU
TUxEaXZFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0
IExheW91dFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50KERvY3VtZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOworCisgICAgYm9vbCBpc1RleHRQ
bGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlKSBmaW5hbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlz
PFdlYkNvcmU6OkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVt
ZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0OTJkZjJmYzdjN2YxOWZjM2U5YjliMTQzNjM0ZjA3
ZWIyOThkNWViLi5mMDkyMzk2ZjZkYTM4Nzg3NWYwMTNjYTFiNmZhMjg0ZmQ4YTVkYmEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAKICNpbmNs
dWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgIlR5cGVDb252ZXJzaW9ucy5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDM2LDYgKzE0MzcsMTcgQEAg
dm9pZCBJbnRlcm5hbHM6OnNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50LCBi
b29sIGNhblNob3dQbGFjZWhvbGRlcikKICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KGVsZW1lbnQpLnNldENhblNob3dQbGFjZWhvbGRlcihjYW5TaG93UGxhY2Vo
b2xkZXIpOwogfQogCitFbGVtZW50KiBJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcihp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgcmV0dXJuIGZyYW1lKCktPmVkaXRvcigpLmlu
c2VydFRleHRQbGFjZWhvbGRlcihJbnRTaXplIHsgd2lkdGgsIGhlaWdodCB9KS5nZXQoKTsKK30K
Kwordm9pZCBJbnRlcm5hbHM6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50
KQoreworICAgIGlmIChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSkKKyAgICAg
ICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25jYXN0PFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1lbnQpKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNlbGVj
dENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiBjb2xvclZhbHVlKQogewogICAgIGVsZW1lbnQuc2VsZWN0Q29sb3IoY29sb3JWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4MTUyNmU5ZTJkN2I4MzI5OTUwYWY5
MWIxM2IzZTA0N2IyMTIwOTk2Li44OTg0ZTlkMDM4MzFiZWFmNmI5MjNhOTA5NDcyOGJlZGJmYWQ3
MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIzOCw2ICsyMzgsOSBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50Jik7CiAgICAgdm9p
ZCBzZXRDYW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCYsIGJvb2wpOwogCisgICAgRWxlbWVudCog
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBy
ZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYpOworCiAgICAgdm9pZCBzZWxlY3RDb2xvcklu
Q29sb3JDaG9vc2VyKEhUTUxJbnB1dEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUp
OwogICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2
aW91c0hpc3RvcnlJdGVtKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Rm9ybUNvbnRyb2xT
dGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJkMDcxNmM4MzhkNDNiZTY0MWRhNWNlNWJk
NTcxMWMzODM4OTMxMzguLjViYmUwNGQ4OWM0NDlhZmRmNmM4MWEwNjUyZjg2YjhiYjQ3ZWNiMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwOSw2ICszMDksOSBAQCBl
bnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVy
KEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBjYW5TaG93UGxhY2Vob2xkZXIpOwogCisgICAgRWxl
bWVudCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIobG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOworICAg
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQgZWxlbWVudCk7CisKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZU9mU3RyaW5nKERPTVN0cmluZyB0ZXh0LCBSYW5n
ZT8gcmVmZXJlbmNlUmFuZ2UsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwogICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERP
TVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zLCBET01TdHJpbmcg
bWFya01hdGNoZXMpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3Vu
dEZpbmRNYXRjaGVzKERPTVN0cmluZyB0ZXh0LCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjk2NzYzMTNh
YzYyNWZlNjBkZTlmZTMwZjFhMDRjOGYyMTk5NDI2NS4uZjg4MTlhOTUxMDg0NDM4Yzg1MDRlZjU3
MmZlZDU4ZTNiODhlNTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTcxMCw2ICs3MTAsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29s
KTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisK
ICAgICBkb3VibGUgZGlzcGxheWVkQ29udGVudFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLnNjYWxlKCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZS5leHBvc2VkQ29udGVudFJlY3QoKTsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLnVub2JzY3VyZWRDb250ZW50UmVjdCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCAxZmFlOTc1MjY0YmJlNDkzMjU4ODU4NGUyOWVmNGFlZDRhZDY5
ZTRmLi5iNWYwZTY1NmU5ZmIzMTk0N2JmY2FiZDA3YTRlMGViMGJjNGMwNTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBvcnQgIldLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIgog
I2ltcG9ydCAiV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLVGV4
dFBsYWNlaG9sZGVyLmgiCiAjaW1wb3J0ICJXS1RleHRTZWxlY3Rpb25SZWN0LmgiCiAjaW1wb3J0
ICJXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJp
dmF0ZS5oIgpAQCAtMjkxLDcgKzI5Miw2IEBAICsgKFdLVGV4dFBvc2l0aW9uICopdGV4dFBvc2l0
aW9uV2l0aFJlY3Q6KENHUmVjdClwb3NpdGlvblJlY3Q7CiAKIEBlbmQKIAotCiBAaW50ZXJmYWNl
IFdLQXV0b2NvcnJlY3Rpb25SZWN0cyA6IFVJV0tBdXRvY29ycmVjdGlvblJlY3RzCiArIChXS0F1
dG9jb3JyZWN0aW9uUmVjdHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aEZpcnN0Q0dSZWN0OihD
R1JlY3QpZmlyc3RSZWN0IGxhc3RDR1JlY3Q6KENHUmVjdClsYXN0UmVjdDsKIEBlbmQKQEAgLTc0
MzYsNiArNzQzNiwyNyBAQCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClw
b2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAjZW5kaWYKIAorLSAo
dm9pZClpbnNlcnRUZXh0UGxhY2Vob2xkZXJXaXRoU2l6ZTooQ0dTaXplKXNpemUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFVJVGV4dFBsYWNlaG9sZGVyICopKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgX3BhZ2UtPmluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHsg
c2l6ZSB9LCBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mIHBsYWNlaG9sZGVyKSB7CisgICAgICAg
IGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1Nl
bGYgfHwgIVtzdHJvbmdTZWxmIHdlYlZpZXddIHx8ICFwbGFjZWhvbGRlcikgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBwbGFjZWhvbGRlclRvVXNlIHsgKnBs
YWNlaG9sZGVyIH07CisgICAgICAgIHBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0ID0gW3N0
cm9uZ1NlbGYgY29udmVydFJlY3Q6cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgZnJvbVZp
ZXc6W3N0cm9uZ1NlbGYgd2ViVmlld11dOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tX
S1RleHRQbGFjZWhvbGRlciBhbGxvY10gaW5pdFdpdGhFbGVtZW50Q29udGV4dDpwbGFjZWhvbGRl
clRvVXNlXSBhdXRvcmVsZWFzZV0pOworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZVRleHRQ
bGFjZWhvbGRlcjooVUlUZXh0UGxhY2Vob2xkZXIgKilwbGFjZWhvbGRlciB3aWxsSW5zZXJ0VGV4
dDooQk9PTCl3aWxsSW5zZXJ0VGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9y
IHdpbGxJbnNlcnRUZXh0LiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg3NDc+LgorICAgIGlmIChhdXRvKiB3a1RleHRQbGFjZWhvbGRlciA9IGR5bmFtaWNf
b2JqY19jYXN0PFdLVGV4dFBsYWNlaG9sZGVyPihwbGFjZWhvbGRlcikpCisgICAgICAgIF9wYWdl
LT5yZW1vdmVUZXh0UGxhY2Vob2xkZXIod2tUZXh0UGxhY2Vob2xkZXIuZWxlbWVudENvbnRleHQs
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJv
cHBpbmdJdGVtcyhOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzKQogewog
ICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDliMzEzM2FiMmNm
YzRjMGE5YmYzNDlmMTRjMmNiOWU0ZGEyMDgyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEVsZW1lbnRDb250ZXh0Owor
fQorCitAaW50ZXJmYWNlIFdLVGV4dFBsYWNlaG9sZGVyIDogVUlUZXh0UGxhY2Vob2xkZXIKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0Jiljb250ZXh0OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dDsKKworQGVuZAor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDU4ZDdiZTU2MDM1
NTc2ZThiMGZhOTRkOWU3ODQ5OTk1NTc4MWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLVGV4dFBsYWNlaG9s
ZGVyLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS1RleHRTZWxl
Y3Rpb25SZWN0LmgiCisjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+CisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1RleHRQbGFjZWhvbGRlciB7CisgICAgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQgX2VsZW1lbnRDb250ZXh0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbGVtZW50
Q29udGV4dDooY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3NlbGYgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9lbGVt
ZW50Q29udGV4dCA9IGNvbnRleHQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JillbGVtZW50Q29udGV4dAoreworICAgIHJldHVybiBfZWxl
bWVudENvbnRleHQ7Cit9CisKKy0gKE5TQXJyYXk8VUlUZXh0U2VsZWN0aW9uUmVjdCAqPiAqKXJl
Y3RzCit7CisgICAgcmV0dXJuIEBbIFtbW1dLVGV4dFNlbGVjdGlvblJlY3QgYWxsb2NdIGluaXRX
aXRoQ0dSZWN0Ol9lbGVtZW50Q29udGV4dC5ib3VuZGluZ1JlY3RdIGF1dG9yZWxlYXNlXSBdOwor
fQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKaW5kZXggOGQ1OGZl
MWZhNmJmNDRjMDdiMjgwN2VlZmI3NWEzMDM2YzI5YWVkMC4uZTY1NjYzZTAwOTA2Mjg1NzBkZGRk
NWNhNDI2YmU5ZjI1ZjAwZjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCkBAIC0yMyw4ICsyMyw2IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCi0KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgpAQCAtMzUsNiArMzMsNyBA
QCBjbGFzcyBTZWxlY3Rpb25SZWN0OwogCiBAaW50ZXJmYWNlIFdLVGV4dFNlbGVjdGlvblJlY3Qg
OiBVSVRleHRTZWxlY3Rpb25SZWN0CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDoo
Q0dSZWN0KXJlY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0Oihjb25z
dCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0OwogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCmluZGV4
IDk5MTAzMzVmYjViNTUxMDk4YzQzOWE4NWU0YzE3OTk2ODk2MmU0ZjMuLjU4MWI3YjNlYzNmMzYw
ZjdiNmI2MzYwOWNhZTcyMTgwMGQ0YmVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tCkBAIC0zNCw2ICszNCwxMyBAQCBAaW1w
bGVtZW50YXRpb24gV0tUZXh0U2VsZWN0aW9uUmVjdCB7CiAgICAgV2ViQ29yZTo6U2VsZWN0aW9u
UmVjdCBfc2VsZWN0aW9uUmVjdDsKIH0KIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0
OihDR1JlY3QpcmVjdAoreworICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVj
dDsKKyAgICBzZWxlY3Rpb25SZWN0LnNldFJlY3QoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChy
ZWN0KSk7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoU2VsZWN0aW9uUmVjdDpXVEZNb3ZlKHNl
bGVjdGlvblJlY3QpXTsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVj
dDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdAogewogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOGI0ZTA0OTNjNWE2YTk3NmMzNzFkYTNhODgxNWQ0
NGMyOTJiZjE1My4uM2MzMjljOTFhZThkZTU5MjQ1NDU1MWIwOGUzYWZlMTBmNGQ0ZTc4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00
NTcsNiArNDU3LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNv
bnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1Rl
eHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxh
Y2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vo
b2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgRWxl
bWVudENvbnRleHQmIHBsYWNlaG9sZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6UmVtb3ZlVGV4dFBsYWNlaG9sZGVyIHsgcGxhY2Vob2xkZXIgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjYTY4MzIyYzkzNTE2N2Fi
NmE5YmQyNzBjNjg3N2VhYTViNzM1OTYuLjI4N2MwNTBkNjUzZTE0YjdjNWM4Y2M5ZTYzYWUwNTk4
OGU3ZjU2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTczNCw2ICsxNzM0LDggQEAKIAkJQ0UxQTBCRDIxQTQ4RTZDNjAwNTRFRjc0
IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2Vy
dmljZXNTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDAx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwogCQlDRTFBMEJENzFBNDhFNkM2MDA1
NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmgg
Ki87IH07CisJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyMTIxNUQy
NDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi87IH07CisJCUNFMjEyMTYw
MjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAv
KiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLzsgfTsKIAkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlG
IC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rp
b25SZWN0LmggKi87IH07CiAJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U1NTBFMTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi87IH07CiAJ
CUNFNUI0Qzg4MjFCNzNEODcwMDIyRTY0RiAvKiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVC
NEM4NjIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5o
ICovOyB9OwpAQCAtNTA1MSw2ICs1MDUzLDggQEAKIAkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0
IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzc2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVENDU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MUEwQkQxMUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5oOyBwYXRoID0gaW9zL1dLVGV4dFBsYWNl
aG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjEyMTVFMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
VGV4dFBsYWNlaG9sZGVyLm1tOyBwYXRoID0gaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lmg7
IHBhdGggPSBpb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QubW07IHBhdGggPSBp
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0U1NTBFMTIyMjgzNzNDODAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc2VydFRleHRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02Nzk4LDYgKzY4MDIsOCBAQAogCQkJCTI2RjEwQkU3MTkxODdFMkUwMDFEMEU2OCAvKiBXS1N5
bnRoZXRpY1RhcEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCTMxNkI4QjYyMjA1NEI1NTgw
MEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3LmggKi8sCiAJCQkJMzE2QjhCNjEyMDU0QjU1
ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJldmlld1ZpZXcubW0gKi8sCisJCQkJQ0UyMTIxNUQyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8sCisJCQkJQ0UyMTIxNUUyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1tICovLAogCQkJCUNFNDU5NDVBMjQw
Rjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8sCiAJCQkJQ0U0NTk0NUIy
NDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8sCiAJCQkJNzFBNjc2
QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICov
LApAQCAtMTEzNTIsNiArMTEzNTgsNyBAQAogCQkJCTJERDY3QTM1MUJEODYxMDYwMDUzQjI1MSAv
KiBXS1RleHRGaW5kZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDVGNTFEMjA2MDg3
QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZDQjRFNjgxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8q
IFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTQ1OTQ1QzI0MEY4ODU1
MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVC
NkZDMDEyMDMwMjE5NjAwMTdFNjE5IC8qIFdLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MUE2NzZBNjIyQzYyMzI1MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEyNjQ4LDYgKzEyNjU1LDcg
QEAKIAkJCQk1Q0EyNkQ4MzIxN0FEMUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5n
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hh
cmVTaGVldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMzMjI0MTkxOUIwMDk2NDgzRSAv
KiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFMjEyMTYwMjQw
RUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI0ZWZiM2RhZGQ5
OGUzNzgyMGZkODgzMGUyNDhkN2NjYzRhZDkyMDUuLjcwN2ZjNmJkYTQyMzk4NThjNmNmNDZjNDBk
OGQ3MTBlMjA4YmE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTY0Miw2ICs2NDIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJl
dmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbjsgfQogICAgIHZvaWQgc2V0U2hvdWxk
UmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBp
bnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYp
OworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWls
YWJsZVNjcmVlblNpemUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgb3ZlcnJpZGVT
Y3JlZW5TaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyYWUxY2UyYmNiYTViNzY5ZTcyNzUyM2Rm
ZmY2OTkxOWNmY2Y4NzNlLi5iNGFlYTc1NTU0ZGE3NTRmODEwNDkxYTM0ZTQyMGE4NjA4YjJkNGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTExOSw2ICsxMTksOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdl
YktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlv
bkFmdGVySW5zZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKQorICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUp
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5j
CisgICAgUmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCBwbGFjZWhvbGRlcikgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIzNGZmNjIxYmM0MmI0NTRlNDAw
NmQ4ZWZjNTU4YzZiY2M0OTgyYmMuLjExMDkzMDliOWUwODVhMTZjZTRmZGFjZjVkNWM5YjA1NWRj
MjUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQ
cm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckFnZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVVbml0cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgpAQCAtNDAw
MCw2ICs0MDAxLDI0IEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJzVGV4dExlZ2liaWxp
dHlCYXNlZFpvb21TY2FsaW5nKCkgY29uc3QKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6Omlu
c2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIC8vIEluc2VydGluZyB0aGUgcGxhY2Vob2xkZXIgbWF5IHJ1
biBKYXZhU2NyaXB0LCB3aGljaCBjYW4gZG8gYW55dGhpbmcsIGluY2x1ZGluZyBmcmFtZSBkZXN0
cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byBwbGFjZWhvbGRlciA9IGZyYW1l
LT5lZGl0b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoc2l6ZSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIocGxhY2Vob2xkZXIgPyBjb250ZXh0Rm9yRWxlbWVudCgqcGxhY2Vob2xkZXIpIDogV1RG
OjpudWxsb3B0KTsKK30KKwordm9pZCBXZWJQYWdlOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIHBsYWNlaG9sZGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKFJlZlB0cjxFbGVtZW50
PiBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQocGxhY2Vob2xkZXIpKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1lbnQpKTsKKyAgICAg
ICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkp
CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGRvd25j
YXN0PFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KCplbGVtZW50KSk7CisgICAgfQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERl
bHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZjxGcmFtZT4g
ZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzMjBhZGM0NTA5ZDE2NzM1OWJkM2Y0Y2QxZTcxYzc2YTY0N2VkMWFiLi4xYzk1
MGI0ZTlkMTU4ZDBiZGFkMTJjMWRmMDAxNGEyMjNmZGM4YjExIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMjAtMDMtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhv
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQg
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHBsYWNlaG9sZGVyIHdvcmsuCisKKyAgICAgICAgKiBm
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LWNvbnRlbnQtZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQt
ZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQt
aW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9y
ZXNvdXJjZXMvdGVzdC5jc3M6IEFkZGVkLgorICAgICAgICAoQGZvbnQtZmFjZSk6CisgICAgICAg
ICgudGVzdCk6CisKIDIwMTktMDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91
dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWlu
dG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEzZjMwNDBiYTY5NjZlMjI1NzcxMWNlZjFkM2JkZGRjYTc3MWZjOTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFu
ZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3
cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEg
dGV4dCBwbGFjZWhvbGRlciB0aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0
IGZpZWxkIHZpc3VhbGx5IGxvb2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdp
biB3aXRoLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3Ig
RHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9
InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJmNTRjNGIzZDRmMDdkN2I1NTJkMzg0YjJkYTZjMDY0ZTdmODE2NjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUt
aW50by10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciB0
aGF0IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSB0ZXh0IGZpZWxkIHZpc3VhbGx5IGxv
b2tzIGFzIGlmIGl0IG5ldmVyIHdhcyBpbnNlcnRlZCB0byBiZWdpbiB3aXRoLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9w
PgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxs
byBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5m
b2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20gPSBpbnB1
dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9z
aXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGxldCBwbGFjZWhvbGRlckVsZW1l
bnQgPSBudWxsOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1
c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUg
c2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgcGxhY2Vo
b2xkZXJFbGVtZW50ID0gaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhX
aWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgICAgICBjb25zb2xlLmFzc2VydChwbGFjZWhvbGRl
ckVsZW1lbnQpOworICAgIH0KKyAgICAKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhl
IGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQo
KCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMucmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHBsYWNlaG9s
ZGVyRWxlbWVudCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMDY1MDFiMjZjOGNkN2M4ZjJjMDBkM2RkMTAwZDM4YTgyODVjZmNj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
YSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFi
bGU8L2NvZGU+IGVsZW1lbnQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVz
dCIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQg
YmxhY2siIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+SGVsbG8gJm5ic3A7Jm5ic3A7ZnJvbSBDdXBl
cnRpbm8hPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRp
dGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODk0OWVkODQxODFkYzFkM2E3MjU3MmQ3NTVlYTgyMjEz
MGFiN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdw
b3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0
ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSA8Y29kZT5jb250ZW50ZWRpdGFibGU8
L2NvZGU+IGVsZW1lbnQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1
bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0idGVzdCIg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2siIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+SGVsbG8gZnJvbSBDdXBlcnRpbm8hPC9kaXY+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgdGVzdEVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbih0ZXN0RWxlbWVudCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuZm9jdXMo
KSwgdGVzdEVsZW1lbnQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gdGVz
dEVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigiZnJvbSIpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9u
T2ZGcm9tLCB0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0
aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAg
ICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVz
dEVsZW1lbnQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoMiAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gdGVzdEVsZW1lbnQuYmx1cigp
LCB0ZXN0RWxlbWVudCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVs
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNGZkM2QwNzlhYTk5MzliMGM5Y2FiMzhhNmM4
NDA4YjNjZTU4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVz
ZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNlaG9s
ZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg
cnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlk
PSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSIgICAgICAiPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODA1MTA0MWRkMzg2ZWZmMTY2ZTQ4MmUzMzRlMjc0NWM4M2I2MjJlOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0
eS10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9
MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRk
ZW4gd2hlbiBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIg
cGxhY2Vob2xkZXI9IkZBSUwiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNlCisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5m
b2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgw
LCAwKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ug
d2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2Ft
ZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxz
Lmluc2VydFRleHRQbGFjZWhvbGRlcig1ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOwor
ICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVy
KCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWZjMzFmMzNlMGM5YzEwYWJhMWI4YjdjNTNkNzI2N2IxNWQ3YTgxNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5
IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1
dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBm
cm9tIEN1cGVydGlubyEiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1l
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTE0
YjI3MzE4OTFjZGEyMTk0NmEwNzA3MzJmMDU0NjAxYTM5NDdhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQt
aW4taWZyYW1lLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwt
c2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3Nz
Ij4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRl
ciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZCBpbnNpZGUgYW4gaWZyYW1lLiBUaGlzIHRl
c3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUu
PC9wPgorPGlmcmFtZSBzcmNkb2M9JzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj48L2hlYWQ+PGJvZHk+PGlu
cHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAg
IGZyb20gQ3VwZXJ0aW5vISI+PC9ib2R5PjwvaHRtbD4nIHdpZHRoPSI2MDAiIGhlaWdodD0iMjAw
Ij48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmll
bGQtaW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxZTU4NjdlODI2YjRjMmY1OTY2ZTU5YzQ4
MTY5MWViNGI0ODkwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCkBAIC0wLDAg
KzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0
ZWQgaW50byBhIHRleHQgZmllbGQgaW5zaWRlIGFuIGlmcmFtZS4gVGhpcyB0ZXN0IGNhbiBvbmx5
IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbCIg
d2lkdGg9IjYwMCIgaGVpZ2h0PSIyMDAiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRl
eHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhODM1NTNiZjE5MjUxMTJmMDBmODdh
ZjA2M2U4Yjg1YTdkOTU4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSw0MSBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQi
IGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0
IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0
ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVl
LjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0i
SGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0
aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAg
ICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5w
dXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0g
aW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdl
KHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFs
bW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdp
ZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRT
aXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGds
eXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxk
IHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRX
YWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4
dC1maWVsZC1pbi1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRl
ci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NjJhZmVjYmMxMzljMjIyOGQxOTY4YzhkZWNhZWY0ZGRkMzE0OGNhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InRlc3Qu
Y3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5
cGU9InRleHQiIHZhbHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0
IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisKKyAgICAvLyBGSVhN
RTogVXNlIFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5w
dXQpLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3NDk+
LgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBp
bnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZyb20g
PSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFu
Z2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZvbnQg
YWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGdseXBo
V2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCkuZm9u
dFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1ICog
Z2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMgZmll
bGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFu
ZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzk4OTFkYmUyNzBlZDI1ZWE0NjlhODllOGI5YjNiZTI0ZmZlMzZiNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVz
dC5jc3MKQEAgLTAsMCArMSwxMiBAQAorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6IEFo
ZW07CisgICAgc3JjOiB1cmwoIi4uLy4uLy4uL3Jlc291cmNlcy9BaGVtLnR0ZiIpOworfQorCisu
dGVzdCB7CisgICAgZm9udDogMjVweC8xIEFoZW07CisgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRq
dXN0OiAxMDAlJTsKKyAgICAvKiBUbyBtYWtlIGRlYnVnZ2luZyBlYXNpZXIsIG1ha2UgdGhlIGNh
cmV0IHN0YW5kIG91dC4gKi8KKyAgICBjYXJldC1jb2xvcjogYmx1ZTsKKyAgICBjb2xvcjogeWVs
bG93OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392830</attachid>
            <date>2020-03-06 18:32:15 -0800</date>
            <delta_ts>2020-03-06 18:45:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306183214.patch</filename>
            <type>text/plain</type>
            <size>60066</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
MTg4YWRjZDU0YWJjYzllYTQ5OWIzNjBjMzI5NmYwYzJjODhkYWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTAgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRl
KGZhbHNlKTsKKworICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHBsYWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBzaXplKTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVm
KCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9y
ZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5w
dHIoKSkgfTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dl
cmVkKSk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7
CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3Vt
ZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0
YXRlIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVz
dCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRv
IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCA9IG1ha2VSZWZQdHIocGxhY2Vob2xkZXIucm9vdEVk
aXRhYmxlRWxlbWVudCgpKTsKKyAgICBhdXRvIHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRl
ciA9IHBvc2l0aW9uQmVmb3JlTm9kZSgmcGxhY2Vob2xkZXIpOworCisgICAgLy8gRklYTUU6IFNh
dmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFj
ZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGlu
c2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRvIG1hdGNoIHRo
ZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBv
aW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50LT5m
b2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkgeworICAgICAgICBW
aXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiB7IHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhv
bGRlciwgc2F2ZWRQb3NpdGlvbkJlZm9yZVBsYWNlaG9sZGVyIH07CisgICAgICAgIG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRl
ZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmlnZ2VyZWQpKTsKKyAgICB9Cit9CisKIHN0
YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAg
ICAvLyBGSVhNRTogV2lkdGggYWRqdXN0bWVudCBkb2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2
ZWVmMjYwODA1YjQ1M2UuLmUwMzc4YWViN2E5MmI1MmFhNWRkOWM3YjllOTUwYTFmZTA0ZTVkNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVBy
b3BlcnRpZXM7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBU
ZXh0RXZlbnQ7CitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9z
aXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
IGluc2VydEVkaXRhYmxlSW1hZ2UoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0
UGxhY2Vob2xkZXJFbGVtZW50PiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vo
b2xkZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzc0MzE5ZGRkYTUyOWYzNmVkZDk4MjBjZjJj
NWM0YmVkNGZhNWUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhv
bGRlckVsZW1lbnQpOworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisK
K1RleHRQbGFjZWhvbGRlckVsZW1lbnQ6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorICAgIDogSFRNTERpdkVsZW1lbnQg
eyBkaXZUYWcsIGRvY3VtZW50IH0KK3sKKyAgICAvLyBGSVhNRTogTW92ZSB0byBVc2VyIEFnZW50
IHN0eWxlc2hlZXQuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA4NzQ1Pi4KKyAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9j
aywgZmFsc2UpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNh
bEFsaWduLCBDU1NWYWx1ZUJvdHRvbSwgZmFsc2UpOworICAgIHNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NWYWx1ZUhpZGRlbiwgdHJ1ZSk7CisgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1Vu
aXRUeXBlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlI
ZWlnaHQsIHNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworfQorCithdXRvIFRl
eHRQbGFjZWhvbGRlckVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUg
aW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0Cit7CisgICAgaWYgKGluc2VydGlvblR5cGUudHJlZVNj
b3BlQ2hhbmdlZCkgeworICAgICAgICBpZiAoYXV0byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihw
YXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7
CisgICAgfQorICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3Io
aW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5
cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJl
bW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9z
dCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3du
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQ
bGFjZWhvbGRlcih0cnVlKTsKKyAgICB9CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9t
QW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkNjhlODE2NjVlNmQ4ZWVlZmZj
MWU2Y2M0ZWFlNmMxMzg5NTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4
dFBsYWNlaG9sZGVyRWxlbWVudCk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNv
bnN0IExheW91dFNpemUmKTsKKworICAgIGJvb2wgaXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JS
ZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYg
cGFyZW50T2ZJbnNlcnRlZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3Rv
cihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmlu
YWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVu
dC5pc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihu
b2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggNDkyZGYyZmM3YzdmMTlmYzNlOWI5YjE0MzYzNGYwN2ViMjk4ZDVlYi4uZjA5MjM5NmY2
ZGEzODc4NzVmMDEzY2ExYjZmYTI4NGZkOGE1ZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgog
I2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUcmVlU2Nv
cGUuaCIKICNpbmNsdWRlICJUeXBlQ29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgpAQCAtMTQzNiw2ICsxNDM3LDE3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRD
YW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCwgYm9vbCBjYW5TaG93UGxhY2Vob2xk
ZXIpCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50
KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoY2FuU2hvd1BsYWNlaG9sZGVyKTsKIH0KIAorRWxlbWVu
dCogSW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIo
SW50U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0KCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpy
ZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoaXM8VGV4
dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGZyYW1lKCktPmVkaXRvcigp
LnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50Pihl
bGVtZW50KSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2Vy
KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSkKIHsK
ICAgICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9yVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggODE1MjZlOWUyZDdiODMyOTk1MGFmOTFiMTNiM2UwNDdiMjEyMDk5Ni4u
ODk4NGU5ZDAzODMxYmVhZjZiOTIzYTkwOTQ3MjhiZWRiZmFkNzFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC0yMzgsNiArMjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2
aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9s
ZGVyKEVsZW1lbnQmLCBib29sKTsKIAorICAgIEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRl
cihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5w
dXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxW
ZWN0b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBiZDA3MTZjODM4ZDQzYmU2NDFkYTVjZTViZDU3MTFjMzgzODkzMTM4Li41YmJl
MDRkODljNDQ5YWZkZjZjODFhMDY1MmY4NmI4YmI0N2VjYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC0zMDksNiArMzA5LDkgQEAgZW51bSBDb21wb3NpdGluZ1BvbGlj
eSB7CiAKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQsIGJv
b2xlYW4gY2FuU2hvd1BsYWNlaG9sZGVyKTsKIAorICAgIEVsZW1lbnQgaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFj
ZWhvbGRlcihFbGVtZW50IGVsZW1lbnQpOworCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5n
ZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBz
ZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVu
Y2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKICAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJp
bmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY5Njc2MzEzYWM2MjVmZTYwZGU5ZmUzMGYxYTA0
YzhmMjE5OTQyNjUuLmY4ODE5YTk1MTA4NDQzOGM4NTA0ZWY1NzJmZWQ1OGUzYjg4ZTUzYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MTAsNiArNzEwLDkgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRTaG91bGRSZXZl
YWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2Vy
dFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7Cisg
ICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgZG91YmxlIGRpc3BsYXll
ZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29u
dGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUu
ZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVu
b2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
MWZhZTk3NTI2NGJiZTQ5MzI1ODg1ODRlMjllZjRhZWQ0YWQ2OWU0Zi4uYjVmMGU2NTZlOWZiMzE5
NDdiZmNhYmQwN2E0ZTBlYjBiYzRjMDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3
IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IldLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2lt
cG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgogI2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0Nv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsy
OTIsNiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3Qp
cG9zaXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGludGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVj
dHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwogKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICop
YXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENHUmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0
Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5kCkBAIC03NDM2LDYgKzc0MzYsMjcgQEAgLSAo
dm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1
ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlmCiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShV
SVRleHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNl
cnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSB7IHNpemUgfSwgW3dlYWtTZWxmID0g
V2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxl
bWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3
ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8ICFbc3Ryb25nU2VsZiB3
ZWJWaWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXJUb1VzZSB7ICpwbGFjZWhvbGRlciB9OworICAgICAg
ICBwbGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxmIGNvbnZlcnRSZWN0
OnBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0IGZyb21WaWV3OltzdHJvbmdTZWxmIHdlYlZp
ZXddXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxs
b2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJUb1VzZV0gYXV0b3JlbGVhc2Vd
KTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBs
YWNlaG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbEluc2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRl
eHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4gU2Vl
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ3Pi4KKyAgICBp
ZiAoYXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFj
ZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXpl
c09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxO
U0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6
SW50U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tUZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQ
bGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YjMxMzNhYjJjZmM0YzBhOWJmMzQ5ZjE0YzJjYjll
NGRhMjA4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tUZXh0UGxhY2Vob2xkZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKK30KKworQGludGVyZmFjZSBXS1Rl
eHRQbGFjZWhvbGRlciA6IFVJVGV4dFBsYWNlaG9sZGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4
dDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBjb25zdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxh
Y2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5
NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9y
dCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxh
Y2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0
OworICAgIHJldHVybiBzZWxmOworfQorCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICByZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCist
IChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBA
WyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENv
bnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmluZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZi
NzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkwNjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25S
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJl
Y3QuaApAQCAtMjMsOCArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNwcmFnbWEgb25jZQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lt
cG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1LDYgKzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVj
dDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxlY3Rpb25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVj
dAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVjdDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9u
UmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0
MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFiN2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBk
NGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2Vs
ZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2Vs
ZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNl
bGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7
CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAg
ICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVj
dC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBb
c2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNl
bGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcxZGEzYTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5Yzkx
YWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRkNGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQs
IGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNp
emUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENv
bnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhv
bGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhv
bGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBh
Z2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRh
KGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMyMmM5MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1Yjcz
NTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNjOWU2M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiAr
MTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Ux
QTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJ
CUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBU
Q0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBC
RDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0
MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBX
S1RleHRQbGFjZWhvbGRlci5oICovOyB9OworCQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyog
V0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIu
bW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25S
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1
OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlD
RTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQy
ODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAy
MkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRG
IC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiAr
NTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNl
c1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNl
c1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1
NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVG
NzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVF
NTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0
UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxh
Y2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsg
cGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNl
bGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBG
ODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJl
Y3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQy
ODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAK
IAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBFNjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVj
b2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1Q
cmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3Rl
bVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1Rl
eHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNFMjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1Rl
eHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJCUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBX
S1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAogCQkJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAv
KiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4
LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThC
QkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNl
bGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYx
OSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFB
Njc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2ICsxMjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdB
RDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNFOCAvKiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlCMDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxl
cnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNGVmYjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdj
Y2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4YzZjZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQy
LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rp
b25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRl
eHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29u
c3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2OWU3Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRh
ZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBhODYwOGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTks
NiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVx
dWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5k
KQogICAgIFNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29s
IHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3luYworICAgIFJlbW92ZVRleHRQbGFj
ZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgp
IEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250
cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJjNDJiNDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJj
Li4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1ZDVjOWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3
LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRv
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0UGxhY2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KQEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29s
IFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygp
IGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2gg
Y2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZy
YW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8g
Y29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9sZGVyKSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRG
b3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0
UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSk7CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+
IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJF
bGVtZW50PigqZWxlbWVudCkpOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQor
CiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9u
RGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUw
OWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdlZDFhYi4uMWM5NTBiNGU5ZDE1OGQwYmRhZDEyYzFk
ZjAwMTRhMjIzZmRjOGIxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3Zp
bmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10
ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJh
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzOiBB
ZGRlZC4KKyAgICAgICAgKEBmb250LWZhY2UpOgorICAgICAgICAoLnRlc3QpOgorCiAyMDE5LTA3
LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBB
U1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRp
dG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJl
bW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2YzMDQwYmE2
OTY2ZTIyNTc3MTFjZWYxZDNiZGRkY2E3NzFmYzkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1m
aWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxl
PTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhh
dCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29r
cyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNh
biBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4K
KzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8g
ZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmll
bGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJl
bW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjU0YzRiM2Q0ZjA3ZDdiNTUy
ZDM4NGIyZGE2YzA2NGU3ZjgxNjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1s
CkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
PlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQg
cmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3
YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQi
IGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklu
cHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1
cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJv
bSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlv
bk9mRnJvbSk7CisKKyAgICBsZXQgcGxhY2Vob2xkZXJFbGVtZW50ID0gbnVsbDsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUg
QWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAg
IGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQs
IG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIHBsYWNlaG9sZGVyRWxlbWVudCA9IGludGVy
bmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICov
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGxhY2Vob2xkZXJFbGVtZW50KTsKKyAgICB9Cisg
ICAgCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQg
VUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwg
aW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnJlbW92ZVRleHRQbGFjZWhvbGRlcihwbGFjZWhvbGRlckVsZW1lbnQpOworCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRp
dGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2
NTAxYjI2YzhjZDdjOGYyYzAwZDNkZDEwMGQzOGE4Mjg1Y2ZjYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBp
cyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVudGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xhc3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAw
cHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFi
bGU9InRydWUiPkhlbGxvICZuYnNwOyZuYnNwO2Zyb20gQ3VwZXJ0aW5vITwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg5NDllZDg0MTgxZGMxZDNhNzI1NzJkNzU1ZWE4MjIxMzBhYjdkNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250
ZW50LWVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9
MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBp
bnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVudGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlz
IHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRy
ZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xhc3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7
IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9
InRydWUiPkhlbGxvIGZyb20gQ3VwZXJ0aW5vITwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3
YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24odGVzdEVs
ZW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5k
V2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50LmZvY3VzKCksIHRlc3RFbGVtZW50LCAiZm9j
dXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IHRlc3RFbGVtZW50LnRleHRDb250ZW50
LmluZGV4T2YoImZyb20iKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4
dGVudCh0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSwgdGVzdEVsZW1lbnQu
Zmlyc3RDaGlsZCwgcG9zaXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3Qg
YWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9
IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3RFbGVtZW50LCBudWxsKS5mb250
U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDIgKiBn
bHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVs
ZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5k
V2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50LmJsdXIoKSwgdGVzdEVsZW1lbnQsICJibHVy
Iik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
ZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YzRmZDNkMDc5YWE5OTM5YjBjOWNhYjM4YTZjODQwOGIzY2U1OGY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZ
UEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
aW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
dGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIHBsYWNl
aG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRv
IGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iICAgICAgIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10
ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTEwNDFkZDM4NmVmZjE2
NmU0ODJlMzM0ZTI3NDVjODNiNjIyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCkBA
IC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRo
aXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNl
aG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkg
YmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0
IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJGQUlMIj4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklu
cHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1
cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhl
bSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxl
dCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51
bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xk
ZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZv
Y3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVu
Y3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsK
KworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0
LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzMxZjMz
ZTBjOWMxMGFiYTFiOGI3YzUzZDcyNjdiMTVkN2E4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQg
aW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0i
dGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvICAgICAgZnJvbSBDdXBlcnRpbm8hIj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4t
aWZyYW1lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxNGIyNzMxODkxY2RhMjE5NDZhMDcw
NzMyZjA1NDYwMWEzOTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBh
IHRleHQgZmllbGQgaW5zaWRlIGFuIGlmcmFtZS4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBp
biBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpZnJhbWUgc3JjZG9j
PSc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy90ZXN0LmNzcyI+PC9oZWFkPjxib2R5PjxpbnB1dCBpZD0iaW5wdXQiIGNsYXNz
PSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9tIEN1cGVydGlubyEiPjwv
Ym9keT48L2h0bWw+JyB3aWR0aD0iNjAwIiBoZWlnaHQ9IjIwMCI+PC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4MWU1ODY3ZTgyNmI0YzJmNTk2NmU1OWM0ODE2OTFlYjRiNDg5MDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
XSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5p
dGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVz
dC5jc3MiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxk
IGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2lu
c2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwiIHdpZHRoPSI2MDAiIGhlaWdodD0i
MjAwIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQwYTgzNTUzYmYxOTI1MTEyZjAwZjg3YWYwNjNlOGI4NWE3ZDk1OGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNj
YWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIg
aXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
aW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9Imlu
cHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5v
ISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRG
b3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAi
Zm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2Yo
ImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9z
aXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8g
QmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZl
IHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBp
bnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdo
dCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3Iu
CisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlu
cHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1p
bnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYyYWZlY2JjMTM5YzIy
MjhkMTk2OGM4ZGVjYWVmNGRkZDMxNDhjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1p
bi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVs
bG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4K
K2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbnB1dCIpOworCisgICAgLy8gRklYTUU6IFVzZSBVSUhlbHBlci5hY3Rp
dmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KS4gU2VlIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ5Pi4KKyAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQs
ICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhP
ZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBw
b3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhh
dmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAg
IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVp
Z2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNv
ci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
aW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQy
NWVhNDY5YTg5ZThiOWIzYmUyNGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIg
QEAKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIu
Li8uLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1
cHgvMSBBaGVtOworICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyog
VG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisg
ICAgY2FyZXQtY29sb3I6IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392833</attachid>
            <date>2020-03-06 18:41:27 -0800</date>
            <delta_ts>2020-03-06 18:50:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208661-20200306184126.patch</filename>
            <type>text/plain</type>
            <size>60093</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uMzdlYWY0MDk3MjcwYTE4NzJhMjllMGI2ZTMwMWI0
MDZhNDhlNGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRleHQgcGxhY2Vob2xkZXIs
IHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVzcGFjZToKKyAgICAgICAg
aXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQgaGFzIG5vIHZpc3VhbCBh
cHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlk
ZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBl
eGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlu
bGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwg
cGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQg
ZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBz
aG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBX
ZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1
ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmUwNmQwYjVmZGExMTIwNDFjNjFlY2RiODY0
MGYwYmY5YzIzODY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlv
bnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxs
SW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
b2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQg
YW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9u
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAg
KC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0
UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0g
aGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUt
Qy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRT
ZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5k
IGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDkt
MTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhk
MWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2
ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3No
YWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIz
ZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkw
YTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0Qy
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAy
MUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRU
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4
NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAv
KiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5n
VGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERC
RDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3
RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2
OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9y
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMy
MDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEz
OCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ux
QTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVE
Q0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0
MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywK
KwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5j
cHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3
IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0
UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQz
IC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0Mjcy
OTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5
MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4u
NGViODdiOWFjYzhjYzdiNmIzM2Q2YzQ4MzM0MWVmNjdmNDdjMmRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNTAgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAg
IHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVo
YXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMt
PmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRl
KGZhbHNlKTsKKworICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHBsYWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBzaXplKTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVm
KCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9y
ZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5w
dHIoKSkgfTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dl
cmVkKSk7CisKKyAgICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7
CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3Vt
ZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0
YXRlIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVz
dCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRv
IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCA9IG1ha2VSZWZQdHIocGxhY2Vob2xkZXIucm9vdEVk
aXRhYmxlRWxlbWVudCgpKTsKKyAgICBhdXRvIHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRl
ciA9IHBvc2l0aW9uQmVmb3JlTm9kZSgmcGxhY2Vob2xkZXIpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOworCisgICAgLy8gRklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0
IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBh
bmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1v
dmUoKTsKKworICAgIC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9u
LCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxh
Y2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNl
ZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVk
aXRhYmxlRWxlbWVudCkgeworICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiB7
IHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRlciwgc2F2ZWRQb3NpdGlvbkJlZm9yZVBsYWNl
aG9sZGVyIH07CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJU
cmlnZ2VyZWQpKTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsYXBzZUNhcmV0
V2lkdGgoSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBGSVhNRTogV2lkdGggYWRqdXN0bWVudCBk
b2Vzbid0IHdvcmsgZm9yIHJvdGF0ZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4
IGY4Njc3YjMxOGU4ZTgwNmMwMjJhM2U3Mzg2ZWVmMjYwODA1YjQ1M2UuLmUwMzc4YWViN2E5MmI1
MmFhNWRkOWM3YjllOTUwYTFmZTA0ZTVkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAt
ODIsNiArODIsNyBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0OwogY2xhc3Mg
VGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CitjbGFzcyBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3QgRm9udEF0
dHJpYnV0ZXM7CkBAIC01NDksNiArNTUwLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGluc2VydEVkaXRhYmxlSW1hZ2UoKTsKIAorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBpbnNlcnRUZXh0
UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlVGV4dFBsYWNlaG9sZGVyKFRleHRQbGFjZWhvbGRlckVsZW1lbnQmKTsKKwogcHJpdmF0ZToK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
Yzc0MzE5ZGRkYTUyOWYzNmVkZDk4MjBjZjJjNWM0YmVkNGZhNWUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAK
QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFRleHRQbGFjZWhvbGRlckVsZW1lbnQpOworCit1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOworCitSZWY8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50
IHsgZG9jdW1lbnQsIHNpemUgfSk7Cit9CisKK1RleHRQbGFjZWhvbGRlckVsZW1lbnQ6OlRleHRQ
bGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRTaXplJiBz
aXplKQorICAgIDogSFRNTERpdkVsZW1lbnQgeyBkaXZUYWcsIGRvY3VtZW50IH0KK3sKKyAgICAv
LyBGSVhNRTogTW92ZSB0byBVc2VyIEFnZW50IHN0eWxlc2hlZXQuIFNlZSA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMjA4NzQ1Pi4KKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9jaywgZmFsc2UpOworICAgIHNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZUJvdHRvbSwgZmFsc2Up
OworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NW
YWx1ZUhpZGRlbiwgdHJ1ZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIHNpemUuaGVpZ2h0KCksIENTU1VuaXRU
eXBlOjpDU1NfUFgpOworfQorCithdXRvIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6Omluc2VydGVk
SW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYg
cGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0Cit7Cisg
ICAgaWYgKGluc2VydGlvblR5cGUudHJlZVNjb3BlQ2hhbmdlZCkgeworICAgICAgICBpZiAoYXV0
byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0
KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAg
ICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNl
dENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBIVE1MRGl2RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsK
KyAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1v
dmVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hh
ZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKKyAgICB9CisgICAg
SFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGFkNjhlODE2NjVlNmQ4ZWVlZmZjMWU2Y2M0ZWFlNmMxMzg5NTQzNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1l
bnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRl
eHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQm
LCBjb25zdCBMYXlvdXRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVGV4dFBsYWNl
aG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKworICAgIGJvb2wg
aXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIGZpbmFsOwor
ICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVu
dCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKTsg
fQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJl
dHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29y
ZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDkyZGYyZmM3YzdmMTlmYzNlOWI5YjE0
MzYzNGYwN2ViMjk4ZDVlYi4uZjA5MjM5NmY2ZGEzODc4NzVmMDEzY2ExYjZmYTI4NGZkOGE1ZGJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBA
CiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlICJUeXBlQ29udmVyc2lv
bnMuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMTQzNiw2ICsxNDM3
LDE3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRDYW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxl
bWVudCwgYm9vbCBjYW5TaG93UGxhY2Vob2xkZXIpCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoY2FuU2hv
d1BsYWNlaG9sZGVyKTsKIH0KIAorRWxlbWVudCogSW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vo
b2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBmcmFtZSgpLT5lZGl0
b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoSW50U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0
KCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBpZiAoaXM8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkp
CisgICAgICAgIGZyYW1lKCktPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2Fz
dDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSk7Cit9CisKIHZvaWQgSW50ZXJuYWxz
OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgY29sb3JWYWx1ZSkKIHsKICAgICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9y
VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE1MjZlOWUyZDdiODMy
OTk1MGFmOTFiMTNiM2UwNDdiMjEyMDk5Ni4uODk4NGU5ZDAzODMxYmVhZjZiOTIzYTkwOTQ3Mjhi
ZWRiZmFkNzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMzgsNiArMjM4
LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCYpOwog
ICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmLCBib29sKTsKIAorICAgIEVs
ZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAg
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2VsZWN0
Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBjb2xv
clZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xTdGF0
ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZvcm1D
b250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZDA3MTZjODM4ZDQzYmU2NDFk
YTVjZTViZDU3MTFjMzgzODkzMTM4Li41YmJlMDRkODljNDQ5YWZkZjZjODFhMDY1MmY4NmI4YmI0
N2VjYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMDksNiArMzA5
LDkgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICB2b2lkIHNldENhblNob3dQbGFj
ZWhvbGRlcihFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gY2FuU2hvd1BsYWNlaG9sZGVyKTsKIAor
ICAgIEVsZW1lbnQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0
KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQpOworCiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4
dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25z
KTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9y
VGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9N
U3RyaW5nIG1hcmtNYXRjaGVzKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxv
bmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBm
aW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY5
Njc2MzEzYWM2MjVmZTYwZGU5ZmUzMGYxYTA0YzhmMjE5OTQyNjUuLmY4ODE5YTk1MTA4NDQzOGM4
NTA0ZWY1NzJmZWQ1OGUzYjg4ZTUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC03MTAsNiArNzEwLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBzZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRp
b24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xh
c3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJl
Y3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWZhZTk3NTI2NGJiZTQ5MzI1ODg1ODRlMjllZjRh
ZWQ0YWQ2OWU0Zi4uYjVmMGU2NTZlOWZiMzE5NDdiZmNhYmQwN2E0ZTBlYjBiYzRjMDUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZl
bnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0
ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgog
I2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxl
Z2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsyOTIsNiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRl
eHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3QpcG9zaXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGlu
dGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVjdHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwog
KyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENH
UmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5k
CkBAIC03NDM2LDYgKzc0MzYsMjcgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlm
CiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNlaG9sZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVRleHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50
U2l6ZSB7IHNpemUgfSwgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2Vs
ZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgewor
ICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFz
dHJvbmdTZWxmIHx8ICFbc3Ryb25nU2VsZiB3ZWJWaWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXJUb1Vz
ZSB7ICpwbGFjZWhvbGRlciB9OworICAgICAgICBwbGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVj
dCA9IFtzdHJvbmdTZWxmIGNvbnZlcnRSZWN0OnBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0
IGZyb21WaWV3OltzdHJvbmdTZWxmIHdlYlZpZXddXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxh
Y2Vob2xkZXJUb1VzZV0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1v
dmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbElu
c2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBw
b3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NzQ3Pi4KKyAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBk
eW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAg
ICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRD
b250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZl
Y3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0
V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVy
cykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YjMx
MzNhYjJjZmM0YzBhOWJmMzQ5ZjE0YzJjYjllNGRhMjA4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQg
PFVJS2l0L1VJS2l0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBFbGVtZW50Q29u
dGV4dDsKK30KKworQGludGVyZmFjZSBXS1RleHRQbGFjZWhvbGRlciA6IFVJVGV4dFBsYWNlaG9s
ZGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJD
b3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4dDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQ7CisK
K0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1OGQ3
YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1RleHRQ
bGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgor
CitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0Cit7
CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOworfQorCistIChj
b25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICByZXR1
cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3Qg
Kj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9j
XSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFz
ZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmluZGV4
IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkwNjI4
NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaApAQCAtMjMsOCArMjMsNiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1LDYg
KzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxlY3Rp
b25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
R1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVj
dDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJl
Y3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5t
bQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFiN2Iz
ZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMg
QEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNl
bGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVj
dGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RG
TW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVj
dGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcxZGEz
YTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5YzkxYWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRkNGU3
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVk
VGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0
LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4
dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQ
YWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNv
bnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMyMmM5
MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1YjczNTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNjOWU2
M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiArMTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2QzYw
MDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2Vy
dGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBU
Q0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4
RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1
dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vo
b2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovOyB9OworCQlD
RTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcxMDA2
RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4NTUw
MDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0
U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5z
ZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICov
OyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5n
ZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2Vi
RXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiArNTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2QzYw
MDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9XS1Rl
eHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1RTI0
MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlG
IC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9u
UmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlv
blJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBw
YXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAKIAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBFNjgg
LyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2MjIw
NTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4QjYx
MjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNFMjEy
MTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNFMjEy
MTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlDRTQ1
OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJCUNF
NDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAogCQkJ
CTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2MDA1
M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1RjUx
RDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdp
bmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEwMDZF
RDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0NUMy
NDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91
Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2ICsx
MjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5n
V2FybmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNFOCAv
KiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlCMDA5
NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTIx
MjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNGVm
YjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdjY2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4YzZj
ZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxk
UmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNl
dFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAorICAg
IHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpF
bGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBXZWJD
b3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92
ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2OWU3
Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRhZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBhODYw
OGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTksNiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoc3Ry
dWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQogICAgIFNldFNob3VsZFJldmVhbEN1cnJlbnRT
ZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25B
ZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6
ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVy
KSBBc3luYworICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVu
dENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENvbnRy
b2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJjNDJi
NDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJjLi4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1ZDVj
OWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0UGxh
Y2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4K
QEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRM
ZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQ
YWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVy
IG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJh
bWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIg
PSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9sZGVy
KSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSk7
CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRl
cihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PigqZWxlbWVudCkpOworICAgIH0KKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlv
bldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8
RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUwOWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdlZDFh
Yi4uMWM5NTBiNGU5ZDE1OGQwYmRhZDEyYzFkZjAwMTRhMjIzZmRjOGIxMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDIwLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQg
cGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODY2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisgICAg
ICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1m
aWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0
eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0
LWZpZWxkLWluLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vo
b2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzOiBBZGRlZC4KKyAgICAgICAgKEBmb250LWZhY2UpOgor
ICAgICAgICAoLnRlc3QpOgorCiAyMDE5LTA3LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bv
c3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJl
bW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xM2YzMDQwYmE2OTY2ZTIyNTc3MTFjZWYxZDNiZGRkY2E3NzFmYzkx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2lu
c2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhp
YmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMg
dGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9t
IGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQg
dG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVu
bmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZjU0YzRiM2Q0ZjA3ZDdiNTUyZDM4NGIyZGE2YzA2NGU3ZjgxNjYzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQt
cmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBd
IC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0
aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0
LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vo
b2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1
YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhp
cyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJU
cmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1
ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1
dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIu
YWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQor
ICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
aW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9t
ID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJh
bmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBsZXQgcGxhY2Vob2xk
ZXJFbGVtZW50ID0gbnVsbDsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAv
LyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhh
dmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAg
IHBsYWNlaG9sZGVyRWxlbWVudCA9IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAq
IGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGxh
Y2Vob2xkZXJFbGVtZW50KTsKKyAgICB9CisgICAgCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBo
aWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZv
ckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnJlbW92ZVRleHRQbGFjZWhvbGRlcihw
bGFjZWhvbGRlckVsZW1lbnQpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2NTAxYjI2YzhjZDdjOGYyYzAwZDNkZDEwMGQzOGE4
Mjg1Y2ZjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhv
bGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxl
eGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVu
dGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdl
YktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xh
c3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvICZuYnNwOyZuYnNwO2Zy
b20gQ3VwZXJ0aW5vITwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250
ZW50LWVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg5NDllZDg0MTgxZGMxZDNhNzI1NzJkNzU1
ZWE4MjIxMzBhYjdkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSw0
MSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGli
bGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0
aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVudGVk
aXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktp
dFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xhc3M9
InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvIGZyb20gQ3VwZXJ0aW5vITwv
ZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IHRl
c3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFu
ZFdhaXRGb3JJbnB1dFNlc3Npb24odGVzdEVsZW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50
LmZvY3VzKCksIHRlc3RFbGVtZW50LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJv
bSA9IHRlc3RFbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoImZyb20iKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBw
b3NpdGlvbk9mRnJvbSwgdGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25PZkZyb20pOwor
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUg
dXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRo
LgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKHRlc3RFbGVtZW50LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMu
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDIgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7Cisg
ICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50
LmJsdXIoKSwgdGVzdEVsZW1lbnQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRl
eHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzRmZDNkMDc5YWE5OTM5YjBjOWNh
YjM4YTZjODQwOGIzY2U1OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UaGlzIHRlc3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBw
bGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBv
bmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxp
bnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iICAgICAgIj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwNTEwNDFkZDM4NmVmZjE2NmU0ODJlMzM0ZTI3NDVjODNiNjIyZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWlu
dG8tZW1wdHktdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFs
LXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNz
cyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIg
aXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0
IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3Ig
RHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9
InRleHQiIHBsYWNlaG9sZGVyPSJGQUlMIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1
dCIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIu
YWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQor
ICAgICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
aW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9u
UmFuZ2UoMCwgMCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBC
ZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUg
dGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93
LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGlu
dGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0
ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4K
KyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5w
dXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFmYzMxZjMzZTBjOWMxMGFiYTFiOGI3YzUzZDcyNjdiMTVkN2E4
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwh
RE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3Bv
cnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291
cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRl
eHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+
Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxv
ICAgICAgZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWlu
LWlmcmFtZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWUxNGIyNzMxODkxY2RhMjE5NDZhMDcwNzMyZjA1NDYwMWEzOTQ3YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0
LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJp
bml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90
ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxh
Y2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQgaW5zaWRlIGFuIGlmcmFtZS4g
VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5k
ZXJUcmVlLjwvcD4KKzxpZnJhbWUgc3JjZG9jPSc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+PC9oZWFkPjxi
b2R5PjxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVs
bG8gICAgICBmcm9tIEN1cGVydGlubyEiPjwvYm9keT48L2h0bWw+JyB3aWR0aD0iNjAwIiBoZWln
aHQ9IjIwMCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MWU1ODY3ZTgyNmI0YzJmNTk2
NmU1OWM0ODE2OTFlYjRiNDg5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlz
IGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+
Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1l
Lmh0bWwiIHdpZHRoPSI2MDAiIGhlaWdodD0iMjAwIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTgzNTUzYmYxOTI1MTEy
ZjAwZjg3YWYwNjNlOGI4NWE3ZDk1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAg
KzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZs
ZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQu
IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVu
ZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIg
dmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVs
c2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9m
RnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rp
b25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0g
Zm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQg
Z2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxs
KS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1
cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0
aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1p
bnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxh
Y2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODYyYWZlY2JjMTM5YzIyMjhkMTk2OGM4ZGVjYWVmNGRkZDMxNDhjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJj
ZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJ0ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0
ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworCisgICAg
Ly8gRklYTUU6IFVzZSBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNz
aW9uKGlucHV0KS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4NzQ5Pi4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQo
KCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9u
T2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVj
dGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhl
bSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxl
dCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51
bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xk
ZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZv
Y3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVu
Y3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsK
KworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5j
c3MgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQyNWVhNDY5YTg5ZThiOWIzYmUyNGZmZTM2YjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3Vy
Y2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIgQEAKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFt
aWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIuLi8uLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsK
K30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1cHgvMSBBaGVtOworICAgIC13ZWJraXQtdGV4dC1z
aXplLWFkanVzdDogMTAwJSU7CisgICAgLyogVG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLCBtYWtl
IHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisgICAgY2FyZXQtY29sb3I6IGJsdWU7CisgICAgY29s
b3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392834</attachid>
            <date>2020-03-06 18:50:14 -0800</date>
            <delta_ts>2020-03-06 18:56:23 -0800</delta_ts>
            <desc>To land</desc>
            <filename>bug-208661-20200306185013.patch</filename>
            <type>text/plain</type>
            <size>60021</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uOTA4OTUzYWEyMzBlMTI2ZDczZDk0M2NjOGQwYmMz
NWZiNDdkODg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFu
ZCBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRl
eHQgcGxhY2Vob2xkZXIsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVz
cGFjZToKKyAgICAgICAgaXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQg
aGFzIG5vIHZpc3VhbCBhcHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVkLiBEZWZhdWx0cyB0byBm
YWxzZS4gSSBvdmVycmlkZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
aC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEgbmV3IHBsYWNlaG9sZGVy
IG9yIHJlbW92ZSBhbiBleGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJF
bGVtZW50KTogU2V0IGlubGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxhY2Vob2xkZXIuCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rv
cik6IElmIHRoZSBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUgYW4KKyAgICAgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KSB0aGVu
IGhpZGUgdGhlIEhUTUwgcGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJZiB0aGUgcGxhY2Vob2xk
ZXIgd2FzIHJlbW92ZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgdGhlbiBzaG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRleHQuCisgICAgICAgICog
aHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAgICAgICAoaXNUeXBlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
OS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGU0ZTI2MDdjY2E1ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVlMDUuLmJhODk0YzYwMTIx
ZmIwNTQ1OTAwYmRhMjZjMjIyOTE5ZGQ0OWM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMjAtMDMtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEgdGV4dCBwbGFjZWhvbGRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjYx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIgYW5kIFJ5b3N1a2UgTml3YS4KKworICAgICAgICBJbXBsZW1lbnRzIHRo
ZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlvbnMgLWluc2VydFRleHRQbGFjZWhvbGRlcldp
dGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9sZGVyLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluc2VydFRleHRQbGFjZWhv
bGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxsSW5zZXJ0VGV4dDpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIFVJVGV4dElucHV0IHByb3RvY29s
LiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQgYW5kIGNhbGwKKyAgICAgICAgdGhlIGNvcnJl
c3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFBs
YWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgaW5pdFdp
dGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgZWxlbWVu
dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIgcmVjdHNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDogUmVtb3ZlIGFuIHVubmNl
c3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0gaGVyZS4KKyAgICAgICAgVGhpcyBmaWxlIGlz
IG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUtQy9DKysgZmlsZXMgc28gdGhhdCAjcHJhZ21h
IGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rp
b25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0IGluaXRXaXRoQ0dSZWN0
Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIpOiBB
ZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRl
cik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBuZXcgbWVzc2FnZXMgdG8gaW5z
ZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92ZVRleHRQbGFj
ZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5kIGFuZCBjYWxsIHRoZSBjb3JyZXNwb25kaW5n
IEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0
YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzIxZmJiMWFkOGE1YWE2YmRhMDli
NjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhkMWQxODE3YTNiNzliOWIwNWQ2ZWMxOTk3ZmY0
ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcgQEAgaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAogaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRlOWJm
NTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkwYTFjYzMzZjhlNGRiZjE5OGVkNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCUNFMTg2
NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFy
a2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhvbGRpbmdUYW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBNTAxRDIyRDUz
NTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4MjQwREJFQjkwMDZFRDQ0MyAv
KiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xv
cklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1
MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJCUNFMTg2NjQzMUY3MkU1QjQw
MEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1MzUwOTAwQ0JDOTI3IC8qIERP
TVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGltZXJIb2xkaW5nVGFuay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRTIyRDUzNTA5MDBDQkM5Mjcg
LyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UaW1lckhv
bGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNTMyNDBE
QkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwNjIs
NiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9u
RWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMxMzg5NDMwMDhCRUY0QiAvKiBU
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0
NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJCQkJQ0UyMTIxNTMyNDBEQkQz
MDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLywKIAkJCQlBNTQxNkZFMzE4
ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAgKi8sCiAJCQkJ
QTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAq
LywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJRTREOTg4QjQxN0JGRDFGNjAw
ODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzE4REE1
OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3
QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdB
OUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0MjcyOTg4NTAzN2IzNGY5OGJmN2U0Li5kYTgwNDRk
NzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRG
b3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNmM2ZDgzYTcyOGYz
MDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uMGFlNDEwNDUxZWJkNDk1YWZjYWQzN2Q2YTEy
OTc4YmJhNWYzY2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMTAsNiArMTEw
LDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0RXZl
bnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJU
eXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0z
MzA5LDYgKzMzMTAsNDggQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAgIHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9u
LnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
XDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omlu
c2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChtX2Zy
YW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
UmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIEZJ
WE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KCkuIFNl
ZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0ND4uCisgICAg
ZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGZhbHNlKTsKKworICAgIGF1dG8gcmFuZ2Ug
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5n
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBsYWNlaG9sZGVyID0gVGV4
dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzaXplKTsKKyAgICByYW5nZS0+
aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vob2xkZXIucHRyKCkpLCBw
b3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5wdHIoKSkgfTsKKyAgICBtX2ZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0
U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSk7CisKKyAgICByZXR1cm4gcGxhY2Vo
b2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoVGV4dFBsYWNl
aG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJUKHBsYWNlaG9sZGVyLmlz
Q29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3Vt
ZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUg
dGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVzdCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGVs
ZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRvIHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCA9
IG1ha2VSZWZQdHIocGxhY2Vob2xkZXIucm9vdEVkaXRhYmxlRWxlbWVudCgpKTsKKyAgICBhdXRv
IHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRlciA9IHBvc2l0aW9uQmVmb3JlTm9kZSgmcGxh
Y2Vob2xkZXIpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworCisgICAgLy8gRklYTUU6IFNh
dmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwbGFj
ZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0ZXh0IGlu
c2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAgIC8vIFRvIG1hdGNoIHRo
ZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRleHQgaW5zZXJ0aW9uIHBv
aW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNlIHRvIGJlLgorICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50LT5m
b2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVudCkKKyAgICAgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2F2ZWRQb3NpdGlvbkJlZm9yZVBsYWNlaG9s
ZGVyLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoVXNlclRyaWdn
ZXJlZCkpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VDYXJldFdpZHRoKEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFdpZHRoIGFkanVzdG1lbnQgZG9lc24ndCB3b3Jr
IGZvciByb3RhdGVkIHRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmODY3N2IzMThl
OGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgwNWI0NTNlLi5lMDM3OGFlYjdhOTJiNTJhYTVkZDljN2I5
ZTk1MGExZmUwNGU1ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgyLDYgKzgyLDcg
QEAgY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dDsKIGNsYXNzIFRleHRDaGVja2Vy
Q2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVGV4dFBsYWNlaG9sZGVyRWxlbWVudDsK
IAogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwpA
QCAtNTQ5LDYgKzU1MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxI
VE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRleHRQbGFj
ZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkxM2E2NDkzMWQx
MDczOTNiYWFhMGI2MjM1ODVkM2I1YTA1YWEyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dFBs
YWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKworUmVmPFRleHRQbGFjZWhvbGRlckVsZW1l
bnQ+IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IExheW91dFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFBs
YWNlaG9sZGVyRWxlbWVudCB7IGRvY3VtZW50LCBzaXplIH0pOworfQorCitUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgTGF5b3V0U2l6ZSYgc2l6ZSkKKyAgICA6IEhUTUxEaXZFbGVtZW50IHsgSFRNTE5hbWVzOjpk
aXZUYWcsIGRvY3VtZW50IH0KK3sKKyAgICAvLyBGSVhNRTogTW92ZSB0byBVc2VyIEFnZW50IHN0
eWxlc2hlZXQuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA4NzQ1Pi4KKyAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9jaywg
ZmFsc2UpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFs
aWduLCBDU1NWYWx1ZUJvdHRvbSwgZmFsc2UpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NWYWx1ZUhpZGRlbiwgdHJ1ZSk7CisgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndpZHRoKCksIENTU1VuaXRU
eXBlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWln
aHQsIHNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworfQorCithdXRvIFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IEluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0Cit7CisgICAgaWYgKGluc2VydGlvblR5cGUudHJlZVNjb3Bl
Q2hhbmdlZCkgeworICAgICAgICBpZiAoYXV0byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihwYXJl
bnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcihmYWxzZSk7Cisg
ICAgfQorICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5z
ZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworfQorCit2b2lkIFRleHRQbGFjZWhv
bGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7CisgICAgaWYgKHJlbW92
YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9
IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2Fz
dDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFj
ZWhvbGRlcih0cnVlKTsKKyAgICB9CisgICAgSFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
UGxhY2Vob2xkZXJFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkNjhlODE2NjVlNmQ4ZWVlZmZjMWU2
Y2M0ZWFlNmMxMzg5NTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTERpdkVsZW1lbnQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFBs
YWNlaG9sZGVyRWxlbWVudCk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBMYXlvdXRTaXplJik7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0
IExheW91dFNpemUmKTsKKworICAgIGJvb2wgaXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1
bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFy
ZW50T2ZJbnNlcnRlZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihS
ZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgZmluYWw7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5p
c1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2Rl
KSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNDkyZGYyZmM3YzdmMTlmYzNlOWI5YjE0MzYzNGYwN2ViMjk4ZDVlYi4uZjA5MjM5NmY2ZGEz
ODc4NzVmMDEzY2ExYjZmYTI4NGZkOGE1ZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUu
aCIKICNpbmNsdWRlICJUeXBlQ29udmVyc2lvbnMuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgpAQCAtMTQzNiw2ICsxNDM3LDE3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRDYW5T
aG93UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCwgYm9vbCBjYW5TaG93UGxhY2Vob2xkZXIp
CiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KS5z
ZXRDYW5TaG93UGxhY2Vob2xkZXIoY2FuU2hvd1BsYWNlaG9sZGVyKTsKIH0KIAorRWxlbWVudCog
SW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoSW50
U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0KCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpyZW1v
dmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoaXM8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGZyYW1lKCktPmVkaXRvcigpLnJl
bW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVt
ZW50KSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSkKIHsKICAg
ICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9yVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggODE1MjZlOWUyZDdiODMyOTk1MGFmOTFiMTNiM2UwNDdiMjEyMDk5Ni4uODk4
NGU5ZDAzODMxYmVhZjZiOTIzYTkwOTQ3MjhiZWRiZmFkNzFkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0yMzgsNiArMjM4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyB2aXNp
YmxlUGxhY2Vob2xkZXIoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2FuU2hvd1BsYWNlaG9sZGVy
KEVsZW1lbnQmLCBib29sKTsKIAorICAgIEVsZW1lbnQqIGluc2VydFRleHRQbGFjZWhvbGRlcihp
bnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVs
ZW1lbnQmKTsKKwogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihIVE1MSW5wdXRF
bGVtZW50JiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICAgICBFeGNlcHRpb25PcjxWZWN0
b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0
ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAppbmRleCBiZDA3MTZjODM4ZDQzYmU2NDFkYTVjZTViZDU3MTFjMzgzODkzMTM4Li41YmJlMDRk
ODljNDQ5YWZkZjZjODFhMDY1MmY4NmI4YmI0N2VjYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCkBAIC0zMDksNiArMzA5LDkgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7
CiAKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQsIGJvb2xl
YW4gY2FuU2hvd1BsYWNlaG9sZGVyKTsKIAorICAgIEVsZW1lbnQgaW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhv
bGRlcihFbGVtZW50IGVsZW1lbnQpOworCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8g
cmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4dCwgUmFuZ2U/IHJlZmVyZW5jZVJhbmdlLCBzZXF1
ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVu
c2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8
RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRGaW5kTWF0Y2hlcyhET01TdHJpbmcg
dGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY5Njc2MzEzYWM2MjVmZTYwZGU5ZmUzMGYxYTA0Yzhm
MjE5OTQyNjUuLmY4ODE5YTk1MTA4NDQzOGM4NTA0ZWY1NzJmZWQ1OGUzYjg4ZTUzYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MTAsNiArNzEwLDkgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzZXRTaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2VydFRl
eHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAg
dm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgZG91YmxlIGRpc3BsYXllZENv
bnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0
ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuZXhw
b3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2Jz
Y3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWZh
ZTk3NTI2NGJiZTQ5MzI1ODg1ODRlMjllZjRhZWQ0YWQ2OWU0Zi4uYjVmMGU2NTZlOWZiMzE5NDdi
ZmNhYmQwN2E0ZTBlYjBiYzRjMDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NSw2ICs2NSw3IEBA
CiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldL
U3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgogI2ltcG9y
dCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgogI2ltcG9ydCAiV0tUaW1lUGlja2VyVmlld0NvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTI5MSw3ICsyOTIs
NiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhSZWN0OihDR1JlY3QpcG9z
aXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGludGVyZmFjZSBXS0F1dG9jb3JyZWN0aW9uUmVjdHMg
OiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwogKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0
b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENHUmVjdDooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0Q0dS
ZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5kCkBAIC03NDM2LDYgKzc0MzYsMjcgQEAgLSAodm9p
ZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0aENvbnRleHRSZXF1ZXN0
OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlmCiAKKy0gKHZvaWQpaW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVRl
eHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSB7IHNpemUgfSwgW3dlYWtTZWxmID0gV2Vh
a09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVu
dENvbnRleHQ+JiBwbGFjZWhvbGRlcikgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFr
U2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8ICFbc3Ryb25nU2VsZiB3ZWJW
aWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5p
bCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQgcGxhY2Vob2xkZXJUb1VzZSB7ICpwbGFjZWhvbGRlciB9OworICAgICAgICBw
bGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxmIGNvbnZlcnRSZWN0OnBs
YWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0IGZyb21WaWV3OltzdHJvbmdTZWxmIHdlYlZpZXdd
XTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tUZXh0UGxhY2Vob2xkZXIgYWxsb2Nd
IGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJUb1VzZV0gYXV0b3JlbGVhc2VdKTsK
KyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNl
aG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbEluc2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ3Pi4KKyAgICBpZiAo
YXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhv
bGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09m
UGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRlbXMoTlNBcnJheTxOU0l0
ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50
U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRQbGFj
ZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YjMxMzNhYjJjZmM0YzBhOWJmMzQ5ZjE0YzJjYjllNGRh
MjA4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKK30KKworQGludGVyZmFjZSBXS1RleHRQ
bGFjZWhvbGRlciA6IFVJVGV4dFBsYWNlaG9sZGVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYpY29udGV4dDsK
KworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYgZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0
UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vo
b2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1OGQ3YmU1NjAzNTU3NmU4YjBmYTk0ZDllNzg0OTk5NTU3
ODFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Rl
eHRQbGFjZWhvbGRlci5tbQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgorI2ltcG9ydCA8
V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0UGxhY2Vo
b2xkZXIgeworICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IF9lbGVtZW50Q29udGV4dDsKK30K
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRd
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZWxlbWVudENvbnRleHQgPSBjb250ZXh0Owor
ICAgIHJldHVybiBzZWxmOworfQorCistIChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYp
ZWxlbWVudENvbnRleHQKK3sKKyAgICByZXR1cm4gX2VsZW1lbnRDb250ZXh0OworfQorCistIChO
U0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3QgKj4gKilyZWN0cworeworICAgIHJldHVybiBAWyBb
W1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aENHUmVjdDpfZWxlbWVudENvbnRl
eHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFzZV0gXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tUZXh0U2VsZWN0aW9uUmVjdC5oCmluZGV4IDhkNThmZTFmYTZiZjQ0YzA3YjI4MDdlZWZiNzVh
MzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkwNjI4NTcwZGRkZDVjYTQyNmJlOWYyNWYwMGYyYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3Qu
aApAQCAtMjMsOCArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNwcmFnbWEgb25jZQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1LDYgKzMzLDcgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsK
IAogQGludGVyZmFjZSBXS1RleHRTZWxlY3Rpb25SZWN0IDogVUlUZXh0U2VsZWN0aW9uUmVjdAog
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVjdClyZWN0OwogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVjdDooY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVj
dCYpc2VsZWN0aW9uUmVjdDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQppbmRleCA5OTEwMzM1ZmI1YjU1MTA5OGM0Mzlh
ODVlNGMxNzk5Njg5NjJlNGYzLi41ODFiN2IzZWMzZjM2MGY3YjZiNjM2MDljYWU3MjE4MDBkNGJl
YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0
aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0aW9uIFdLVGV4dFNlbGVj
dGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3NlbGVjdGlvblJlY3Q7CiB9
CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAgc2VsZWN0aW9uUmVjdC5z
ZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25SZWN0KV07Cit9CisKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVj
dGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcxZGEzYTg4MTVkNDRjMjkyYmYxNTMuLjNjMzI5YzkxYWU4
ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRkNGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNv
bnN0IFN0cmluZyYgbmV3VAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV93ZWJQYWdlSUQpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUm
IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8RWxlbWVudENvbnRl
eHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dFBsYWNlaG9sZGVyIHsgc2l6ZSB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRl
ciB7IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJ
RCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNv
bnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA0Y2E2ODMyMmM5MzUxNjdhYjZhOWJkMjcwYzY4NzdlYWE1YjczNTk2
Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNjOWU2M2FlMDU5ODhlN2Y1NmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzQsNiArMTcz
NCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBC
Q0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNF
MUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NT
UEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCRDEx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9OworCQlDRTIxMjE1RjI0MEVF
NTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1Rl
eHRQbGFjZWhvbGRlci5oICovOyB9OworCQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0g
Ki87IH07CiAJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ1OTQ1
QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovOyB9OwogCQlDRTU1
MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTUwRTEyMjI4MzczQzgwMEQyODc5
MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovOyB9OwogCQlDRTVCNEM4ODIxQjczRDg3MDAyMkU2
NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1QjRDODYyMUI3M0Q4NzAwMjJFNjRGIC8q
IFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCAqLzsgfTsKQEAgLTUwNTEsNiArNTA1
Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlcnRpb25TZXJ2aWNlc1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMDFBNDhFNkM2MDA1NEVG
NzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRDQ1NQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFBNDhFNkM2MDA1NEVGNzQg
LyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
bnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1RDI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0UGxh
Y2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vo
b2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRQbGFjZWhvbGRlci5tbTsgcGF0
aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5oOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUIyNDBGODVC
OTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBwYXRoID0gaW9zL1dLVGV4dFNlbGVjdGlvblJlY3Qu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTUwRTEyMjI4MzczQzgwMEQyODc5
MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNlcnRUZXh0T3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc5OCw2ICs2ODAyLDggQEAKIAkJ
CQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBFNjggLyogV0tTeW50aGV0aWNUYXBHZXN0dXJlUmVjb2du
aXplci5tbSAqLywKIAkJCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1QcmV2
aWV3Vmlldy5oICovLAogCQkJCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2MiAvKiBXS1N5c3RlbVBy
ZXZpZXdWaWV3Lm1tICovLAorCQkJCUNFMjEyMTVEMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQ
bGFjZWhvbGRlci5oICovLAorCQkJCUNFMjEyMTVFMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQ
bGFjZWhvbGRlci5tbSAqLywKIAkJCQlDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0
U2VsZWN0aW9uUmVjdC5oICovLAogCQkJCUNFNDU5NDVCMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1Rl
eHRTZWxlY3Rpb25SZWN0Lm1tICovLAogCQkJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBX
S1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKQEAgLTExMzUyLDYgKzExMzU4LDcg
QEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5w
dXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTY4MThCQkUz
RDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVj
dGlvblJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAv
KiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2
QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2ICsxMjY1NSw3IEBACiAJCQkJNUNBMjZEODMyMTdBRDFC
ODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNFOCAvKiBXS1NoYXJlU2hlZXQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QTc4RkYzMzIyNDE5MTlCMDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTIxMjE2MDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNGVmYjNkYWRkOThlMzc4MjBmZDg4MzBlMjQ4ZDdjY2M0
YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4YzZjZjQ2YzQwZDhkNzEwZTIwOGJhNjA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NDIsNiArNjQyLDkg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0
ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25B
ZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIHJlbW92ZVRleHRQ
bGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNv
bnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Q7
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2OWU3Mjc1MjNkZmZmNjk5MTljZmNmODczZS4uYjRhZWE3
NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBhODYwOGIyZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMTksNiAr
MTE5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVz
dERvY3VtZW50RWRpdGluZ0NvbnRleHQoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29u
dGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0Nv
bnRleHQgcmVzcG9uc2UpIEFzeW5jCiBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW5kKQog
ICAgIFNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sIHNo
b3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbikKKyAgICBJbnNlcnRUZXh0
UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSBzaXplKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3luYworICAgIFJlbW92ZVRleHRQbGFjZWhv
bGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9s
bGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCAyMzRmZjYyMWJjNDJiNDU0ZTQwMDZkOGVmYzU1OGM2YmNjNDk4MmJjLi4x
MTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1ZDVjOWIwNTVkYzI1Mjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI3LDYg
KzEyNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0UGxhY2Vob2xkZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1VzZXJBZ2VudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KQEAgLTQwMDAsNiArNDAwMSwyNCBAQCBib29sIFdl
YlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNv
bnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2Fu
IGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1l
PiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKHNpemUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29u
dGV4dEZvckVsZW1lbnQoKnBsYWNlaG9sZGVyKSA6IFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQg
V2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmIChSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGVsZW1lbnRGb3JD
b250ZXh0KHBsYWNlaG9sZGVyKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpczxUZXh0UGxh
Y2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSk7CisgICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZy
YW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50PigqZWxlbWVudCkpOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVs
dGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2UoKS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIwYWRjNDUwOWQx
NjczNTliZDNmNGNkMWU3MWM3NmE2NDdlZDFhYi4uYjRiY2JjZjEyYjk1MDVhOTNjNTkzZTk4MWQ4
YzNhZjBmMDFmYzgyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTA2ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5z
ZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFuZCBS
eW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGluc2VydGlu
ZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisgICAgICAgICogZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1y
ZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50
LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1m
aWVsZC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90
ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2Vz
L3Rlc3QuY3NzOiBBZGRlZC4KKyAgICAgICAgKEBmb250LWZhY2UpOgorICAgICAgICAoLnRlc3Qp
OgorCiAyMDE5LTA3LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlu
IFdlYktpdDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQt
ZmllbGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xM2YzMDQwYmE2OTY2ZTIyNTc3MTFjZWYxZDNiZGRkY2E3NzFmYzkxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3Zl
LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJp
bml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90
ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxh
Y2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2
aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4g
VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5k
ZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2
YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1p
bnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjU0YzRi
M2Q0ZjA3ZDdiNTUyZDM4NGIyZGE2YzA2NGU3ZjgxNjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgdGhhdCBpcyBp
bnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxseSBsb29rcyBhcyBp
ZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0ZXN0IGNhbiBvbmx5
IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1
dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBD
dXBlcnRpbm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50
QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBV
SUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwg
aW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUu
aW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZG
cm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBsZXQgcGxhY2Vob2xkZXJFbGVtZW50ID0gbnVs
bDsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFy
ZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lk
dGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVk
U3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIHBsYWNlaG9sZGVyRWxl
bWVudCA9IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAg
LyogaGVpZ2h0ICovKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGxhY2Vob2xkZXJFbGVtZW50
KTsKKyAgICB9CisgICAgCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3Iu
CisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlu
cHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnJlbW92ZVRleHRQbGFjZWhvbGRlcihwbGFjZWhvbGRlckVsZW1l
bnQpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRv
LWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTA2NTAxYjI2YzhjZDdjOGYyYzAwZDNkZDEwMGQzOGE4Mjg1Y2ZjYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NU
WVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10
cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9
ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBw
bGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVudGVkaXRhYmxlPC9jb2Rl
PiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIg
b3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xhc3M9InRlc3QiIHN0eWxl
PSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIiBj
b250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvICZuYnNwOyZuYnNwO2Zyb20gQ3VwZXJ0aW5vITwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTg5NDllZDg0MTgxZGMxZDNhNzI1NzJkNzU1ZWE4MjIxMzBhYjdkNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rl
c3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFj
ZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+Y29udGVudGVkaXRhYmxlPC9jb2RlPiBl
bGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3Ig
RHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVzdCIgY2xhc3M9InRlc3QiIHN0eWxlPSJ3
aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIiBjb250
ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvIGZyb20gQ3VwZXJ0aW5vITwvZGl2PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IHRlc3RFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNl
c3Npb24odGVzdEVsZW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50LmZvY3VzKCksIHRlc3RF
bGVtZW50LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IHRlc3RFbGVtZW50
LnRleHRDb250ZW50LmluZGV4T2YoImZyb20iKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0QmFzZUFuZEV4dGVudCh0ZXN0RWxlbWVudC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSwg
dGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9zaXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0g
Zm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQg
Z2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3RFbGVtZW50
LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKDIgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8g
RGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2Fs
bEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHRlc3RFbGVtZW50LmJsdXIoKSwgdGVzdEVs
ZW1lbnQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIv
aW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YzRmZDNkMDc5YWE5OTM5YjBjOWNhYjM4YTZjODQwOGIzY2U1
OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRo
YXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBp
bnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQi
IGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iICAgICAgIj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQt
aW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTEw
NDFkZDM4NmVmZjE2NmU0ODJlMzM0ZTI3NDVjODNiNjIyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1m
aWVsZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4g
YSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRl
c3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUu
PC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHBsYWNlaG9s
ZGVyPSJGQUlMIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50
QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBV
SUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwg
aW5wdXQsICJmb2N1cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CisK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1
c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGgu
CisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5
bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisK
KyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhl
bHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1
dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmYzMxZjMzZTBjOWMxMGFiYTFiOGI3YzUzZDcyNjdiMTVkN2E4MTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNj
YWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIg
aXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
aW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9Imlu
cHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvICAgICAgZnJvbSBDdXBl
cnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRl
eHQtZmllbGQtaW4taWZyYW1lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxNGIyNzMxODkx
Y2RhMjE5NDZhMDcwNzMyZjA1NDYwMWEzOTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFt
ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEu
MCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5z
ZXJ0ZWQgaW50byBhIHRleHQgZmllbGQgaW5zaWRlIGFuIGlmcmFtZS4gVGhpcyB0ZXN0IGNhbiBv
bmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxp
ZnJhbWUgc3JjZG9jPSc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+PC9oZWFkPjxib2R5PjxpbnB1dCBpZD0i
aW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAgICBmcm9tIEN1
cGVydGlubyEiPjwvYm9keT48L2h0bWw+JyB3aWR0aD0iNjAwIiBoZWlnaHQ9IjIwMCI+PC9pZnJh
bWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlm
cmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MWU1ODY3ZTgyNmI0YzJmNTk2NmU1OWM0ODE2OTFlYjRi
NDg5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xk
ZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDE2IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvdGVzdC5jc3MiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8g
YSB0ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
aW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwiIHdpZHRoPSI2
MDAiIGhlaWdodD0iMjAwIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4
dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTgzNTUzYmYxOTI1MTEyZjAwZjg3YWYwNjNlOGI4
NWE3ZDk1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQg
cGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4g
b25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8
aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZy
b20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxl
bWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3Vz
KCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZh
bHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlv
bk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxs
IGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBh
cnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTAp
OworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRo
LCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRl
IHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2
ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVz
dCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQt
aW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3Vy
Y2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYy
YWZlY2JjMTM5YzIyMjhkMTk2OGM4ZGVjYWVmNGRkZDMxNDhjYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8t
dGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAt
LT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlh
bC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0ZXN0LmNzcyI+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0
IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworCisgICAgLy8gRklYTUU6IFVzZSBV
SUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KS4gU2Vl
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ5Pi4KKyAgICBh
d2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9j
dXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQu
dmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0
aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBh
bGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0g
cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAx
MCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lk
dGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhp
ZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9y
RXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5U
ZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
ODkxZGJlMjcwZWQyNWVhNDY5YTg5ZThiOWIzYmUyNGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBA
IC0wLDAgKzEsMTIgQEAKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAg
IHNyYzogdXJsKCIuLi8uLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3Qgewor
ICAgIGZvbnQ6IDI1cHgvMSBBaGVtOworICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAw
JSU7CisgICAgLyogVG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFu
ZCBvdXQuICovCisgICAgY2FyZXQtY29sb3I6IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392835</attachid>
            <date>2020-03-06 18:56:25 -0800</date>
            <delta_ts>2020-03-06 19:03:05 -0800</delta_ts>
            <desc>To land for realz</desc>
            <filename>bug-208661-20200306185625.patch</filename>
            <type>text/plain</type>
            <size>60180</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uOTljNzU4MmVhNzRkNzQyMzBjOTFlNzQ3MmRjZGNj
YTg1ZmZkOWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFu
ZCBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRl
eHQgcGxhY2Vob2xkZXIsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVz
cGFjZToKKyAgICAgICAgaXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQg
aGFzIG5vIHZpc3VhbCBhcHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAg
ICAgICAgICAgIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAg
ICAgICAgICAgICBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVs
ZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVk
LiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlkZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEg
bmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBleGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVs
ZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlubGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxh
Y2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUg
YW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8
dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwgcGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJ
ZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBzaG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRl
eHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9t
IFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVl
MDUuLmJhODk0YzYwMTIxZmIwNTQ1OTAwYmRhMjZjMjIyOTE5ZGQ0OWM0YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEg
dGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIgYW5kIFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlvbnMgLWluc2VydFRl
eHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9sZGVyLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlu
c2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxsSW5zZXJ0VGV4dDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIFVJVGV4
dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQgYW5kIGNhbGwKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9ucy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUZXh0UGxh
Y2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bV0tUZXh0UGxh
Y2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIg
cmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDog
UmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0gaGVyZS4KKyAgICAg
ICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUtQy9DKysgZmlsZXMg
c28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0
IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0
UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92
ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBuZXcg
bWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5kIGFuZCBjYWxsIHRo
ZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDktMTMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2Vi
S2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzIxZmJi
MWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhkMWQxODE3YTNiNzli
OWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcgQEAg
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAog
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkz
NDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkwYTFjYzMzZjhlNGRi
ZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIx
QjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0
MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhv
bGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4MjQw
REJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMg
LyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcw
MEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlF
NDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFE
NzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJCUNF
MTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1MzUw
OTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGlt
ZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRTIy
RDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsg
cGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xv
cklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRF
MiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhCRUY0
QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMxMzg5
NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIxMjE1
NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJCQkJ
Q0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLywK
IAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJRTRE
OTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFF
OUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2
NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFC
N0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0MjcyOTg4NTAzN2IzNGY5
OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5MGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uMGFlNDEwNDUxZWJk
NDk1YWZjYWQzN2Q2YTEyOTc4YmJhNWYzY2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNp
bmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgog
I2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNDggQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRU
ZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAgIHJldHVybiBwbGFp
blRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVoYXZpb3IpLnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplKQor
eworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkg
fTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGZhbHNlKTsKKwor
ICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7
CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBs
YWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzaXpl
KTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vo
b2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5wdHIoKSkgfTsKKyAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSk7CisKKyAg
ICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJU
KHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVu
dCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0YXRlIHNvIHRoYXQg
d2UgY2FuIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVzdCBiZWZvcmUgdGhl
IHBsYWNlaG9sZGVyIGVsZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRvIHNhdmVkUm9vdEVk
aXRhYmxlRWxlbWVudCA9IG1ha2VSZWZQdHIocGxhY2Vob2xkZXIucm9vdEVkaXRhYmxlRWxlbWVu
dCgpKTsKKyAgICBhdXRvIHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRlciA9IHBvc2l0aW9u
QmVmb3JlTm9kZSgmcGxhY2Vob2xkZXIpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworCisg
ICAgLy8gRklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2Vk
IHNpbmNlIHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBp
dCBhZnRlciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAg
IC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRl
eHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNl
IHRvIGJlLgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgp
ICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVu
dCkKKyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2F2ZWRQb3NpdGlv
bkJlZm9yZVBsYWNlaG9sZGVyLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoVXNlclRyaWdnZXJlZCkpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGFwc2VD
YXJldFdpZHRoKEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFdpZHRoIGFkanVzdG1l
bnQgZG9lc24ndCB3b3JrIGZvciByb3RhdGVkIHRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBmODY3N2IzMThlOGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgwNWI0NTNlLi5lMDM3OGFlYjdh
OTJiNTJhYTVkZDljN2I5ZTk1MGExZmUwNGU1ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTgyLDYgKzgyLDcgQEAgY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dDsKIGNs
YXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVGV4dFBsYWNl
aG9sZGVyRWxlbWVudDsKIAogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IEZv
bnRBdHRyaWJ1dGVzOwpAQCAtNTQ5LDYgKzU1MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbnNlcnRFZGl0YWJsZUltYWdlKCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gaW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVRleHRQbGFjZWhvbGRlcihUZXh0UGxhY2Vob2xkZXJFbGVtZW50Jik7CisKIHByaXZh
dGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjkxM2E2NDkzMWQxMDczOTNiYWFhMGI2MjM1ODVkM2I1YTA1YWEyNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQu
Y3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0UGxhY2Vob2xkZXJFbGVtZW50KTsKKworUmVmPFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ+IFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dFBsYWNlaG9sZGVyRWxlbWVudCB7IGRvY3VtZW50LCBzaXplIH0pOworfQor
CitUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKKyAgICA6IEhUTUxEaXZFbGVtZW50
IHsgSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50IH0KK3sKKyAgICAvLyBGSVhNRTogTW92ZSB0
byBVc2VyIEFnZW50IHN0eWxlc2hlZXQuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA4NzQ1
Pi4KKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFs
dWVJbmxpbmVCbG9jaywgZmFsc2UpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZUJvdHRvbSwgZmFsc2UpOworICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBDU1NWYWx1ZUhpZGRlbiwgdHJ1
ZSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBzaXplLndp
ZHRoKCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlIZWlnaHQsIHNpemUuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwor
fQorCithdXRvIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRl
ZFRyZWUpIC0+IEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0Cit7CisgICAgaWYgKGluc2VydGlv
blR5cGUudHJlZVNjb3BlQ2hhbmdlZCkgeworICAgICAgICBpZiAoYXV0byBzaGFkb3dIb3N0ID0g
bWFrZVJlZlB0cihwYXJlbnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgICAgICBkb3duY2FzdDxI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhv
bGRlcihmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworfQorCit2
b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5
cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7
CisgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGF1
dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5zaGFkb3dI
b3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93SG9zdCkpCisgICAg
ICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3Qp
LnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKKyAgICB9CisgICAgSFRNTERpdkVsZW1lbnQ6
OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkNjhlODE2
NjVlNmQ4ZWVlZmZjMWU2Y2M0ZWFlNmMxMzg5NTQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuaApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIVE1MRGl2RWxl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBMYXlvdXRT
aXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudChE
b2N1bWVudCYsIGNvbnN0IExheW91dFNpemUmKTsKKworICAgIGJvb2wgaXNUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgSW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29u
dGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
ZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSkgZmluYWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc1RleHRQbGFjZWhvbGRlckVsZW1lbnQoKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3Jl
OjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxlbWVudD4obm9k
ZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggNDkyZGYyZmM3YzdmMTlmYzNlOWI5YjE0MzYzNGYwN2ViMjk4ZDVl
Yi4uZjA5MjM5NmY2ZGEzODc4NzVmMDEzY2ExYjZmYTI4NGZkOGE1ZGJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTg1LDYgKzE4NSw3IEBACiAjaW5jbHVkZSAiU3R5
bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlICJUeXBlQ29udmVyc2lvbnMuaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMTQzNiw2ICsxNDM3LDE3IEBAIHZvaWQgSW50
ZXJuYWxzOjpzZXRDYW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCwgYm9vbCBjYW5T
aG93UGxhY2Vob2xkZXIpCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50PihlbGVtZW50KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoY2FuU2hvd1BsYWNlaG9sZGVyKTsK
IH0KIAorRWxlbWVudCogSW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQoreworICAgIHJldHVybiBmcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0
UGxhY2Vob2xkZXIoSW50U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0KCk7Cit9CisKK3ZvaWQg
SW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoRWxlbWVudCYgZWxlbWVudCkKK3sKKyAg
ICBpZiAoaXM8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50PihlbGVtZW50KSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xvcklu
Q29sb3JDaG9vc2VyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgY29s
b3JWYWx1ZSkKIHsKICAgICBlbGVtZW50LnNlbGVjdENvbG9yKGNvbG9yVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODE1MjZlOWUyZDdiODMyOTk1MGFmOTFiMTNiM2Uw
NDdiMjEyMDk5Ni4uODk4NGU5ZDAzODMxYmVhZjZiOTIzYTkwOTQ3MjhiZWRiZmFkNzFkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMzgsNiArMjM4LDkgQEAgcHVibGljOgog
ICAgIFN0cmluZyB2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0Q2Fu
U2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmLCBib29sKTsKIAorICAgIEVsZW1lbnQqIGluc2VydFRl
eHRQbGFjZWhvbGRlcihpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcmVtb3ZlVGV4
dFBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKKwogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hv
b3NlcihIVE1MSW5wdXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICAgICBF
eGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0
b3J5SXRlbSgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZvcm1Db250cm9sU3RhdGVPZlBy
ZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCBiZDA3MTZjODM4ZDQzYmU2NDFkYTVjZTViZDU3MTFjMzgz
ODkzMTM4Li41YmJlMDRkODljNDQ5YWZkZjZjODFhMDY1MmY4NmI4YmI0N2VjYjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMDksNiArMzA5LDkgQEAgZW51bSBDb21w
b3NpdGluZ1BvbGljeSB7CiAKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRlcihFbGVtZW50
IGVsZW1lbnQsIGJvb2xlYW4gY2FuU2hvd1BsYWNlaG9sZGVyKTsKIAorICAgIEVsZW1lbnQgaW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHJl
bW92ZVRleHRQbGFjZWhvbGRlcihFbGVtZW50IGVsZW1lbnQpOworCiAgICAgW01heVRocm93RXhj
ZXB0aW9uXSBSYW5nZT8gcmFuZ2VPZlN0cmluZyhET01TdHJpbmcgdGV4dCwgUmFuZ2U/IHJlZmVy
ZW5jZVJhbmdlLCBzZXF1ZW5jZTxET01TdHJpbmc+IGZpbmRPcHRpb25zKTsKICAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcg
dGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRj
aGVzKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRGaW5kTWF0
Y2hlcyhET01TdHJpbmcgdGV4dCwgc2VxdWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY5Njc2MzEzYWM2MjVmZTYw
ZGU5ZmUzMGYxYTA0YzhmMjE5OTQyNjUuLmY4ODE5YTk1MTA4NDQzOGM4NTA0ZWY1NzJmZWQ1OGUz
Yjg4ZTUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MTAs
NiArNzEwLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBz
ZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAg
ICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mKT4mJik7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgZG91
YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggMWZhZTk3NTI2NGJiZTQ5MzI1ODg1ODRlMjllZjRhZWQ0YWQ2OWU0Zi4uYjVm
MGU2NTZlOWZiMzE5NDdiZmNhYmQwN2E0ZTBlYjBiYzRjMDUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIu
aCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQg
IldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhv
bGRlci5oIgogI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVjdC5oIgogI2ltcG9ydCAiV0tUaW1l
UGlja2VyVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIK
QEAgLTI5MSw3ICsyOTIsNiBAQCArIChXS1RleHRQb3NpdGlvbiAqKXRleHRQb3NpdGlvbldpdGhS
ZWN0OihDR1JlY3QpcG9zaXRpb25SZWN0OwogCiBAZW5kCiAKLQogQGludGVyZmFjZSBXS0F1dG9j
b3JyZWN0aW9uUmVjdHMgOiBVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cwogKyAoV0tBdXRvY29ycmVj
dGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhGaXJzdENHUmVjdDooQ0dSZWN0KWZp
cnN0UmVjdCBsYXN0Q0dSZWN0OihDR1JlY3QpbGFzdFJlY3Q7CiBAZW5kCkBAIC03NDM2LDYgKzc0
MzYsMjcgQEAgLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgd2l0
aENvbnRleHRSZXF1ZXN0OihVSVdLRG9jdW1lbnRSZXEKIAogI2VuZGlmCiAKKy0gKHZvaWQpaW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyV2l0aFNpemU6KENHU2l6ZSlzaXplIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShVSVRleHRQbGFjZWhvbGRlciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IF9wYWdlLT5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSB7IHNpemUgfSwg
W3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgeworICAgICAgICBhdXRvIHN0
cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8ICFb
c3Ryb25nU2VsZiB3ZWJWaWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXJUb1VzZSB7ICpwbGFjZWhvbGRl
ciB9OworICAgICAgICBwbGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVjdCA9IFtzdHJvbmdTZWxm
IGNvbnZlcnRSZWN0OnBsYWNlaG9sZGVyVG9Vc2UuYm91bmRpbmdSZWN0IGZyb21WaWV3OltzdHJv
bmdTZWxmIHdlYlZpZXddXTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tUZXh0UGxh
Y2Vob2xkZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudENvbnRleHQ6cGxhY2Vob2xkZXJUb1VzZV0g
YXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVUZXh0UGxhY2Vob2xk
ZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIgd2lsbEluc2VydFRleHQ6KEJPT0wp
d2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB3aWxsSW5z
ZXJ0VGV4dC4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NzQ3Pi4KKyAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vob2xkZXIgPSBkeW5hbWljX29iamNfY2Fz
dDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQorICAgICAgICBfcGFnZS0+cmVtb3Zl
VGV4dFBsYWNlaG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250ZXh0LCBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJ
bnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXRl
bXMoTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycykKIHsKICAgICBWZWN0
b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1RleHRQbGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YjMxMzNhYjJjZmM0YzBhOWJm
MzQ5ZjE0YzJjYjllNGRhMjA4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKK30KKworQGlu
dGVyZmFjZSBXS1RleHRQbGFjZWhvbGRlciA6IFVJVGV4dFBsYWNlaG9sZGVyCisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYpY29udGV4dDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQ7CisKK0BlbmQKKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0UGxhY2Vob2xkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1OGQ3YmU1NjAzNTU3NmU4YjBm
YTk0ZDllNzg0OTk5NTU3ODFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRQbGFjZWhvbGRlci5tbQpAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1RleHRQbGFjZWhvbGRlci5oIgor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiV0tUZXh0U2VsZWN0aW9uUmVj
dC5oIgorI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgorCitAaW1wbGVtZW50YXRp
b24gV0tUZXh0UGxhY2Vob2xkZXIgeworICAgIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IF9lbGVt
ZW50Q29udGV4dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRWxlbWVudENvbnRleHQ6
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiljb250ZXh0Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzZWxmIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZWxlbWVudENvbnRl
eHQgPSBjb250ZXh0OworICAgIHJldHVybiBzZWxmOworfQorCistIChjb25zdCBXZWJDb3JlOjpF
bGVtZW50Q29udGV4dCYpZWxlbWVudENvbnRleHQKK3sKKyAgICByZXR1cm4gX2VsZW1lbnRDb250
ZXh0OworfQorCistIChOU0FycmF5PFVJVGV4dFNlbGVjdGlvblJlY3QgKj4gKilyZWN0cworewor
ICAgIHJldHVybiBAWyBbW1tXS1RleHRTZWxlY3Rpb25SZWN0IGFsbG9jXSBpbml0V2l0aENHUmVj
dDpfZWxlbWVudENvbnRleHQuYm91bmRpbmdSZWN0XSBhdXRvcmVsZWFzZV0gXTsKK30KKworQGVu
ZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oCmluZGV4IDhkNThmZTFmYTZiZjQ0
YzA3YjI4MDdlZWZiNzVhMzAzNmMyOWFlZDAuLmU2NTY2M2UwMDkwNjI4NTcwZGRkZDVjYTQyNmJl
OWYyNWYwMGYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1Rl
eHRTZWxlY3Rpb25SZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFNlbGVjdGlvblJlY3QuaApAQCAtMjMsOCArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KQEAgLTM1LDYgKzMzLDcgQEAgY2xhc3Mg
U2VsZWN0aW9uUmVjdDsKIAogQGludGVyZmFjZSBXS1RleHRTZWxlY3Rpb25SZWN0IDogVUlUZXh0
U2VsZWN0aW9uUmVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVjdCly
ZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2VsZWN0aW9uUmVjdDooY29uc3QgV2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdCYpc2VsZWN0aW9uUmVjdDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQppbmRleCA5OTEwMzM1
ZmI1YjU1MTA5OGM0MzlhODVlNGMxNzk5Njg5NjJlNGYzLi41ODFiN2IzZWMzZjM2MGY3YjZiNjM2
MDljYWU3MjE4MDBkNGJlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5tbQpAQCAtMzQsNiArMzQsMTMgQEAgQGltcGxlbWVudGF0
aW9uIFdLVGV4dFNlbGVjdGlvblJlY3QgewogICAgIFdlYkNvcmU6OlNlbGVjdGlvblJlY3QgX3Nl
bGVjdGlvblJlY3Q7CiB9CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENHUmVjdDooQ0dSZWN0
KXJlY3QKK3sKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3Q7CisgICAg
c2VsZWN0aW9uUmVjdC5zZXRSZWN0KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwor
ICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFNlbGVjdGlvblJlY3Q6V1RGTW92ZShzZWxlY3Rpb25S
ZWN0KV07Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0
IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmKXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDhiNGUwNDkzYzVhNmE5NzZjMzcxZGEzYTg4MTVkNDRjMjkyYmYx
NTMuLjNjMzI5YzkxYWU4ZGU1OTI0NTQ1NTFiMDhlM2FmZTEwZjRkNGU3ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDU3LDYgKzQ1
NywyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJp
bmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV93
ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9u
YWw8RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dFBsYWNlaG9sZGVyIHsg
c2l6ZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250
ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcHJvY2Vzcy0+
Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92
ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX3dlYlBhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2E2ODMyMmM5MzUxNjdhYjZhOWJkMjcw
YzY4NzdlYWE1YjczNTk2Li4yODdjMDUwZDY1M2UxNGI3YzVjOGNjOWU2M2FlMDU5ODhlN2Y1NmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3MzQsNiArMTczNCw4IEBACiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJ
LmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYw
MDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8q
IFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oICovOyB9Owor
CQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjEyMTVEMjQwRUU1NzEw
MDZFRDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovOyB9OworCQlDRTIxMjE2MDI0MEVFNTcx
MDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIubW0gKi87IH07CiAJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1Rl
eHRTZWxlY3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTQ1OTQ1QTI0MEY4NUI5MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5o
ICovOyB9OwogCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTUwRTEy
MjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovOyB9OwogCQlDRTVCNEM4
ODIxQjczRDg3MDAyMkU2NEYgLyogV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1QjRDODYyMUI3
M0Q4NzAwMjJFNjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCAqLzsgfTsK
QEAgLTUwNTEsNiArNTA1Myw4IEBACiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJE
MDFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRDQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJEMTFB
NDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRJbnB1dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tUZXh0UGxhY2Vob2xkZXIuaDsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMg
LyogV0tUZXh0UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRQbGFj
ZWhvbGRlci5tbTsgcGF0aCA9IGlvcy9XS1RleHRQbGFjZWhvbGRlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVj
dGlvblJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5oOyBwYXRoID0g
aW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0U0NTk0NUIyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tOyBwYXRoID0gaW9zL1dLVGV4
dFNlbGVjdGlvblJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTUwRTEy
MjI4MzczQzgwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNlcnRUZXh0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc5OCw2
ICs2ODAyLDggQEAKIAkJCQkyNkYxMEJFNzE5MTg3RTJFMDAxRDBFNjggLyogV0tTeW50aGV0aWNU
YXBHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkzMTZCOEI2MjIwNTRCNTU4MDBCRDRBNjIg
LyogV0tTeXN0ZW1QcmV2aWV3Vmlldy5oICovLAogCQkJCTMxNkI4QjYxMjA1NEI1NTgwMEJENEE2
MiAvKiBXS1N5c3RlbVByZXZpZXdWaWV3Lm1tICovLAorCQkJCUNFMjEyMTVEMjQwRUU1NzEwMDZF
RDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5oICovLAorCQkJCUNFMjEyMTVFMjQwRUU1NzEwMDZF
RDQ0MyAvKiBXS1RleHRQbGFjZWhvbGRlci5tbSAqLywKIAkJCQlDRTQ1OTQ1QTI0MEY4NUI5MDA3
ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oICovLAogCQkJCUNFNDU5NDVCMjQwRjg1Qjkw
MDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovLAogCQkJCTcxQTY3NkE0MjJDNjIz
MTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKQEAgLTEx
MzUyLDYgKzExMzU4LDcgQEAKIAkJCQkyREQ2N0EzNTFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0
RmluZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJC
QTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQ
bGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlG
IC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjZGQzAxMjAz
MDIxOTYwMDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJl
UmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY0OCw2ICsxMjY1NSw3IEBACiAJCQkJ
NUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFEQjAxOTQ0MjExQ0YwMDUwMDlGQjNFOCAvKiBXS1NoYXJlU2hlZXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc4RkYzMzIyNDE5MTlCMDA5NjQ4M0UgLyogV0tTdG9y
YWdlQWNjZXNzQWxlcnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRTIxMjE2MDI0MEVFNTcxMDA2
RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNGVmYjNkYWRkOThlMzc4MjBm
ZDg4MzBlMjQ4ZDdjY2M0YWQ5MjA1Li43MDdmYzZiZGE0MjM5ODU4YzZjZjQ2YzQwZDhkNzEwZTIw
OGJhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02NDIsNiArNjQyLDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNl
bGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJy
ZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1
cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAorICAgIHZvaWQgaW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2
b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBXZWJDb3JlOjpGbG9hdFNpemUg
c2NyZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3Jl
ZW5TaXplKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmFlMWNlMmJjYmE1Yjc2OWU3Mjc1MjNkZmZmNjk5MTlj
ZmNmODczZS4uYjRhZWE3NTU1NGRhNzU0ZjgxMDQ5MWEzNGU0MjBhODYwOGIyZDRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0xMTksNiArMTE5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgUmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoc3RydWN0IFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQgcmVzcG9uc2UpIEFzeW5jCiBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZSBjb21tYW5kKQogICAgIFNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlcklu
c2VydGlvbihib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbikK
KyAgICBJbnNlcnRUZXh0UGxhY2Vob2xkZXIoV2ViQ29yZTo6SW50U2l6ZSBzaXplKSAtPiAoT3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3luYworICAgIFJl
bW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vo
b2xkZXIpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRp
b24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMzRmZjYyMWJjNDJiNDU0ZTQwMDZkOGVmYzU1
OGM2YmNjNDk4MmJjLi4xMTA5MzA5YjllMDg1YTE2Y2U0ZmRhY2Y1ZDVjOWIwNTVkYzI1Mjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtMTI3LDYgKzEyNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGll
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RleHRJdGVyYXRvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0UGxhY2Vob2xkZXJFbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNp
YmxlVW5pdHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KQEAgLTQwMDAsNiArNDAw
MSwyNCBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRa
b29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1heSBydW4gSmF2YVNj
cmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUgZGVzdHJ1Y3Rpb24u
CisgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBmcmFtZS0+ZWRpdG9y
KCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKHNpemUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBs
YWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9sZGVyKSA6IFdURjo6bnVsbG9w
dCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCA9IGVsZW1lbnRGb3JDb250ZXh0KHBsYWNlaG9sZGVyKSkgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpczxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PihlbGVtZW50KSk7CisgICAgICAgIGlmIChS
ZWZQdHI8RnJhbWU+IGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZVRleHRQbGFjZWhvbGRlcihkb3duY2FzdDxUZXh0
UGxhY2Vob2xkZXJFbGVtZW50PigqZWxlbWVudCkpOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworfQorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2
NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8RnJhbWU+IGZyYW1lID0g
Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMzIwYWRjNDUwOWQxNjczNTliZDNmNGNkMWU3MWM3NmE2NDdlZDFhYi4uMGE3ZTQ3ZWViMTA0
YzNmNWQ0ZGU1NDNhNmM2NjE1ZDA1MGQ5NWE4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIw
LTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyIGFuZCBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IGluc2VydGluZyBhbmQgcmVtb3ZpbmcgYSBwbGFjZWhvbGRlciB3b3JrLgorCisgICAg
ICAgICogZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVtb3ZlLWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxk
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRl
ci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy90ZXh0LXBsYWNl
aG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3Qu
Y3NzOiBBZGRlZC4KKyAgICAgICAgKEBmb250LWZhY2UpOgorICAgICAgICAoLnRlc3QpOgorCiAy
MDE5LTA3LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYktp
dDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmll
bGQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xM2YzMDQwYmE2OTY2ZTIyNTc3MTFjZWYxZDNiZGRkY2E3NzFmYzkxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVt
b3ZlLWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQg
cGxhY2Vob2xkZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVs
ZCB2aXN1YWxseSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0
aC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBS
ZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0
IiB2YWx1ZT0iSGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJl
bW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFj
ZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZjU0YzRiM2Q0ZjA3ZDdiNTUyZDM4NGIyZGE2YzA2NGU3ZjgxNjYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1hbmQtcmVt
b3ZlLWludG8tdGV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFs
LXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNz
cyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xk
ZXIgdGhhdCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGEgdGV4dCBmaWVsZCB2aXN1YWxs
eSBsb29rcyBhcyBpZiBpdCBuZXZlciB3YXMgaW5zZXJ0ZWQgdG8gYmVnaW4gd2l0aC4gVGhpcyB0
ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVl
LjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0i
SGVsbG8gZnJvbSBDdXBlcnRpbm8hIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0
aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAg
ICAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5w
dXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0g
aW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIpOworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdl
KHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9mRnJvbSk7CisKKyAgICBsZXQgcGxhY2Vob2xkZXJF
bGVtZW50ID0gbnVsbDsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBC
ZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUg
dGhlIHNhbWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93
LmdldENvbXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIHBs
YWNlaG9sZGVyRWxlbWVudCA9IGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGds
eXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGxhY2Vo
b2xkZXJFbGVtZW50KTsKKyAgICB9CisgICAgCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRl
IHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2
ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnJlbW92ZVRleHRQbGFjZWhvbGRlcihwbGFj
ZWhvbGRlckVsZW1lbnQpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9s
ZGVyL2luc2VydC1pbnRvLWNvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxl
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2NTAxYjI2YzhjZDdjOGYyYzAwZDNkZDEwMGQz
OGE4Mjg1Y2ZjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1w
bGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
dXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhp
cyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgPGNvZGU+
Y29udGVudGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVu
IGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBpZD0idGVz
dCIgY2xhc3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvICZuYnNwOyZu
YnNwO2Zyb20gQ3VwZXJ0aW5vITwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWNvbnRlbnQt
ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg5NDllZDg0MTgxZGMx
ZDNhNzI1NzJkNzU1ZWE4MjIxMzBhYjdkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0
bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEg
PGNvZGU+Y29udGVudGVkaXRhYmxlPC9jb2RlPiBlbGVtZW50LiBUaGlzIHRlc3QgY2FuIG9ubHkg
YmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGRpdiBp
ZD0idGVzdCIgY2xhc3M9InRlc3QiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7
IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIiBjb250ZW50ZWRpdGFibGU9InRydWUiPkhlbGxvIGZy
b20gQ3VwZXJ0aW5vITwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgbGV0IHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qi
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFj
dGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24odGVzdEVsZW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IHRlc3RFbGVtZW50LmZvY3VzKCksIHRlc3RFbGVtZW50LCAiZm9jdXMiKTsKKworICAgIGxl
dCBwb3NpdGlvbk9mRnJvbSA9IHRlc3RFbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoImZyb20i
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXN0RWxlbWVu
dC5maXJzdENoaWxkLCBwb3NpdGlvbk9mRnJvbSwgdGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwgcG9z
aXRpb25PZkZyb20pOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8g
QmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZl
IHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHRlc3RFbGVtZW50LCBudWxsKS5mb250U2l6ZSwgMTApOworICAg
ICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDIgKiBnbHlwaFdpZHRoLCAwIC8q
IGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBj
dXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgp
ID0+IHRlc3RFbGVtZW50LmJsdXIoKSwgdGVzdEVsZW1lbnQsICJibHVyIik7CisKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
cnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1m
aWVsZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVy
L2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YzRmZDNkMDc5YWE5OTM5YjBjOWNhYjM4YTZjODQwOGIzY2U1OGY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5
LXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAt
LT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlh
bC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5j
c3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIHBsYWNlaG9sZGVy
IGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnRvIGEgdGV4
dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9y
IER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBl
PSJ0ZXh0IiB2YWx1ZT0iICAgICAgIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0
LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTEwNDFkZDM4NmVmZjE2
NmU0ODJlMzM0ZTI3NDVjODNiNjIyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1s
CkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
PlRoaXMgdGVzdHMgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgaGlkZGVuIHdoZW4gYSB0ZXh0IHBs
YWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9u
bHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlu
cHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJGQUlM
Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZv
cklucHV0U2Vzc2lvbihpbnB1dCk7CisgICAgZWxzZQorICAgICAgICBhd2FpdCBVSUhlbHBlci5j
YWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJm
b2N1cyIpOworCisgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CisKKyAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2luZyB0aGUg
QWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNhbWUgd2lkdGguCisgICAgICAg
IGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQs
IG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFscy5pbnNlcnRUZXh0UGxhY2Vo
b2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsKKyAgICB9CisKKyAgICAvLyBE
ZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1cigpLCBpbnB1dCwgImJsdXIi
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFmYzMxZjMzZTBjOWMxMGFiYTFiOGI3YzUzZDcyNjdiMTVkN2E4MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4
dC1maWVsZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNj
YWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIg
aXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
aW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9Imlu
cHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvICAgICAgZnJvbSBDdXBl
cnRpbm8hIj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1p
bnRvLXRleHQtZmllbGQtaW4taWZyYW1lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxNGIy
NzMxODkxY2RhMjE5NDZhMDcwNzMyZjA1NDYwMWEzOTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
LWluLWlmcmFtZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFs
LXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNz
cyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xk
ZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQgaW5zaWRlIGFuIGlmcmFtZS4gVGhpcyB0
ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVl
LjwvcD4KKzxpZnJhbWUgc3JjZG9jPSc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+PC9oZWFkPjxib2R5Pjxp
bnB1dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gICAg
ICBmcm9tIEN1cGVydGlubyEiPjwvYm9keT48L2h0bWw+JyB3aWR0aD0iNjAwIiBoZWlnaHQ9IjIw
MCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10
ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MWU1ODY3ZTgyNmI0YzJmNTk2
NmU1OWM0ODE2OTFlYjRiNDg5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVy
IGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVz
dCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48
L3A+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZy
YW1lLmh0bWwiIHdpZHRoPSI2MDAiIGhlaWdodD0iMjAwIj48L2lmcmFtZT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9p
bnNlcnQtaW50by10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTgzNTUz
YmYxOTI1MTEyZjAwZjg3YWYwNjNlOGI4NWE3ZDk1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC5o
dG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRoaXMgdGVzdHMgdGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBh
IHRleHQgZmllbGQuIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5l
ciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIg
dHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCith
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5w
dXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2Fp
dEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxl
dCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1
dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNp
bmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgor
ICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisg
ICAgLy8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxw
ZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQs
ICJibHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvcmVz
b3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmll
bGQtaW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYyYWZlY2JjMTM5YzIyMjhkMTk2OGM4ZGVj
YWVmNGRkZDMxNDhjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4
dC1wbGFjZWhvbGRlci9yZXNvdXJjZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1
dCBpZD0iaW5wdXQiIGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gZnJvbSBD
dXBlcnRpbm8hIj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2FzeW5jIGZ1
bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJpbnB1dCIpOworCisgICAgLy8gRklYTUU6IFVzZSBVSUhlbHBlci5hY3RpdmF0ZUVsZW1l
bnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ5Pi4KKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVu
Y3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuZm9jdXMoKSwgaW5wdXQsICJmb2N1cyIp
OworCisgICAgbGV0IHBvc2l0aW9uT2ZGcm9tID0gaW5wdXQudmFsdWUuaW5kZXhPZigiZnJvbSIp
OworICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uT2ZGcm9tLCBwb3NpdGlvbk9m
RnJvbSk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBCZWNhdXNl
IHdlIGFyZSB1c2luZyB0aGUgQWhlbSBmb250IGFsbW9zdCBhbGwgZ2x5cGhzIGhhdmUgdGhlIHNh
bWUgd2lkdGguCisgICAgICAgIGxldCBnbHlwaFdpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENv
bXB1dGVkU3R5bGUoaW5wdXQsIG51bGwpLmZvbnRTaXplLCAxMCk7CisgICAgICAgIGludGVybmFs
cy5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoNSAqIGdseXBoV2lkdGgsIDAgLyogaGVpZ2h0ICovKTsK
KyAgICB9CisKKyAgICAvLyBEZWZvY3VzIGZpZWxkIHRvIGhpZGUgdGhlIGN1cnNvci4KKyAgICBh
d2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gaW5wdXQuYmx1
cigpLCBpbnB1dCwgImJsdXIiKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFj
ZWhvbGRlci9yZXNvdXJjZXMvdGVzdC5jc3MgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxh
Y2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ODkxZGJlMjcwZWQyNWVh
NDY5YTg5ZThiOWIzYmUyNGZmZTM2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvcmVzb3VyY2VzL3Rlc3QuY3NzCkBAIC0wLDAgKzEsMTIg
QEAKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgIHNyYzogdXJsKCIu
Li8uLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKworLnRlc3QgeworICAgIGZvbnQ6IDI1
cHgvMSBBaGVtOworICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJSU7CisgICAgLyog
VG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLCBtYWtlIHRoZSBjYXJldCBzdGFuZCBvdXQuICovCisg
ICAgY2FyZXQtY29sb3I6IGJsdWU7CisgICAgY29sb3I6IHllbGxvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392837</attachid>
            <date>2020-03-06 19:03:07 -0800</date>
            <delta_ts>2020-03-06 19:03:07 -0800</delta_ts>
            <desc>To land for realz realz</desc>
            <filename>bug-208661-20200306190307.patch</filename>
            <type>text/plain</type>
            <size>60223</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YWJiOWU3NzdiNDk0
ZGFmOTYyNzY4NGNhNGNjZDg1MzMwNWZlYi4uOTljNzU4MmVhNzRkNzQyMzBjOTFlNzQ3MmRjZGNj
YTg1ZmZkOWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5zZXJ0aW5nIGFuZCByZW1vdmluZyBhIHRleHQgcGxhY2Vob2xkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTkzNzEwNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFu
ZCBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgY29uY2VwdCBvZiBhIHRl
eHQgcGxhY2Vob2xkZXIsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBhY3RzIGxpa2Ugd2hpdGVz
cGFjZToKKyAgICAgICAgaXQgdGFrZXMgdXAgc3BhY2UgaW4gdGhlIHBhZ2UgbGF5b3V0LCBidXQg
aGFzIG5vIHZpc3VhbCBhcHBlYXJhbmNlLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKKyAgICAg
ICAgICAgICAgIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVk
aXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNl
cnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdGV4
dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sCisgICAg
ICAgICAgICAgICBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVs
ZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCBjb25zdCk6IEFkZGVk
LiBEZWZhdWx0cyB0byBmYWxzZS4gSSBvdmVycmlkZSB0aGlzCisgICAgICAgIGluIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQuaC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgSW5zZXJ0IGEg
bmV3IHBsYWNlaG9sZGVyIG9yIHJlbW92ZSBhbiBleGlzdGluZyBvbmUuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVs
ZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50KTogU2V0IGlubGluZSBzdHlsZXMgdG8gc2l6ZSB0aGUgcGxh
Y2Vob2xkZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3Rvcik6IElmIHRoZSBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBpbnNpZGUg
YW4KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgKGUuZy4gPGlucHV0PiBvciA8
dGV4dGFyZWE+KSB0aGVuIGhpZGUgdGhlIEhUTUwgcGxhY2Vob2xkZXIgdGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOiBJ
ZiB0aGUgcGxhY2Vob2xkZXIgd2FzIHJlbW92ZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgYW4gSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQgdGhlbiBzaG93IHRoZSBIVE1MIHBsYWNlaG9sZGVyIHRl
eHQuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc2VydFRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIpOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9t
IFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGU0ZTI2MDdjY2E1ZWYxOTNiMTQ4ODgxNjRiMzUwMzgzZDNhZjVl
MDUuLmJhODk0YzYwMTIxZmIwNTQ1OTAwYmRhMjZjMjIyOTE5ZGQ0OWM0YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHJlbW92aW5nIGEg
dGV4dCBwbGFjZWhvbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NjYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MTA3Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIgYW5kIFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICBJbXBsZW1lbnRzIHRoZSBVSVRleHRJbnB1dCBwcm90b2NvbCBmdW5jdGlvbnMgLWluc2VydFRl
eHRQbGFjZWhvbGRlcldpdGhTaXplIGFuZCAtcmVtb3ZlVGV4dFBsYWNlaG9sZGVyLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlu
c2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHJlbW92ZVRleHRQbGFjZWhvbGRlcjp3aWxsSW5zZXJ0VGV4dDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgb2YgdGhlIFVJVGV4
dElucHV0IHByb3RvY29sLiBUaGVzZSBmdW5jdGlvbnMgdHVybiBhcm91bmQgYW5kIGNhbGwKKyAg
ICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViUGFnZVByb3h5IGZ1bmN0aW9ucy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLVGV4dFBsYWNlaG9sZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUZXh0UGxh
Y2Vob2xkZXIgaW5pdFdpdGhFbGVtZW50Q29udGV4dDpdKToKKyAgICAgICAgKC1bV0tUZXh0UGxh
Y2Vob2xkZXIgZWxlbWVudENvbnRleHRdKToKKyAgICAgICAgKC1bV0tUZXh0UGxhY2Vob2xkZXIg
cmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QuaDog
UmVtb3ZlIGFuIHVubmNlc3NhcnkgI3ByYWdtYSBvbmNlIHNpbmNlIEkgYW0gaGVyZS4KKyAgICAg
ICAgVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZnJvbSBPYmplY3RpdmUtQy9DKysgZmlsZXMg
c28gdGhhdCAjcHJhZ21hIGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tOgorICAgICAgICAoLVtXS1RleHRTZWxlY3Rpb25SZWN0
IGluaXRXaXRoQ0dSZWN0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRUZXh0
UGxhY2Vob2xkZXIpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92
ZVRleHRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBuZXcg
bWVzc2FnZXMgdG8gaW5zZXJ0IGFuZCByZW1vdmUgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlbW92ZVRleHRQbGFjZWhvbGRlcik6CisgICAgICAgIFR1cm4gYXJvdW5kIGFuZCBjYWxsIHRo
ZSBjb3JyZXNwb25kaW5nIEVkaXRvciBmdW5jdGlvbnMuCisKIDIwMTktMDktMTMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2Vi
S2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzIxZmJi
MWFkOGE1YWE2YmRhMDliNjNiM2EyYTlkOTk3YzkxMTJmLi5hZGI4NGIwMDhkMWQxODE3YTNiNzli
OWIwNWQ2ZWMxOTk3ZmY0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0OCw2ICsxMzQ4LDcgQEAg
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCitodG1sL3NoYWRvdy9UZXh0UGxh
Y2Vob2xkZXJFbGVtZW50LmNwcAogCiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAog
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkz
NDA1NzIzNjk3YWRlOWJmNTM5Njg1ODkuLjk3MWUwNTFiOWUzZDY0M2FlYTkwYTFjYzMzZjhlNGRi
ZjE5OGVkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQyMzcsNiArNDIzNyw3IEBACiAJCUNFMDhDM0QyMTUyQjU5OUEwMDIx
QjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4QzIgLyogQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0
MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMUE1MDFGMjJENTM1MDkwMENCQzkyNyAvKiBET01UaW1lckhv
bGRpbmdUYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTFBNTAxRDIyRDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjEyMTU4MjQw
REJFQjkwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMg
LyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07CiAJCUNFNTE2OUU3MjFGMUI4NDcw
MEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0U1MTY5RTUyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U1RkEyNTUyMDlF
NDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFE
NzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEzNyw2ICsxNDEzOCw4IEBACiAJCUNF
MTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cmtlZFRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTUwMUQyMkQ1MzUw
OTAwQ0JDOTI3IC8qIERPTVRpbWVySG9sZGluZ1RhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGlt
ZXJIb2xkaW5nVGFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBNTAxRTIy
RDUzNTA5MDBDQkM5MjcgLyogRE9NVGltZXJIb2xkaW5nVGFuay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01UaW1lckhvbGRpbmdUYW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRTIxMjE1NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdG
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsg
cGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTE2OUU1MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xv
cklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTgwNjIsNiArMTgwNjUsOCBAQAogCQkJCTQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRF
MiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovLAogCQkJCTE0MkI5N0M3MTMxMzg5NDMwMDhCRUY0
QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwICovLAogCQkJCTE0MkI5N0M4MTMxMzg5
NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCAqLywKKwkJCQlDRTIxMjE1
NDI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5jcHAgKi8sCisJCQkJ
Q0UyMTIxNTMyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCAqLywK
IAkJCQlBNTQxNkZFMzE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHAgKi8sCiAJCQkJQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuaCAqLywKIAkJCSk7CkBAIC0zMjc4Miw2ICszMjc4Nyw3IEBACiAJCQkJRTRE
OTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFF
OUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODI0QjQ2
NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4QjFC
N0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCAyOGNhZDg5MTIwNmM0ODQ0MmU0MjcyOTg4NTAzN2IzNGY5
OGJmN2U0Li5kYTgwNDRkNzM1NjQ3YjNjMjY3NTM1NTI1ZWI3OGFlN2Y2NTU5MGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5SYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YS4uYmIwNzFkZjlmY2Qy
Yjk3M2NjNTVmYmVkZTE3YTNiYTI2Njc2OTgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNp
bmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgog
I2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVVuaXRzLmgiCkBAIC0zMzA5LDYgKzMzMTAsNDggQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRU
ZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogICAgIHJldHVybiBwbGFp
blRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwgYmVoYXZpb3IpLnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAKK1JlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplKQor
eworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCB7IHRoaXMtPmRvY3VtZW50KCkg
fTsKKworICAgIC8vIEZJWE1FOiBXcml0ZSBpbiB0ZXJtcyBvZiByZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODc0ND4uCisgICAgZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGZhbHNlKTsKKwor
ICAgIGF1dG8gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7
CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHBs
YWNlaG9sZGVyID0gVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzaXpl
KTsKKyAgICByYW5nZS0+aW5zZXJ0Tm9kZShwbGFjZWhvbGRlci5jb3B5UmVmKCkpOworCisgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24geyBwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vo
b2xkZXIucHRyKCkpLCBwb3NpdGlvbkFmdGVyTm9kZShwbGFjZWhvbGRlci5wdHIoKSkgfTsKKyAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSk7CisKKyAg
ICByZXR1cm4gcGxhY2Vob2xkZXI7Cit9CisKK3ZvaWQgRWRpdG9yOjpyZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYgcGxhY2Vob2xkZXIpCit7CisgICAgQVNTRVJU
KHBsYWNlaG9sZGVyLmlzQ29ubmVjdGVkKCkpOworCisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVu
dCB7IHRoaXMtPmRvY3VtZW50KCkgfTsKKworICAgIC8vIFNhdmUgb2ZmIHN0YXRlIHNvIHRoYXQg
d2UgY2FuIHNldCB0aGUgdGV4dCBpbnNlcnRpb24gcG9zaXRpb24gdG8ganVzdCBiZWZvcmUgdGhl
IHBsYWNlaG9sZGVyIGVsZW1lbnQgYWZ0ZXIgcmVtb3ZhbC4KKyAgICBhdXRvIHNhdmVkUm9vdEVk
aXRhYmxlRWxlbWVudCA9IG1ha2VSZWZQdHIocGxhY2Vob2xkZXIucm9vdEVkaXRhYmxlRWxlbWVu
dCgpKTsKKyAgICBhdXRvIHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRlciA9IHBvc2l0aW9u
QmVmb3JlTm9kZSgmcGxhY2Vob2xkZXIpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworCisg
ICAgLy8gRklYTUU6IFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGl0IGhhcyBjaGFuZ2Vk
IHNpbmNlIHRoZSBwbGFjZWhvbGRlciB3YXMgaW5zZXJ0ZWQKKyAgICAvLyBhbmQgcmVzdG9yZSBp
dCBhZnRlciB0ZXh0IGluc2VydGlvbi4KKyAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTsKKworICAg
IC8vIFRvIG1hdGNoIHRoZSBMZWdhY3kgV2ViS2l0IGltcGxlbWVudGF0aW9uLCBzZXQgdGhlIHRl
eHQgaW5zZXJ0aW9uIHBvaW50IHRvIGJlIGJlZm9yZSB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgdXNl
IHRvIGJlLgorICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgp
ICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IHNhdmVkUm9vdEVkaXRhYmxlRWxlbWVu
dCkKKyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbiB7IHNhdmVkUG9zaXRpb25CZWZvcmVQbGFjZWhvbGRlciwgU0VMX0RFRkFVTFRfQUZGSU5J
VFkgfSwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKFVzZXJUcmln
Z2VyZWQpKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGNvbGxhcHNlQ2FyZXRXaWR0aChJbnRS
ZWN0JiByZWN0KQogewogICAgIC8vIEZJWE1FOiBXaWR0aCBhZGp1c3RtZW50IGRvZXNuJ3Qgd29y
ayBmb3Igcm90YXRlZCB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZjg2NzdiMzE4
ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZS4uZTAzNzhhZWI3YTkyYjUyYWE1ZGQ5Yzdi
OWU5NTBhMWZlMDRlNWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Miw2ICs4Miw3
IEBAIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hlY2tl
ckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKK2NsYXNzIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ7
CiAKIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodDsKIHN0cnVjdCBGb250QXR0cmlidXRlczsK
QEAgLTU0OSw2ICs1NTAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4gaW5zZXJ0RWRpdGFibGVJbWFnZSgpOwogCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IGluc2VydFRleHRQbGFjZWhvbGRl
cihjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVUZXh0UGxh
Y2Vob2xkZXIoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5MTNhNjQ5MzFk
MTA3MzkzYmFhYTBiNjIzNTg1ZDNiNWEwNWFhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRQ
bGFjZWhvbGRlckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoVGV4dFBsYWNlaG9sZGVyRWxlbWVudCk7CisKK1JlZjxUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50PiBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBMYXlvdXRTaXplJiBzaXplKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQgeyBkb2N1bWVudCwgc2l6ZSB9KTsKK30KKworVGV4dFBsYWNlaG9s
ZGVyRWxlbWVudDo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IExheW91dFNpemUmIHNpemUpCisgICAgOiBIVE1MRGl2RWxlbWVudCB7IEhUTUxOYW1lczo6
ZGl2VGFnLCBkb2N1bWVudCB9Cit7CisgICAgLy8gRklYTUU6IE1vdmUgdG8gVXNlciBBZ2VudCBz
dHlsZXNoZWV0LiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwODc0NT4uCisgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lQmxvY2ss
IGZhbHNlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbiwgQ1NTVmFsdWVCb3R0b20sIGZhbHNlKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVIaWRkZW4sIHRydWUpOworICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgc2l6ZS53aWR0aCgpLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVp
Z2h0LCBzaXplLmhlaWdodCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKK30KKworYXV0byBUZXh0
UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGlu
c2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdAoreworICAgIGlmIChpbnNlcnRpb25UeXBlLnRyZWVTY29w
ZUNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIocGFy
ZW50T2ZJbnNlcnRlZFRyZWUuc2hhZG93SG9zdCgpKTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ+KHNoYWRvd0hvc3QpKQorICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoZmFsc2UpOwor
ICAgIH0KKyAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGlu
c2VydGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKK30KKwordm9pZCBUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBl
LCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQoreworICAgIGlmIChyZW1v
dmFsVHlwZS50cmVlU2NvcGVDaGFuZ2VkKSB7CisgICAgICAgIGlmIChhdXRvIHNoYWRvd0hvc3Qg
PSBtYWtlUmVmUHRyKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuc2hhZG93SG9zdCgpKTsgaXM8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KHNoYWRvd0hvc3QpKQorICAgICAgICAgICAgZG93bmNh
c3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxh
Y2Vob2xkZXIodHJ1ZSk7CisgICAgfQorICAgIEhUTUxEaXZFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZDY4ZTgxNjY1ZTZkOGVlZWZmYzFl
NmNjNGVhZTZjMTM4OTU0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0UGxhY2Vob2xkZXJFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4dFBsYWNlaG9s
ZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFRleHRQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmLCBjb25z
dCBMYXlvdXRTaXplJik7CisKKyAgICBib29sIGlzVGV4dFBsYWNlaG9sZGVyRWxlbWVudCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBh
cmVudE9mSW5zZXJ0ZWRUcmVlKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3Io
UmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpIGZpbmFs
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlRleHRQbGFjZWhvbGRlckVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu
aXNUZXh0UGxhY2Vob2xkZXJFbGVtZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6RWxlbWVudD4obm9k
ZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkVsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDQ5MmRmMmZjN2M3ZjE5ZmMzZTliOWIxNDM2MzRmMDdlYjI5OGQ1ZWIuLmYwOTIzOTZmNmRh
Mzg3ODc1ZjAxM2NhMWI2ZmEyODRmZDhhNWRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE4NSw2ICsxODUsNyBAQAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJUZXh0UGxhY2Vob2xkZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKQEAgLTE0MzYsNiArMTQzNywxNyBAQCB2b2lkIEludGVybmFsczo6c2V0Q2Fu
U2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgY2FuU2hvd1BsYWNlaG9sZGVy
KQogICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCku
c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNhblNob3dQbGFjZWhvbGRlcik7CiB9CiAKK0VsZW1lbnQq
IEludGVybmFsczo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICByZXR1cm4gZnJhbWUoKS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKElu
dFNpemUgeyB3aWR0aCwgaGVpZ2h0IH0pLmdldCgpOworfQorCit2b2lkIEludGVybmFsczo6cmVt
b3ZlVGV4dFBsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGlzPFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5y
ZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4oZWxl
bWVudCkpOworfQorCiB2b2lkIEludGVybmFsczo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7CiAg
ICAgZWxlbWVudC5zZWxlY3RDb2xvcihjb2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDgxNTI2ZTllMmQ3YjgzMjk5NTBhZjkxYjEzYjNlMDQ3YjIxMjA5OTYuLjg5
ODRlOWQwMzgzMWJlYWY2YjkyM2E5MDk0NzI4YmVkYmZhZDcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMjM4LDYgKzIzOCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmlz
aWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQmKTsKICAgICB2b2lkIHNldENhblNob3dQbGFjZWhvbGRl
cihFbGVtZW50JiwgYm9vbCk7CiAKKyAgICBFbGVtZW50KiBpbnNlcnRUZXh0UGxhY2Vob2xkZXIo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihF
bGVtZW50Jik7CisKICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoSFRNTElucHV0
RWxlbWVudCYsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSk7CiAgICAgRXhjZXB0aW9uT3I8VmVj
dG9yPFN0cmluZz4+IGZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJ
dGVtKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYmQwNzE2YzgzOGQ0M2JlNjQxZGE1Y2U1YmQ1NzExYzM4Mzg5MzEzOC4uNWJiZTA0
ZDg5YzQ0OWFmZGY2YzgxYTA2NTJmODZiOGJiNDdlY2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtMzA5LDYgKzMwOSw5IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kg
ewogCiAgICAgdm9pZCBzZXRDYW5TaG93UGxhY2Vob2xkZXIoRWxlbWVudCBlbGVtZW50LCBib29s
ZWFuIGNhblNob3dQbGFjZWhvbGRlcik7CiAKKyAgICBFbGVtZW50IGluc2VydFRleHRQbGFjZWhv
bGRlcihsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CisgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoRWxlbWVudCBlbGVtZW50KTsKKwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/
IHJhbmdlT2ZTdHJpbmcoRE9NU3RyaW5nIHRleHQsIFJhbmdlPyByZWZlcmVuY2VSYW5nZSwgc2Vx
dWVuY2U8RE9NU3RyaW5nPiBmaW5kT3B0aW9ucyk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBsb25nIGNvdW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHNlcXVlbmNl
PERPTVN0cmluZz4gZmluZE9wdGlvbnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7CiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNvdW50RmluZE1hdGNoZXMoRE9NU3RyaW5n
IHRleHQsIHNlcXVlbmNlPERPTVN0cmluZz4gZmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmOTY3NjMxM2FjNjI1ZmU2MGRlOWZlMzBmMWEwNGM4
ZjIxOTk0MjY1Li5mODgxOWE5NTEwODQ0MzhjODUwNGVmNTcyZmVkNThlM2I4OGU1M2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzEwLDYgKzcxMCw5IEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc2V0U2hvdWxkUmV2ZWFs
Q3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wpOwogCisgICAgdm9pZCBpbnNlcnRU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYpOworICAg
IHZvaWQgcmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGRvdWJsZSBkaXNwbGF5ZWRD
b250ZW50U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUuc2NhbGUoKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRl
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlLmV4
cG9zZWRDb250ZW50UmVjdCgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9i
c2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUudW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFm
YWU5NzUyNjRiYmU0OTMyNTg4NTg0ZTI5ZWY0YWVkNGFkNjllNGYuLmI1ZjBlNjU2ZTlmYjMxOTQ3
YmZjYWJkMDdhNGUwZWIwYmM0YzA1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjUsNiArNjUsNyBA
QAogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
S1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKICNpbXBv
cnQgIldLVGV4dFNlbGVjdGlvblJlY3QuaCIKICNpbXBvcnQgIldLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC0yOTEsNyArMjky
LDYgQEAgKyAoV0tUZXh0UG9zaXRpb24gKil0ZXh0UG9zaXRpb25XaXRoUmVjdDooQ0dSZWN0KXBv
c2l0aW9uUmVjdDsKIAogQGVuZAogCi0KIEBpbnRlcmZhY2UgV0tBdXRvY29ycmVjdGlvblJlY3Rz
IDogVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMKICsgKFdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqKWF1
dG9jb3JyZWN0aW9uUmVjdHNXaXRoRmlyc3RDR1JlY3Q6KENHUmVjdClmaXJzdFJlY3QgbGFzdENH
UmVjdDooQ0dSZWN0KWxhc3RSZWN0OwogQGVuZApAQCAtNzQzNiw2ICs3NDM2LDI3IEBAIC0gKHZv
aWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhDb250ZXh0UmVxdWVz
dDooVUlXS0RvY3VtZW50UmVxCiAKICNlbmRpZgogCistICh2b2lkKWluc2VydFRleHRQbGFjZWhv
bGRlcldpdGhTaXplOihDR1NpemUpc2l6ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlU
ZXh0UGxhY2Vob2xkZXIgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdl
YWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYgcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vh
a1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCAhW3N0cm9uZ1NlbGYgd2Vi
Vmlld10gfHwgIXBsYWNlaG9sZGVyKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
aWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyVG9Vc2UgeyAqcGxhY2Vob2xkZXIgfTsKKyAgICAgICAg
cGxhY2Vob2xkZXJUb1VzZS5ib3VuZGluZ1JlY3QgPSBbc3Ryb25nU2VsZiBjb252ZXJ0UmVjdDpw
bGFjZWhvbGRlclRvVXNlLmJvdW5kaW5nUmVjdCBmcm9tVmlldzpbc3Ryb25nU2VsZiB3ZWJWaWV3
XV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtbW1dLVGV4dFBsYWNlaG9sZGVyIGFsbG9j
XSBpbml0V2l0aEVsZW1lbnRDb250ZXh0OnBsYWNlaG9sZGVyVG9Vc2VdIGF1dG9yZWxlYXNlXSk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlVGV4dFBsYWNlaG9sZGVyOihVSVRleHRQbGFj
ZWhvbGRlciAqKXBsYWNlaG9sZGVyIHdpbGxJbnNlcnRUZXh0OihCT09MKXdpbGxJbnNlcnRUZXh0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igd2lsbEluc2VydFRleHQuIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc0Nz4uCisgICAgaWYg
KGF1dG8qIHdrVGV4dFBsYWNlaG9sZGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8V0tUZXh0UGxhY2Vo
b2xkZXI+KHBsYWNlaG9sZGVyKSkKKyAgICAgICAgX3BhZ2UtPnJlbW92ZVRleHRQbGFjZWhvbGRl
cih3a1RleHRQbGFjZWhvbGRlci5lbGVtZW50Q29udGV4dCwgbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNP
ZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0ZW1zKE5TQXJyYXk8TlNJ
dGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6Oklu
dFNpemU+IHNpemVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
VGV4dFBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0UGxh
Y2Vob2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWIzMTMzYWIyY2ZjNGMwYTliZjM0OWYxNGMyY2I5ZTRk
YTIwODJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
VGV4dFBsYWNlaG9sZGVyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7Cit9CisKK0BpbnRlcmZhY2UgV0tUZXh0
UGxhY2Vob2xkZXIgOiBVSVRleHRQbGFjZWhvbGRlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhFbGVtZW50Q29udGV4dDooY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmKWNvbnRleHQ7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgY29uc3QgV2ViQ29yZTo6RWxlbWVu
dENvbnRleHQmIGVsZW1lbnRDb250ZXh0OworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4
dFBsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFBsYWNl
aG9sZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNThkN2JlNTYwMzU1NzZlOGIwZmE5NGQ5ZTc4NDk5OTU1
NzgxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tU
ZXh0UGxhY2Vob2xkZXIubW0KQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV0tUZXh0UGxhY2Vob2xkZXIuaCIKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLVGV4dFNlbGVjdGlvblJlY3QuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4KKworQGltcGxlbWVudGF0aW9uIFdLVGV4dFBsYWNl
aG9sZGVyIHsKKyAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBfZWxlbWVudENvbnRleHQ7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVsZW1lbnRDb250ZXh0Oihjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYpY29udGV4dAoreworICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2VsZW1lbnRDb250ZXh0ID0gY29udGV4dDsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQm
KWVsZW1lbnRDb250ZXh0Cit7CisgICAgcmV0dXJuIF9lbGVtZW50Q29udGV4dDsKK30KKworLSAo
TlNBcnJheTxVSVRleHRTZWxlY3Rpb25SZWN0ICo+ICopcmVjdHMKK3sKKyAgICByZXR1cm4gQFsg
W1tbV0tUZXh0U2VsZWN0aW9uUmVjdCBhbGxvY10gaW5pdFdpdGhDR1JlY3Q6X2VsZW1lbnRDb250
ZXh0LmJvdW5kaW5nUmVjdF0gYXV0b3JlbGVhc2VdIF07Cit9CisKK0BlbmQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLVGV4dFNlbGVjdGlvblJlY3QuaAppbmRleCA4ZDU4ZmUxZmE2YmY0NGMwN2IyODA3ZWVmYjc1
YTMwMzZjMjlhZWQwLi5lNjU2NjNlMDA5MDYyODU3MGRkZGQ1Y2E0MjZiZTlmMjVmMDBmMmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tUZXh0U2VsZWN0aW9uUmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0
LmgKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CkBAIC0zNSw2ICszMyw3IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7
CiAKIEBpbnRlcmZhY2UgV0tUZXh0U2VsZWN0aW9uUmVjdCA6IFVJVGV4dFNlbGVjdGlvblJlY3QK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ0dSZWN0OihDR1JlY3QpcmVjdDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNlbGVjdGlvblJlY3Q6KGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3QmKXNlbGVjdGlvblJlY3Q7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1RleHRTZWxlY3Rpb25SZWN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLVGV4dFNlbGVjdGlvblJlY3QubW0KaW5kZXggOTkxMDMzNWZiNWI1NTEwOThjNDM5
YTg1ZTRjMTc5OTY4OTYyZTRmMy4uNTgxYjdiM2VjM2YzNjBmN2I2YjYzNjA5Y2FlNzIxODAwZDRi
ZWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLVGV4dFNlbGVj
dGlvblJlY3QubW0KQEAgLTM0LDYgKzM0LDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRTZWxl
Y3Rpb25SZWN0IHsKICAgICBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IF9zZWxlY3Rpb25SZWN0Owog
fQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDR1JlY3Q6KENHUmVjdClyZWN0Cit7CisgICAg
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0OworICAgIHNlbGVjdGlvblJlY3Qu
c2V0UmVjdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKKyAgICByZXR1cm4gW3Nl
bGYgaW5pdFdpdGhTZWxlY3Rpb25SZWN0OldURk1vdmUoc2VsZWN0aW9uUmVjdCldOworfQorCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTZWxlY3Rpb25SZWN0Oihjb25zdCBXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0JilzZWxlY3Rpb25SZWN0CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCA4YjRlMDQ5M2M1YTZhOTc2YzM3MWRhM2E4ODE1ZDQ0YzI5MmJmMTUzLi4zYzMyOWM5MWFl
OGRlNTkyNDU0NTUxYjA4ZTNhZmUxMGY0ZDRlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ1Nyw2ICs0NTcsMjQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBj
b25zdCBTdHJpbmcmIG5ld1QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcGxhY2VTZWxlY3RlZFRleHQob2xkVGV4dCwgbmV3VGV4dCksIG1fd2ViUGFnZUlEKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPEVsZW1lbnRDb250
ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRQbGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xk
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xk
ZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdl
SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJBdXRvY29ycmVjdGlvbkRhdGEpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNhNjgzMjJjOTM1MTY3YWI2YTliZDI3MGM2ODc3ZWFhNWI3MzU5
Ni4uMjg3YzA1MGQ2NTNlMTRiN2M1YzhjYzllNjNhZTA1OTg4ZTdmNTZhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM0LDYgKzE3
MzQsOCBAQAogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEw
QkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlD
RTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1NEVGNzQgLyogVEND
U1BJLmggKi87IH07CiAJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQx
MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCAqLzsgfTsKKwkJQ0UyMTIxNUYyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tU
ZXh0UGxhY2Vob2xkZXIuaCAqLzsgfTsKKwkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdL
VGV4dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLm1t
ICovOyB9OwogCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NTk0
NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCAqLzsgfTsKIAkJQ0U1
NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU1MEUxMjIyODM3M0M4MDBEMjg3
OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLzsgfTsKIAkJQ0U1QjRDODgyMUI3M0Q4NzAwMjJF
NjRGIC8qIFdLU3ludGhldGljRmxhZ3NDaGFuZ2VkV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNUI0Qzg2MjFCNzNEODcwMDIyRTY0RiAv
KiBXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmggKi87IH07CkBAIC01MDUxLDYgKzUw
NTMsOCBAQAogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9uU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDAxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUQ0NTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCRDExQTQ4RTZDNjAwNTRFRjc0
IC8qIFRleHRJbnB1dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
SW5wdXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUQyNDBFRTU3
MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dFBs
YWNlaG9sZGVyLmg7IHBhdGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMTIxNUUyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNl
aG9sZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0UGxhY2Vob2xkZXIubW07IHBh
dGggPSBpb3MvV0tUZXh0UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNDU5NDVBMjQwRjg1QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLVGV4dFNlbGVjdGlvblJlY3QuaDsgcGF0aCA9IGlvcy9XS1RleHRTZWxl
Y3Rpb25SZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDU5NDVCMjQwRjg1
QjkwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tUZXh0U2VsZWN0aW9uUmVjdC5tbTsgcGF0aCA9IGlvcy9XS1RleHRTZWxlY3Rpb25SZWN0
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU1MEUxMjIyODM3M0M4MDBEMjg3
OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0VGV4dE9wdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTgsNiArNjgwMiw4IEBACiAJ
CQkJMjZGMTBCRTcxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljVGFwR2VzdHVyZVJlY29n
bml6ZXIubW0gKi8sCiAJCQkJMzE2QjhCNjIyMDU0QjU1ODAwQkQ0QTYyIC8qIFdLU3lzdGVtUHJl
dmlld1ZpZXcuaCAqLywKIAkJCQkzMTZCOEI2MTIwNTRCNTU4MDBCRDRBNjIgLyogV0tTeXN0ZW1Q
cmV2aWV3Vmlldy5tbSAqLywKKwkJCQlDRTIxMjE1RDI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIuaCAqLywKKwkJCQlDRTIxMjE1RTI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0
UGxhY2Vob2xkZXIubW0gKi8sCiAJCQkJQ0U0NTk0NUEyNDBGODVCOTAwNzgwMTlGIC8qIFdLVGV4
dFNlbGVjdGlvblJlY3QuaCAqLywKIAkJCQlDRTQ1OTQ1QjI0MEY4NUI5MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5tbSAqLywKIAkJCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyog
V0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8sCkBAIC0xMTM1Miw2ICsxMTM1OCw3
IEBACiAJCQkJMkRENjdBMzUxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2ODE4QkJF
M0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxl
Y3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkg
LyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3
NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTI2NDgsNiArMTI2NTUsNyBAQAogCQkJCTVDQTI2RDgzMjE3QUQx
QjgwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxREIwMTk0NDIxMUNGMDA1MDA5RkIzRTggLyogV0tTaGFyZVNoZWV0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0E3OEZGMzMyMjQxOTE5QjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UyMTIxNjAyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4
dFBsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjRlZmIzZGFkZDk4ZTM3ODIwZmQ4ODMwZTI0OGQ3Y2Nj
NGFkOTIwNS4uNzA3ZmM2YmRhNDIzOTg1OGM2Y2Y0NmM0MGQ4ZDcxMGUyMDhiYTYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQyLDYgKzY0Miw5
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlcklu
c2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFm
dGVySW5zZXJ0aW9uOyB9CiAgICAgdm9pZCBzZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb24oYm9vbCk7CiAKKyAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCByZW1vdmVUZXh0
UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBj
b25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0
OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDJhZTFjZTJiY2JhNWI3NjllNzI3NTIzZGZmZjY5OTE5Y2ZjZjg3M2UuLmI0YWVh
NzU1NTRkYTc1NGY4MTA0OTFhMzRlNDIwYTg2MDhiMmQ0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTE5LDYg
KzExOSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVl
c3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHN0cnVjdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdD
b250ZXh0IHJlc3BvbnNlKSBBc3luYwogR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuZCkK
ICAgICBTZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oYm9vbCBz
aG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24pCisgICAgSW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0PiBwbGFjZWhvbGRlcikgQXN5bmMKKyAgICBSZW1vdmVUZXh0UGxhY2Vo
b2xkZXIoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHBsYWNlaG9sZGVyKSAtPiAoKSBB
c3luYwogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJv
bGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMjM0ZmY2MjFiYzQyYjQ1NGU0MDA2ZDhlZmM1NThjNmJjYzQ5ODJiYy4u
MTEwOTMwOWI5ZTA4NWExNmNlNGZkYWNmNWQ1YzliMDU1ZGMyNTI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyNyw2
ICsxMjcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Vc2VyQWdlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CkBAIC00MDAwLDYgKzQwMDEsMjQgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybVByZWZlcnNUZXh0TGVnaWJpbGl0eUJhc2VkWm9vbVNjYWxpbmcoKSBj
b25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNv
bnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Ly8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNh
biBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFt
ZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQ
bGFjZWhvbGRlcihzaXplKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNv
bnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworfQorCit2b2lk
IFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBlbGVtZW50Rm9y
Q29udGV4dChwbGFjZWhvbGRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICBpZiAoUmVmUHRyPEZyYW1lPiBm
cmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5yZW1vdmVUZXh0UGxhY2Vob2xkZXIoZG93bmNhc3Q8VGV4dFBsYWNlaG9sZGVyRWxl
bWVudD4oKmVsZW1lbnQpKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwog
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRl
bHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMGFkYzQ1MDlk
MTY3MzU5YmQzZjRjZDFlNzFjNzZhNjQ3ZWQxYWIuLjBhN2U0N2VlYjEwNGMzZjVkNGRlNTQzYTZj
NjYxNWQwNTBkOTVhODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMy0wNiAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlu
c2VydGluZyBhbmQgcmVtb3ZpbmcgYSB0ZXh0IHBsYWNlaG9sZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU5MzcxMDczPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQg
Unlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBlbnN1cmUgdGhhdCBpbnNlcnRp
bmcgYW5kIHJlbW92aW5nIGEgcGxhY2Vob2xkZXIgd29yay4KKworICAgICAgICAqIGVkaXRpbmcv
dGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1hbmQtcmVtb3ZlLWludG8tdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8t
ZW1wdHktdGV4dC1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtcGxh
Y2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1p
bi1pZnJhbWUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9yZXNvdXJj
ZXMvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzczogQWRkZWQuCisg
ICAgICAgIChAZm9udC1mYWNlKToKKyAgICAgICAgKC50ZXN0KToKKwogMjAxOS0wNy0yNiAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9O
IEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpbiBXZWJLaXQ6OkVkaXRvclN0YXRl
Ojpwb3N0TGF5b3V0RGF0YSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1v
dmUtaW50by10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmMzA0MGJhNjk2
NmUyMjU3NzExY2VmMWQzYmRkZGNhNzcxZmM5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQt
ZmllbGQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRo
YXQgaXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9v
a3MgYXMgaWYgaXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBj
YW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+
Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxv
IGZyb20gQ3VwZXJ0aW5vISI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWFuZC1yZW1vdmUtaW50by10ZXh0
LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0
LWFuZC1yZW1vdmUtaW50by10ZXh0LWZpZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY1NGM0YjNkNGYw
N2Q3YjU1MmQzODRiMmRhNmMwNjRlN2Y4MTY2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtYW5kLXJlbW92ZS1pbnRvLXRleHQt
ZmllbGQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIHRoYXQgaXMgaW5z
ZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhIHRleHQgZmllbGQgdmlzdWFsbHkgbG9va3MgYXMgaWYg
aXQgbmV2ZXIgd2FzIGluc2VydGVkIHRvIGJlZ2luIHdpdGguIFRoaXMgdGVzdCBjYW4gb25seSBi
ZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aW5wdXQg
aWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3Vw
ZXJ0aW5vISI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBs
ZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFu
ZFdhaXRGb3JJbnB1dFNlc3Npb24oaW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlI
ZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlu
cHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBwb3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmlu
ZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJv
bSwgcG9zaXRpb25PZkZyb20pOworCisgICAgbGV0IHBsYWNlaG9sZGVyRWxlbWVudCA9IG51bGw7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUg
dXNpbmcgdGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRo
LgorICAgICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGlucHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBwbGFjZWhvbGRlckVsZW1l
bnQgPSBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8q
IGhlaWdodCAqLyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBsYWNlaG9sZGVyRWxlbWVudCk7
CisgICAgfQorICAgIAorICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgor
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1
dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5yZW1vdmVUZXh0UGxhY2Vob2xkZXIocGxhY2Vob2xkZXJFbGVtZW50
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50
by1jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Rl
eHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUwNjUwMWIyNmM4Y2Q3YzhmMmMwMGQzZGQxMDBkMzhhODI4NWNmY2MKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5z
ZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAK
KzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBh
IHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRlZGl0YWJs
ZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJLaXRUZXN0
UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJ0ZXN0
IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBi
bGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyAmbmJzcDsmbmJzcDtmcm9tIEN1cGVy
dGlubyE8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1jb250ZW50LWVkaXRhYmxlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVu
dC1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4OTQ5ZWQ4NDE4MWRjMWQzYTcyNTcyZDc1NWVh
ODIyMTMwYWI3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQt
cGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tY29udGVudC1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEs
NDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhp
YmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy90ZXN0LmNzcyI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMg
dGhhdCBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIDxjb2RlPmNvbnRlbnRl
ZGl0YWJsZTwvY29kZT4gZWxlbWVudC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBXZWJL
aXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNsYXNz
PSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBib3JkZXI6IDFweCBz
b2xpZCBibGFjayIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbyBmcm9tIEN1cGVydGlubyE8
L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGxldCB0
ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRB
bmRXYWl0Rm9ySW5wdXRTZXNzaW9uKHRlc3RFbGVtZW50KTsKKyAgICBlbHNlCisgICAgICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVu
dC5mb2N1cygpLCB0ZXN0RWxlbWVudCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZy
b20gPSB0ZXN0RWxlbWVudC50ZXh0Q29udGVudC5pbmRleE9mKCJmcm9tIik7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGVzdEVsZW1lbnQuZmlyc3RDaGlsZCwg
cG9zaXRpb25PZkZyb20sIHRlc3RFbGVtZW50LmZpcnN0Q2hpbGQsIHBvc2l0aW9uT2ZGcm9tKTsK
KworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJl
IHVzaW5nIHRoZSBBaGVtIGZvbnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0
aC4KKyAgICAgICAgbGV0IGdseXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0RWxlbWVudCwgbnVsbCkuZm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxz
Lmluc2VydFRleHRQbGFjZWhvbGRlcigyICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOwor
ICAgIH0KKworICAgIC8vIERlZm9jdXMgZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3
YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB0ZXN0RWxlbWVu
dC5ibHVyKCksIHRlc3RFbGVtZW50LCAiYmx1ciIpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3J1blRlc3QoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1l
bXB0eS10ZXh0LWZpZWxkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM0ZmQzZDA3OWFhOTkz
OWIwYzljYWIzOGE2Yzg0MDhiM2NlNThmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by1lbXB0eS10ZXh0LWZpZWxkLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBwbGFjZWhvbGRlciBpcyBoaWRkZW4gd2hl
biBhIHRleHQgcGxhY2Vob2xkZXIgaXMgaW5zZXJ0ZWQgaW50byBhIHRleHQgZmllbGQuIFRoaXMg
dGVzdCBjYW4gb25seSBiZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJl
ZS48L3A+Cis8aW5wdXQgaWQ9ImlucHV0IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9
IiAgICAgICI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tZW1wdHktdGV4dC1maWVsZC5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRl
eHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDUxMDQxZGQzODZlZmYxNjZlNDgyZTMzNGUyNzQ1
YzgzYjYyMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLWVtcHR5LXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsxLDQw
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRo
YXQgdGhlIHBsYWNlaG9sZGVyIGlzIGhpZGRlbiB3aGVuIGEgdGV4dCBwbGFjZWhvbGRlciBpcyBp
bnNlcnRlZCBpbnRvIGEgdGV4dCBmaWVsZC4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBpbiBX
ZWJLaXRUZXN0UnVubmVyIG9yIER1bXBSZW5kZXJUcmVlLjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQi
IGNsYXNzPSJ0ZXN0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRkFJTCI+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24o
aW5wdXQpOworICAgIGVsc2UKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5k
V2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAg
IGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhlIEFoZW0gZm9udCBhbG1v
c3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAgICAgICBsZXQgZ2x5cGhXaWR0
aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlucHV0LCBudWxsKS5mb250U2l6
ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKDUgKiBnbHlw
aFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAgLy8gRGVmb2N1cyBmaWVsZCB0
byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2Fp
dEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJibHVyIik7CisKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
cnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1pbnRvLXRleHQtZmllbGQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmMzMWYzM2UwYzlj
MTBhYmExYjhiN2M1M2Q3MjY3YjE1ZDdhODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGlu
dG8gYSB0ZXh0IGZpZWxkLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRl
c3QiIHR5cGU9InRleHQiIHZhbHVlPSJIZWxsbyAgICAgIGZyb20gQ3VwZXJ0aW5vISI+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vo
b2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvdGV4dC1wbGFjZWhvbGRlci9pbnNlcnQtaW50by10ZXh0LWZpZWxk
LWluLWlmcmFtZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTRiMjczMTg5MWNkYTIxOTQ2
YTA3MDczMmYwNTQ2MDFhMzk0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1pZnJhbWUtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVk
IGludG8gYSB0ZXh0IGZpZWxkIGluc2lkZSBhbiBpZnJhbWUuIFRoaXMgdGVzdCBjYW4gb25seSBi
ZSBydW4gaW4gV2ViS2l0VGVzdFJ1bm5lciBvciBEdW1wUmVuZGVyVHJlZS48L3A+Cis8aWZyYW1l
IHNyY2RvYz0nPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPjwvaGVhZD48Ym9keT48aW5wdXQgaWQ9ImlucHV0
IiBjbGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvICAgICAgZnJvbSBDdXBlcnRp
bm8hIj48L2JvZHk+PC9odG1sPicgd2lkdGg9IjYwMCIgaGVpZ2h0PSIyMDAiPjwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBs
YWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4dC1maWVsZC1pbi1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODFlNTg2N2U4MjZiNGMyZjU5NjZlNTljNDgxNjkxZWI0
YjQ4OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNl
aG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGli
bGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL3Rlc3QuY3NzIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgdGV4dCBwbGFjZWhvbGRlciBpcyBpbnNlcnRlZCBp
bnRvIGEgdGV4dCBmaWVsZCBpbnNpZGUgYW4gaWZyYW1lLiBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg
cnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRlclRyZWUuPC9wPgorPGlmcmFtZSBz
cmM9InJlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sIiB3aWR0
aD0iNjAwIiBoZWlnaHQ9IjIwMCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvaW5zZXJ0LWludG8tdGV4
dC1maWVsZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL2luc2Vy
dC1pbnRvLXRleHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGE4MzU1M2JmMTkyNTExMmYwMGY4
N2FmMDYzZThiODVhN2Q5NThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy90ZXh0LXBsYWNlaG9sZGVyL2luc2VydC1pbnRvLXRleHQtZmllbGQuaHRtbApAQCAtMCwwICsx
LDQxIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4
aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvdGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IHRoYXQgYSB0ZXh0IHBsYWNlaG9sZGVyIGlzIGluc2VydGVkIGludG8gYSB0ZXh0IGZpZWxkLiBU
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIgb3IgRHVtcFJlbmRl
clRyZWUuPC9wPgorPGlucHV0IGlkPSJpbnB1dCIgY2xhc3M9InRlc3QiIHR5cGU9InRleHQiIHZh
bHVlPSJIZWxsbyBmcm9tIEN1cGVydGlubyEiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMgZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlu
cHV0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBl
ci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGlucHV0KTsKKyAgICBlbHNl
CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiBpbnB1dC5mb2N1cygpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBsZXQgcG9zaXRpb25PZkZy
b20gPSBpbnB1dC52YWx1ZS5pbmRleE9mKCJmcm9tIik7CisgICAgaW5wdXQuc2V0U2VsZWN0aW9u
UmFuZ2UocG9zaXRpb25PZkZyb20sIHBvc2l0aW9uT2ZGcm9tKTsKKworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoZSBBaGVtIGZv
bnQgYWxtb3N0IGFsbCBnbHlwaHMgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KKyAgICAgICAgbGV0IGds
eXBoV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCwgbnVsbCku
Zm9udFNpemUsIDEwKTsKKyAgICAgICAgaW50ZXJuYWxzLmluc2VydFRleHRQbGFjZWhvbGRlcig1
ICogZ2x5cGhXaWR0aCwgMCAvKiBoZWlnaHQgKi8pOworICAgIH0KKworICAgIC8vIERlZm9jdXMg
ZmllbGQgdG8gaGlkZSB0aGUgY3Vyc29yLgorICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlv
bkFuZFdhaXRGb3JFdmVudCgoKSA9PiBpbnB1dC5ibHVyKCksIGlucHV0LCAiYmx1ciIpOworCisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQt
aW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0
LXBsYWNlaG9sZGVyL3Jlc291cmNlcy9pbnNlcnQtaW50by10ZXh0LWZpZWxkLWluLWlmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2MmFmZWNiYzEzOWMyMjI4ZDE5NjhjOGRlY2FlZjRkZGQzMTQ4Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIv
cmVzb3VyY2VzL2luc2VydC1pbnRvLXRleHQtZmllbGQtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxl
eGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0idGVzdC5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9ImlucHV0IiBj
bGFzcz0idGVzdCIgdHlwZT0idGV4dCIgdmFsdWU9IkhlbGxvIGZyb20gQ3VwZXJ0aW5vISI+Cis8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsK
KworICAgIC8vIEZJWE1FOiBVc2UgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklu
cHV0U2Vzc2lvbihpbnB1dCkuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODc0OT4uCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZv
ckV2ZW50KCgpID0+IGlucHV0LmZvY3VzKCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGxldCBw
b3NpdGlvbk9mRnJvbSA9IGlucHV0LnZhbHVlLmluZGV4T2YoImZyb20iKTsKKyAgICBpbnB1dC5z
ZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk9mRnJvbSwgcG9zaXRpb25PZkZyb20pOworCisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcg
dGhlIEFoZW0gZm9udCBhbG1vc3QgYWxsIGdseXBocyBoYXZlIHRoZSBzYW1lIHdpZHRoLgorICAg
ICAgICBsZXQgZ2x5cGhXaWR0aCA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGlu
cHV0LCBudWxsKS5mb250U2l6ZSwgMTApOworICAgICAgICBpbnRlcm5hbHMuaW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKDUgKiBnbHlwaFdpZHRoLCAwIC8qIGhlaWdodCAqLyk7CisgICAgfQorCisgICAg
Ly8gRGVmb2N1cyBmaWVsZCB0byBoaWRlIHRoZSBjdXJzb3IuCisgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IGlucHV0LmJsdXIoKSwgaW5wdXQsICJi
bHVyIik7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfQorcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtcGxhY2Vob2xkZXIvcmVzb3Vy
Y2VzL3Rlc3QuY3NzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBsYWNlaG9sZGVyL3Jlc291
cmNlcy90ZXN0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTg5MWRiZTI3MGVkMjVlYTQ2OWE4OWU4YjliM2Jl
MjRmZmUzNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LXBs
YWNlaG9sZGVyL3Jlc291cmNlcy90ZXN0LmNzcwpAQCAtMCwwICsxLDEyIEBACitAZm9udC1mYWNl
IHsKKyAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICBzcmM6IHVybCgiLi4vLi4vLi4vcmVzb3Vy
Y2VzL0FoZW0udHRmIik7Cit9CisKKy50ZXN0IHsKKyAgICBmb250OiAyNXB4LzEgQWhlbTsKKyAg
ICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCUlOworICAgIC8qIFRvIG1ha2UgZGVidWdn
aW5nIGVhc2llciwgbWFrZSB0aGUgY2FyZXQgc3RhbmQgb3V0LiAqLworICAgIGNhcmV0LWNvbG9y
OiBibHVlOworICAgIGNvbG9yOiB5ZWxsb3c7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>