<?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>25330</bug_id>
          
          <creation_ts>2009-04-22 13:21:18 -0700</creation_ts>
          <short_desc>Implement text checking/autocorrection with new SnowLeopard text checking API</short_desc>
          <delta_ts>2009-04-27 16:15:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Douglas Davidson">ddavidso</assigned_to>
          <cc>ddavidso</cc>
    
    <cc>sidchat</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118411</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-22 13:21:18 -0700</bug_when>
    <thetext>Implement text checking/autocorrection with new SnowLeopard text checking API

&lt;rdar://problem/6724106&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118412</commentid>
    <comment_count>1</comment_count>
      <attachid>29688</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-22 13:26:02 -0700</bug_when>
    <thetext>Created attachment 29688
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118677</commentid>
    <comment_count>2</comment_count>
      <attachid>29750</attachid>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 11:11:04 -0700</bug_when>
    <thetext>Created attachment 29750
new patch taking into account suggestions from Justin

Following Justin&apos;s suggestions, I&apos;ve simplified &quot;resultType&quot; to &quot;type&quot; and used an enum for the values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118691</commentid>
    <comment_count>3</comment_count>
      <attachid>29750</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-24 12:15:01 -0700</bug_when>
    <thetext>Comment on attachment 29750
new patch taking into account suggestions from Justin

Setting review? for Doug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118696</commentid>
    <comment_count>4</comment_count>
      <attachid>29750</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-24 12:36:11 -0700</bug_when>
    <thetext>Comment on attachment 29750
new patch taking into account suggestions from Justin

Mostly style complaints:

I would think the Editor stuff should be in its own EditorMac.cpp file, since none of the rest of the ports care about it.

WebKit style normally uses:
if (!ec) instead:
+            if (ec == 0) {
Personally I find (ec == 0) more readable in some cases, but we should follow the style guidelines here.

     if (client()-&gt;substitutionsPanelIsShowing()) {
 1154         client()-&gt;showSubstitutionsPanel(false);
 1155     } else {

no { } according to the style guidelines.

Why is this one different from all the others:
2     if (!client())
 1163         return false;
 1164     return client()-&gt;substitutionsPanelIsShowing();

return client() &amp;&amp; ... would fit the pattern.

Even though much of the editing code hasn&apos;t been updated to the modern style guidelines, we still should try to follow them here:
 2227 void Editor::markAllMisspellingsAndBadGrammarInRanges(Range *spellingRange, bool markGrammar, Range *grammarRange, bool performTextChecking)

for C++ * goes next to the type in WebKit.  In Obj-C the * goes next to the variable name (to match the rest of AppKit/Cocoa)

Looks like you have some tabs in the file:
 2273 		restoreSelectionAfterChange = true;
 2274 		adjustSelectionForParagraphBoundaries = (selectionOffset &gt;= paragraphLength) ? true : false;
 2275 	    }
the commit will fail if there are tabs in the file.

I would think this whole block would make more sense in a small function:
 uint64_t checkingTypes = markGrammar ? (TextCheckingTypeSpelling | TextCheckingTypeGrammar) : TextCheckingTypeSpelling;
 2281     if (performTextChecking) {
 2282         if (isAutomaticLinkDetectionEnabled())
 2283

something like uint64_t checkingTypes =  typesToCheck(markGrammar) or some better name...

It looks like you changed the encoding of the strings file?

Seems TextCheckingResult result; could really use a constructor function :)

This should all be a static inline funtion:
    if (action == @selector(toggleAutomaticQuoteSubstitution:)) {
 2649         NSMenuItem *menuItem = (NSMenuItem *)item;
 2650         if ([menuItem isKindOfClass:[NSMenuItem class]])
 2651             [menuItem setState:[self isAutomaticQuoteSubstitutionEnabled] ? NSOnState : NSOffState];
 2652         return YES;
 2653     }
cause you repeat the same copy/paste code a bunch there...

AGain here:
} else if (action == @selector(toggleAutomaticLinkDetection:)) {
 3767         BOOL checkMark = [self isAutomaticLinkDetectionEnabled];
 3768         if ([(NSObject *)item isKindOfClass:[NSMenuItem class]]) {
 3769             NSMenuItem *menuItem = (NSMenuItem *)item;
 3770             [menuItem setState:checkMark ? NSOnState : NSOffState];
 3771         }
 3772         return YES;
 3773     } 

And here:
4655     if (automaticDashSubstitutionEnabled == flag)
 4656         return;
 4657     automaticDashSubstitutionEnabled = flag;
 4658     [[NSUserDefaults standardUserDefaults] setBool:automaticDashSubstitutionEnabled forKey:WebAutomaticDashSubstitutionEnabled];    
 4659     [[NSSpellChecker sharedSpellChecker] updatePanels];

I think you&apos;re going to need to go more rounds with Darin/Justin (folks who actually still work at Apple).   But hopefully you&apos;ll find the style comments useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118705</commentid>
    <comment_count>5</comment_count>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 12:58:15 -0700</bug_when>
    <thetext>Much of this is Mac-specific now, but I would hope we&apos;ll be able to change that in the future.

The substitutionsPanel code you mention is the way it is because it is copied from the existing spellingPanel code elsewhere in the file.  I&apos;ll fix the extra braces by making that code match too.

I&apos;ll move the asterisks and remove the tabs.  Damn Xcode started putting in tabs when I told it not to.

The encoding of the .strings file is still UTF-16; I&apos;m not sure why these diffs are showing up.

The repetitive copy/paste code is there to match corresponding existing code; I didn&apos;t really feel comfortable changing existing patterns, but if Darin or Justin want we can do it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118713</commentid>
    <comment_count>6</comment_count>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 13:23:21 -0700</bug_when>
    <thetext>I see what happened with the .strings file, and I&apos;ve fixed it.  I still haven&apos;t been able to get the update-webkit-localizable-strings script to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118726</commentid>
    <comment_count>7</comment_count>
      <attachid>29761</attachid>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 13:50:16 -0700</bug_when>
    <thetext>Created attachment 29761
new patch to improve conformance to style guidelines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118744</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 14:51:07 -0700</bug_when>
    <thetext> about to give this a look thanks for your patience</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118761</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 16:00:38 -0700</bug_when>
    <thetext>doug why the bit about storing the caret offset in order to restore the caret after the operation? are we not always one character after the autocorrection?  can&apos;t we then just rely on the selection set by the replacement operation + 1?  I guess autocorrection might kick in when we submit a form and in that case we&apos;re not + 1...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118768</commentid>
    <comment_count>10</comment_count>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 16:08:51 -0700</bug_when>
    <thetext>Yeah, I tried letting the selection be set by the replacement but there were cases where it didn&apos;t work.  You really want it to end up where it was before the replacement operations took place, taking into account any change in length the replacements may have caused.  I&apos;d be delighted to find a simpler way of restoring the selection but I haven&apos;t come up with one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118773</commentid>
    <comment_count>11</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 16:19:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Yeah, I tried letting the selection be set by the replacement but there were
&gt; cases where it didn&apos;t work.  You really want it to end up where it was before
&gt; the replacement operations took place, taking into account any change in length
&gt; the replacements may have caused.  I&apos;d be delighted to find a simpler way of
&gt; restoring the selection but I haven&apos;t come up with one.

what you did is fine although I&apos;d like to know the cases where the replacement failed to restore a selection as they are bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118784</commentid>
    <comment_count>12</comment_count>
      <attachid>29761</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 17:37:21 -0700</bug_when>
    <thetext>Comment on attachment 29761
new patch to improve conformance to style guidelines

+    if (performTextChecking) {
+        if (m_frame-&gt;selection()-&gt;selectionType() == VisibleSelection::CaretSelection) {
+            RefPtr&lt;Range&gt; offsetAsRange = Range::create(paragraphRange-&gt;startContainer(ec)-&gt;document(), paragraphRange-&gt;startPosition(), paragraphRange-&gt;startPosition());
+            offsetAsRange-&gt;setEnd(m_frame-&gt;selection()-&gt;end().containerNode(), m_frame-&gt;selection()-&gt;end().computeOffsetInContainerNode(), ec);
+            if (!ec) {
+                selectionOffset = TextIterator::rangeLength(offsetAsRange.get());
+                restoreSelectionAfterChange = true;         
+                adjustSelectionForParagraphBoundaries = (selectionOffset &gt;= paragraphLength) ? true : false;
+            }
+        }
+    }

You only need to do this if there will be a replacement, but perhaps it would be cumbersome to find that out here/do this later once we&apos;ve found that we&apos;ll be doing a replacement.


+ offsetAsRange-&gt;setEnd(m_frame-&gt;selection()-&gt;end().containerNode(), m_frame-&gt;selection()-&gt;end().computeOffsetInContainerNode(), ec)

Would look nice split out:

+ Position caretPosition = m_frame-&gt;selection()-&gt;end();
+ offsetAsRange-&gt;setEnd(caretPosition.containerNode(), caretPosition.computeOffsetInContainerNode(), ec);


&quot;performTextChecking&quot;

Is there any way we can make this bool more clearly describe that we&apos;re doing full text checking, not just spelling/grammar checking?  spelling/grammar checking sound like they&apos;d also obey &quot;performTextChecking&quot;.


+ } else if (performTextChecking &amp;&amp; resultLocation + resultLength &lt;= spellingRangeEndOffset &amp;&amp; resultLocation + resultLength &gt;= spellingRangeStartOffset &amp;&amp;

Should the check instead be resultLocation &gt;= spellingRangeStartOffset?

I guess I&apos;m slightly confused about what spellingRangeStartOffset actually is.  It looks like (in the !markGrammar case at least) to be the offset into the containing paragraph of the start of the spellingRange passed to this function.  Is that right?


+ RefPtr&lt;Range&gt; replacementRange = TextIterator::subrange(paragraphRange.get(), resultLocation, resultLength);
+ VisibleSelection replacementSelection(replacementRange.get(), DOWNSTREAM);

I think better names might be rangeToReplace and selectionToReplace.


+ } else {
+    m_frame-&gt;selection()-&gt;moveTo(m_frame-&gt;selection()-&gt;end());
+    m_frame-&gt;selection()-&gt;modify(SelectionController::MOVE, SelectionController::FORWARD, CharacterGranularity);
+ }

This else case deserves a comment I think.


+void Editor::markMisspellingsAfterTypingToPosition(const VisiblePosition &amp;p)

Did you need to move this.


 void TypingCommand::typingAddedToOpenCommand()
 {
-    markMisspellingsAfterTyping();
     document()-&gt;frame()-&gt;editor()-&gt;appliedEditing(this);
+    markMisspellingsAfterTyping();
 }

I think remember you explaining this somewhere but I couldn&apos;t find it.


enum TextCheckingType { TextCheckingTypeSpelling = 1 &lt;&lt; 1, TextCheckingTypeGrammar = 1 &lt;&lt; 2, TextCheckingTypeLink = 1 &lt;&lt; 5, TextCheckingTypeQuote = 1 &lt;&lt; 6, TextCheckingTypeDash = 1 &lt;&lt; 7, TextCheckingTypeReplacement = 1 &lt;&lt; 8, TextCheckingTypeCorrection = 1 &lt;&lt; 9 };

Please split this out onto separate lines like the other enum definitions in WebCore.


#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD)

Could we get a BUILDING_ON_SNOWLEOPARD?


Otherwise, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118785</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-04-24 17:40:14 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; Could we get a BUILDING_ON_SNOWLEOPARD?

Not until Snow Leopard is in &quot;the past&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118786</commentid>
    <comment_count>14</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 17:45:51 -0700</bug_when>
    <thetext>What&apos;s up with this:

-    // FIXME 4811447: workaround for lack of API
+#ifndef BUILDING_ON_LEOPARD
+    [[NSSpellChecker sharedSpellChecker] updatePanels];
+#else
     NSSpellChecker *spellChecker = [NSSpellChecker sharedSpellChecker];
     if ([spellChecker respondsToSelector:@selector(_updateGrammar)])
         [spellChecker performSelector:@selector(_updateGrammar)];
+#endif

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118787</commentid>
    <comment_count>15</comment_count>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 17:53:42 -0700</bug_when>
    <thetext>I will split out the code you point out, and find a more descriptive name than &quot;performTextChecking&quot;.  

Your understanding about the spellingRangeStartOffset is correct; the condition for doing the various replacements is that the end of the region being replaced should touch the spelling range.  This is because the region being replaced may be inter-word punctuation such as dashes and quotes.

rangeToReplace and selectionToReplace are reasonable names.  I&apos;ll add comments and split the enum.  The reason for changing the order of markMisspellingsAfterTyping() is to make sure that changes are ordered properly for undoing.

The updatePanels is new API that we have that makes it unnecessary to use the old SPI.  We can split that out into a separate fix if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118790</commentid>
    <comment_count>16</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-24 18:13:48 -0700</bug_when>
    <thetext>&gt; Your understanding about the spellingRangeStartOffset is correct; the condition
&gt; for doing the various replacements is that the end of the region being replaced
&gt; should touch the spelling range.  This is because the region being replaced may
&gt; be inter-word punctuation such as dashes and quotes.

Ah I understand now.  A comment there would be great.

&gt; The reason for changing the order of markMisspellingsAfterTyping() is to make 
&gt; sure that changes are ordered properly.

Ah of course.  Please add a comment.

&gt; The updatePanels is new API that we have that makes it unnecessary to use the
&gt; old SPI.  We can split that out into a separate fix if you want.

Up to you, either way please mention it in the ChangeLog.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118794</commentid>
    <comment_count>17</comment_count>
      <attachid>29779</attachid>
    <who name="Douglas Davidson">ddavidso</who>
    <bug_when>2009-04-24 18:47:27 -0700</bug_when>
    <thetext>Created attachment 29779
new patch taking into account suggestions from Justin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119046</commentid>
    <comment_count>18</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-04-27 16:15:28 -0700</bug_when>
    <thetext>Committed revision 42911.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29688</attachid>
            <date>2009-04-22 13:26:02 -0700</date>
            <delta_ts>2009-04-22 13:26:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ddavidso-WebKit-text-checking.patch</filename>
            <type>text/plain</type>
            <size>85327</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjc1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjIgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBlZGl0aW5nIG1lY2hhbmlzbXMg
YW5kIGFkZCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxlbWVudCB0ZXh0IGNoZWNraW5nCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tOgorCiAyMDA5LTA0
LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
YSBjcmFzaCBvbiBHbWFpbCB3aGVuIHRoZXkgcmVtb3ZlIGEgImJlZm9yZSB1bmxvYWQiIGV2ZW50
IGxpc3RlbmVyIHdoZW4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA0Mjc1MCkKKysrIFdl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1h
bmQuaCIKKyNpbmNsdWRlICJDcmVhdGVMaW5rQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtMTEyMiw2ICsxMTIzLDExMCBAQCBpbnQgRWRpdG9y
OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpCiAgICAgcmV0dXJuIGNsaWVudCgpID8gY2xpZW50
KCktPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgOiAwOwogfQogCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkKKwordm9pZCBFZGl0b3I6OnVwcGVyY2FzZVdvcmQoKQoreworICAgIGlmIChjbGll
bnQoKSkKKyAgICAgICAgY2xpZW50KCktPnVwcGVyY2FzZVdvcmQoKTsKK30KKwordm9pZCBFZGl0
b3I6Omxvd2VyY2FzZVdvcmQoKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50
KCktPmxvd2VyY2FzZVdvcmQoKTsKK30KKwordm9pZCBFZGl0b3I6OmNhcGl0YWxpemVXb3JkKCkK
K3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5jYXBpdGFsaXplV29yZCgp
OworfQorCit2b2lkIEVkaXRvcjo6c2hvd1N1YnN0aXR1dGlvbnNQYW5lbCgpCit7CisgICAgaWYg
KCFjbGllbnQoKSkgeworICAgICAgICBMT0dfRVJST1IoIk5vIE5TU3BlbGxDaGVja2VyIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY2xpZW50KCktPnN1YnN0aXR1dGlvbnNQ
YW5lbElzU2hvd2luZygpKSB7CisgICAgICAgIGNsaWVudCgpLT5zaG93U3Vic3RpdHV0aW9uc1Bh
bmVsKGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjbGllbnQoKS0+c2hvd1N1YnN0aXR1
dGlvbnNQYW5lbCh0cnVlKTsKKyAgICB9Cit9CisKK2Jvb2wgRWRpdG9yOjpzdWJzdGl0dXRpb25z
UGFuZWxJc1Nob3dpbmcoKQoreworICAgIGlmICghY2xpZW50KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gY2xpZW50KCktPnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
OworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKQoreworICAgIGlm
IChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7
Cit9CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgp
Cit7CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5pc0F1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uRW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb24oKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCkt
PnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7Cit9CisKK2Jvb2wgRWRpdG9yOjpp
c0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKK3sKKyAgICByZXR1cm4gY2xpZW50KCkg
JiYgY2xpZW50KCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKK30KKwordm9p
ZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKQoreworICAgIGlmIChjbGll
bnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsK
K30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQor
eworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uRW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbigpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+dG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworfQorCitib29sIEVkaXRvcjo6aXNBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYg
Y2xpZW50KCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOworfQorCit2b2lk
IEVkaXRvcjo6dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkKK3sKKyAgICBpZiAoY2xp
ZW50KCkpCisgICAgICAgIGNsaWVudCgpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQo
KTsKK30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5pc0F1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKK30KKwordm9pZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbigpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGll
bnQoKS0+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7Cit9CisKKyNlbmRpZgor
CiBib29sIEVkaXRvcjo6c2hvdWxkRW5kRWRpdGluZyhSYW5nZSogcmFuZ2UpCiB7CiAgICAgcmV0
dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlKTsKQEAgLTE1
OTIsNyArMTY5Nyw4IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEcK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7Ci0gICAgICAgICAgICAgICAgY2xpZW50LT5jaGVja1NwZWxsaW5nQW5kR3JhbW1hck9m
UGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5s
ZW5ndGgoKSwgY2hlY2tHcmFtbWFyLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8gKDEgPDwgMiB8IDEgPDwgMSkgOiAoMSA8
PCAxKTsKKyAgICAgICAgICAgICAgICBjbGllbnQtPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFn
cmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tp
bmdUeXBlcywgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsK
QEAgLTE5NjEsNyArMjA2Nyw4IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBndWVzc2VzRm9yTWlz
c3BlbGwKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiByZXN1bHRzOwotICAgIGNsaWVudC0+Y2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJPZlBh
cmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVu
Z3RoKCksIGNoZWNrR3JhbW1hciwgcmVzdWx0cyk7CisgICAgdWludDY0X3QgY2hlY2tpbmdUeXBl
cyA9IGNoZWNrR3JhbW1hciA/ICgxIDw8IDIgfCAxIDw8IDEpIDogKDEgPDwgMSk7CisgICAgY2xp
ZW50LT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBw
YXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMpOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07CkBAIC0y
MDQ3LDMxICsyMTU0LDYgQEAgYm9vbCBFZGl0b3I6OnNwZWxsaW5nUGFuZWxJc1Nob3dpbmcoKQog
ICAgIHJldHVybiBjbGllbnQoKS0+c3BlbGxpbmdVSUlzU2hvd2luZygpOwogfQogCi12b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24gJnApCi17Ci0gICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAg
ICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
T2ZXb3JkKHAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHAsIFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkpOwotICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkgewotICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxlU2VsZWN0aW9u
KHN0YXJ0T2ZTZW50ZW5jZShwKSwgZW5kT2ZTZW50ZW5jZShwKSk7Ci0gICAgICAgIG1hcmtNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFyKGFkamFjZW50V29yZHMsIHRydWUsIHNlbGVjdGVkU2VudGVu
Y2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
KGFkamFjZW50V29yZHMsIGZhbHNlLCBhZGphY2VudFdvcmRzKTsKLSAgICB9Ci0jZWxzZQotICAg
IC8vIENoZWNrIHNwZWxsaW5nIG9mIG9uZSB3b3JkCi0gICAgbWFya01pc3NwZWxsaW5ncyhWaXNp
YmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZX
b3JkKHAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpKTsKLSAgICAKLSAgICBpZiAoIWlzR3JhbW1h
ckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gQ2hlY2sg
Z3JhbW1hciBvZiBlbnRpcmUgc2VudGVuY2UKLSAgICBtYXJrQmFkR3JhbW1hcihWaXNpYmxlU2Vs
ZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZShwKSwgZW5kT2ZTZW50ZW5jZShwKSkpOwotI2VuZGlmCi19
Ci0KIHN0YXRpYyB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NJblJhbmdlKEVkaXRvckNsaWVudCog
Y2xpZW50LCBSYW5nZSogc2VhcmNoUmFuZ2UpCiB7CiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIg
ZmVhdHVyZSBvZiBmaW5kRmlyc3RNaXNzcGVsbGluZ0luUmFuZ2UuIElnbm9yZSB0aGUgcmV0dXJu
IHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIiOwpAQCAtMjE0MiwxMSArMjIyNCwxMSBAQCB2
b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsCiAKICNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQogCi1zdGF0aWMgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKEVkaXRvckNsaWVudCogY2xpZW50LCBSYW5nZSAqc3BlbGxpbmdSYW5nZSwgYm9v
bCBtYXJrR3JhbW1hciwgUmFuZ2UgKmdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFJhbmdlICpzcGVsbGluZ1JhbmdlLCBi
b29sIG1hcmtHcmFtbWFyLCBSYW5nZSAqZ3JhbW1hclJhbmdlLCBib29sIHBlcmZvcm1UZXh0Q2hl
Y2tpbmcpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25z
IGFscmVhZHkgZXhwYW5kZWQgdG8gd29yZCBib3VuZGFyaWVzLgotICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgaWYgKCFjbGllbnQgfHwgIXNwZWxsaW5nUmFuZ2UgfHwgKG1hcmtHcmFtbWFyICYm
ICFncmFtbWFyUmFuZ2UpKQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmICghY2xp
ZW50KCkgfHwgIXNwZWxsaW5nUmFuZ2UgfHwgKG1hcmtHcmFtbWFyICYmICFncmFtbWFyUmFuZ2Up
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gSWYgd2UncmUgbm90IGluIGFuIGVkaXRh
YmxlIG5vZGUsIGJhaWwuCkBAIC0yMTU5LDQyICsyMjQxLDExOCBAQCBzdGF0aWMgdm9pZCBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhCiAgICAgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
PSAwOwogICAgIGludCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCA9IDA7CiAgICAgaW50IGdyYW1t
YXJSYW5nZUVuZE9mZnNldCA9IDA7CisgICAgaW50IG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPSAw
OworICAgIGludCBwYXJhZ3JhcGhMZW5ndGggPSAwOworICAgIGludCBzZWxlY3Rpb25PZmZzZXQg
PSAwOworICAgIGJvb2wgc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgcmVzdG9y
ZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CisgICAgYm9vbCBhZGp1c3RTZWxlY3Rpb25G
b3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gZmFsc2U7CiAgICAgU3RyaW5nIHBhcmFncmFwaFN0cmlu
ZzsKKyAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlOwogICAgIAogICAgIGlmIChtYXJr
R3JhbW1hcikgewogICAgICAgICAvLyBUaGUgc3BlbGxpbmcgcmFuZ2Ugc2hvdWxkIGJlIGNvbnRh
aW5lZCBpbiB0aGUgcGFyYWdyYXBoLWFsaWduZWQgZXh0ZW5zaW9uIG9mIHRoZSBncmFtbWFyIHJh
bmdlLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlID0gcGFyYWdyYXBoQWxp
Z25lZFJhbmdlRm9yUmFuZ2UoZ3JhbW1hclJhbmdlLCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCwg
cGFyYWdyYXBoU3RyaW5nKTsKKyAgICAgICAgcGFyYWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhBbGln
bmVkUmFuZ2VGb3JSYW5nZShncmFtbWFyUmFuZ2UsIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0LCBw
YXJhZ3JhcGhTdHJpbmcpOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IG9mZnNldEFzUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50
KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHNwZWxsaW5nUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSk7CiAgICAgICAgIHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgob2Zmc2V0QXNSYW5nZS5nZXQoKSk7CiAgICAgICAgIGdyYW1tYXJS
YW5nZUVuZE9mZnNldCA9IGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChncmFtbWFyUmFuZ2UpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxS
YW5nZT4gcGFyYWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhBbGlnbmVkUmFuZ2VGb3JSYW5nZShzcGVs
bGluZ1JhbmdlLCBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0cmluZyk7Cisg
ICAgICAgIHBhcmFncmFwaFJhbmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9yUmFuZ2Uoc3Bl
bGxpbmdSYW5nZSwgc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwog
ICAgIH0KICAgICBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zm
c2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzcGVsbGluZ1JhbmdlKTsKLSAgICBpZiAo
cGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID09IDAgfHwgKHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNl
dCA+PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICghbWFya0dyYW1tYXIgfHwgZ3JhbW1hclJh
bmdlU3RhcnRPZmZzZXQgPj0gZ3JhbW1hclJhbmdlRW5kT2Zmc2V0KSkpCisgICAgcGFyYWdyYXBo
TGVuZ3RoID0gcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpOworICAgIGlmIChwYXJhZ3JhcGhMZW5n
dGggPD0gMCB8fCAoc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0ID49IHNwZWxsaW5nUmFuZ2VFbmRP
ZmZzZXQgJiYgKCFtYXJrR3JhbW1hciB8fCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCA+PSBncmFt
bWFyUmFuZ2VFbmRPZmZzZXQpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIGlmIChwZXJm
b3JtVGV4dENoZWNraW5nKSB7CisgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2Vs
ZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7CisgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IG9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAg
ICAgICAgICAgb2Zmc2V0QXNSYW5nZS0+c2V0RW5kKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQo
KS5jb250YWluZXJOb2RlKCksIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5jb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCksIGVjKTsKKyAgICAgICAgICAgIGlmIChlYyA9PSAwKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChvZmZzZXRBc1JhbmdlLmdldCgpKTsKKwkJcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0g
dHJ1ZTsKKwkJYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IChzZWxlY3Rp
b25PZmZzZXQgPiBwYXJhZ3JhcGhMZW5ndGgpID8gdHJ1ZSA6IGZhbHNlOworCSAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0
czsKLSAgICBjbGllbnQtPmNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdy
YXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBtYXJrR3Jh
bW1hciwgcmVzdWx0cyk7CisgICAgdWludDY0X3QgY2hlY2tpbmdUeXBlcyA9IG1hcmtHcmFtbWFy
ID8gKDEgPDwgMiB8IDEgPDwgMSkgOiAoMSA8PCAxKTsKKyAgICBpZiAocGVyZm9ybVRleHRDaGVj
a2luZykgeworICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQor
ICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSAxIDw8IDU7CisgICAgICAgIGlmIChpc0F1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSAxIDw8IDY7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IDEgPDwgNzsKKyAgICAgICAgaWYg
KGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSAxIDw8IDg7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gMSA8PCA5OworICAg
IH0KKyAgICBjbGllbnQoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNo
YXJhY3RlcnMoKSwgcGFyYWdyYXBoTGVuZ3RoLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKKyAg
ICAKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkr
KykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRz
W2ldOwotICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRUeXBlID09IDEgJiYgcmVzdWx0LT5sb2Nh
dGlvbiA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJl
c3VsdC0+bGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3Vi
cmFuZ2Uoc3BlbGxpbmdSYW5nZSwgcmVzdWx0LT5sb2NhdGlvbiAtIHNwZWxsaW5nUmFuZ2VTdGFy
dE9mZnNldCwgcmVzdWx0LT5sZW5ndGgpOworICAgICAgICBpbnQgcmVzdWx0TG9jYXRpb24gPSBy
ZXN1bHQtPmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgaW50IHJl
c3VsdExlbmd0aCA9IHJlc3VsdC0+bGVuZ3RoOworICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRU
eXBlID09IDEgJiYgcmVzdWx0TG9jYXRpb24gPj0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0ICYm
IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQp
IHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9u
ID49IDApOworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1JhbmdlLCByZXN1bHRMb2NhdGlvbiAtIHNwZWxs
aW5nUmFuZ2VTdGFydE9mZnNldCwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIG1pc3NwZWxs
aW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+YWRkTWFya2VyKG1pc3Nw
ZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAobWFya0dyYW1tYXIgJiYgcmVzdWx0LT5yZXN1bHRUeXBlID09IDIgJiYgcmVzdWx0
LT5sb2NhdGlvbiA8IGdyYW1tYXJSYW5nZUVuZE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsg
cmVzdWx0LT5sZW5ndGggPiBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCkgewotICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOworICAg
ICAgICB9IGVsc2UgaWYgKG1hcmtHcmFtbWFyICYmIHJlc3VsdC0+cmVzdWx0VHlwZSA9PSAyICYm
IHJlc3VsdExvY2F0aW9uIDwgZ3JhbW1hclJhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9u
ICsgcmVzdWx0TGVuZ3RoID4gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAg
IEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGor
KykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1
bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4g
MCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQt
PmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAm
JiByZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9
IGdyYW1tYXJSYW5nZUVuZE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoZ3JhbW1hclJhbmdl
LCByZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiAtIGdyYW1tYXJSYW5nZVN0YXJ0
T2Zmc2V0LCBkZXRhaWwtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0
aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1
bHRMb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBncmFtbWFy
UmFuZ2VFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBiYWRH
cmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGdyYW1tYXJSYW5nZSwgcmVzdWx0
TG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uIC0gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIGRl
dGFpbC0+bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENv
bnRhaW5lcihlYyktPmRvY3VtZW50KCktPmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHBlcmZvcm1U
ZXh0Q2hlY2tpbmcgJiYgKHJlc3VsdC0+cmVzdWx0VHlwZSA9PSA1IHx8IHJlc3VsdC0+cmVzdWx0
VHlwZSA9PSA2IHx8IHJlc3VsdC0+cmVzdWx0VHlwZSA9PSA3IHx8IHJlc3VsdC0+cmVzdWx0VHlw
ZSA9PSA4IHx8IHJlc3VsdC0+cmVzdWx0VHlwZSA9PSA5KSAmJiByZXN1bHRMb2NhdGlvbiArIHJl
c3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsg
cmVzdWx0TGVuZ3RoID49IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCkgeworICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CisgICAgICAg
ICAgICBpbnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1bHQtPnJlcGxhY2VtZW50Lmxlbmd0aCgp
OworICAgICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gKHJlcGxhY2VtZW50TGVuZ3RoID4g
MCk7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlLmdldCgpLCByZXN1bHRMb2NhdGlvbiwgcmVz
dWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gcmVwbGFjZW1lbnRTZWxl
Y3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBp
ZiAoZG9SZXBsYWNlbWVudCAmJiByZXBsYWNlbWVudFNlbGVjdGlvbiAhPSBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+c2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKHJlcGxhY2VtZW50U2VsZWN0aW9uKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHJlcGxhY2VtZW50U2Vs
ZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZG9SZXBsYWNlbWVu
dCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChkb1JlcGxhY2VtZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+cmVzdWx0
VHlwZSA9PSA1KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW5FZGl0UmljaGx5KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNy
ZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCByZXN1bHQtPnJlcGxhY2VtZW50KSk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXN1bHQt
PnJlcGxhY2VtZW50LCByZXBsYWNlbWVudFJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25U
eXBlZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJl
c3VsdC0+cmVwbGFjZW1lbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHNw
ZWxsaW5nUmFuZ2VFbmRPZmZzZXQgKz0gcmVwbGFjZW1lbnRMZW5ndGggLSByZXN1bHRMZW5ndGg7
CisgICAgICAgICAgICAgICAgICAgIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgKz0gcmVwbGFjZW1l
bnRMZW5ndGggLSByZXN1bHRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRM
b2NhdGlvbiA8IHNlbGVjdGlvbk9mZnNldCkKKwkJCXNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNl
bWVudExlbmd0aCAtIHJlc3VsdExlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgaWYgKHNlbGVjdGlvbkNoYW5nZWQpIHsK
KyAgICAgICAgc2V0RW5kKHBhcmFncmFwaFJhbmdlLmdldCgpLCBlbmRPZlBhcmFncmFwaChzdGFy
dE9mTmV4dFBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+ZW5kUG9zaXRpb24oKSkpKTsKKyAgICAg
ICAgaW50IG5ld0xlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoUmFu
Z2UuZ2V0KCkpOworICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlICYmIHNl
bGVjdGlvbk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBuZXdMZW5ndGgpIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKHBhcmFncmFwaFJhbmdlLmdldCgpLCAwLCBzZWxlY3Rpb25PZmZzZXQpOworCSAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigp
LCBET1dOU1RSRUFNKTsKKyAgICAgICAgfSBlbHNlIHsKKwkgICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCktPm1vdmVUbyhtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOworCSAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKwl9CisJaWYgKGFkanVz
dFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCisJICAgIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIH0KIH0KIAogI2VuZGlmCkBA
IC0yMjA0LDcgKzIzNjIsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNsaWVudCgpLCBzcGVsbGluZ1NlbGVjdGlvbi50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAg
ICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHNwZWxsaW5nU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNo
ZWNraW5nRW5hYmxlZCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIGZhbHNlKTsKICNlbHNlCiAgICAgbWFya01pc3NwZWxsaW5ncyhzcGVsbGluZ1NlbGVjdGlv
bik7CiAgICAgaWYgKG1hcmtHcmFtbWFyKQpAQCAtMjIxMiw2ICsyMzcwLDMxIEBAIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW0KICNlbmRpZgogfQogCit2b2lkIEVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24gJnApCit7CisgICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisgICAgCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBW
aXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZX
b3JkKHAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHAsIFJpZ2h0V29yZElmT25C
b3VuZGFyeSkpOworICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkgeworICAgICAg
ICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxlU2VsZWN0aW9uKHN0
YXJ0T2ZTZW50ZW5jZShwKSwgZW5kT2ZTZW50ZW5jZShwKSk7CisgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpLCB0cnVlLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMoYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBmYWxzZSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCB0cnVl
KTsKKyAgICB9CisjZWxzZQorICAgIC8vIENoZWNrIHNwZWxsaW5nIG9mIG9uZSB3b3JkCisgICAg
bWFya01pc3NwZWxsaW5ncyhWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHAsIExlZnRXb3Jk
SWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpKTsKKyAg
ICAKKyAgICBpZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgLy8gQ2hlY2sgZ3JhbW1hciBvZiBlbnRpcmUgc2VudGVuY2UKKyAgICBtYXJr
QmFkR3JhbW1hcihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZShwKSwgZW5kT2ZTZW50
ZW5jZShwKSkpOworI2VuZGlmCit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VG
b3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiB7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnRBdFBvaW50KHdpbmRvd1BvaW50KTsKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtNaXNz
cGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya0JhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJv
b2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24p
OworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7Cisg
ICAgdm9pZCBsb3dlcmNhc2VXb3JkKCk7CisgICAgdm9pZCBjYXBpdGFsaXplV29yZCgpOworICAg
IHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbCgpOworICAgIGJvb2wgc3Vic3RpdHV0aW9uc1Bh
bmVsSXNTaG93aW5nKCk7CisgICAgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOworICAg
IGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRv
Z2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCk7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uKCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7Cisg
ICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgYm9vbCBpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpOworICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCk7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24o
KTsKKyAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoUmFu
Z2UgKnNwZWxsaW5nUmFuZ2UsIGJvb2wgbWFya0dyYW1tYXIsIFJhbmdlICpncmFtbWFyUmFuZ2Us
IGJvb2wgcGVyZm9ybVRleHRDaGVja2luZyk7CisjZW5kaWYKICAgICB2b2lkIGFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uID0gZmFsc2UpOwogICAgIHZv
aWQgc2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgpOwogICAgIGJvb2wgc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkocmV2aXNpb24gNDI3NTAp
CisrKyBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5OSw4ICsyOTksOCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRl
CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKCkKIHsKLSAg
ICBtYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoKTsKICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhpcyk7CisgICAgbWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0MSwxMiArMzQxLDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IE5TQXJyYXkqIHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbihGcmFtZSopIHsgcmV0dXJuIDA7
IH0KICNlbmRpZgogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2aXJ0dWFs
IHZvaWQgdXBwZXJjYXNlV29yZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb3dlcmNhc2VXb3Jk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhcGl0YWxpemVXb3JkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29s
IHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgeyB9CisgICAgdmlydHVhbCBib29s
IGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rp
b24oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpIHsgfQor
I2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50LCBpbnQqLCBpbnQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJp
bmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGludCop
IHsgfQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3Bl
bGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIGJvb2wsIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgdWludDY0X3QsIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JikgeyB9OwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikgeyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNDI3NTApCisrKyBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwzOCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNob3dDb2xvclBhbmVsKCk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgorI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVy
Q2FzZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dXBwZXJjYXNlV29yZCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2Vy
Q2FzZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+bG93ZXJjYXNlV29yZCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6
ZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FwaXRhbGl6ZVdvcmQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0
dXRpb25zOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3Vic3RpdHV0aW9uc1Bh
bmVsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTbWFydENvcHlQYXN0ZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlU21h
cnRJbnNlcnREZWxldGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50
b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6CisgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3M6
CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rp
b24oKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z1RleHRSZXBsYWNlbWVudDoKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0
b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgorICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24o
KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5p
bnNwZWN0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CShyZXZpc2lvbiA0Mjc1MCkKKysrIFdlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDExIEBAIHN0cnVjdCBHcmFtbWFyRGV0YWlsIHsKIH07CiAK
IHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewotICAgIGludCByZXN1bHRUeXBlOyAvLyAxIGZv
ciBzcGVsbGluZywgMiBmb3IgZ3JhbW1hcgorICAgIGludCByZXN1bHRUeXBlOyAvLyAxIGZvciBz
cGVsbGluZywgMiBmb3IgZ3JhbW1hciwgNSBmb3IgVVJMLCA2IGZvciBxdW90ZSwgNyBmb3IgZGFz
aCwgOCBmb3IgcmVwbGFjZW1lbnQsIDkgZm9yIGNvcnJlY3Rpb24KICAgICBpbnQgbG9jYXRpb247
CiAgICAgaW50IGxlbmd0aDsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsKKyAg
ICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwogIAogY2xhc3MgRWRpdG9yQ2xpZW50IHsKQEAgLTEz
MywxMiArMTM0LDMxIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBsb3dlcmNhc2VXb3JkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYXBpdGFs
aXplV29yZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChi
b29sIHNob3cpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9u
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5T
cGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5X
b3JkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09m
U3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9u
LCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3Jh
bW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAw
OwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxp
bmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGJv
b2wgY2hlY2tHcmFtbWFyLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4
dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRl
dGFpbCYgZGV0YWlsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL21h
Yy9XZWJDb3JlVmlld0ZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dl
YkNvcmVWaWV3RmFjdG9yeS5oCShyZXZpc2lvbiA0Mjc1MCkKKysrIFdlYkNvcmUvcGFnZS9tYWMv
V2ViQ29yZVZpZXdGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDE4IEBACiAt
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb247CiAtIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OwogLSAoTlNTdHJpbmcgKiljb250
ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRl
bVRhZ1Nob3dTdWJzdGl0dXRpb25zOihib29sKXNob3c7CistIChOU1N0cmluZyAqKWNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdTbWFydFF1b3RlczsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNo
ZXM7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3M7CistIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDsKKy0gKE5TU3RyaW5nICop
Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudTsKKy0gKE5TU3RyaW5nICopY29u
dGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJ
dGVtVGFnTWFrZUxvd2VyQ2FzZTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ2Fw
aXRhbGl6ZTsKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7
CiAKIC0gKE5TU3RyaW5nICopc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0OwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZXh0TWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMSArMTEyLDIxIEBA
IHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFNwZWxsaW5nQW5kR3IKICAgICAgICAgY29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkpOwogICAgIENvbnRleHRNZW51
SXRlbSBncmFtbWFyV2l0aFNwZWxsaW5nKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZywgCiAgICAgICAgIGNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpKTsKKyNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQorICAgIENvbnRleHRNZW51SXRlbSBjb3JyZWN0U3BlbGxpbmcoQ2hlY2thYmxlQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSwgCisgICAg
ICAgIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKSk7Cisj
ZW5kaWYKIAogICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbShzaG93U3BlbGxp
bmdQYW5lbCk7CiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGNoZWNrU3Bl
bGxpbmcpOworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgc3BlbGxpbmdBbmRHcmFtbWFy
TWVudS5hcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOworI2VuZGlmCiAgICAgc3BlbGxpbmdB
bmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGNoZWNrQXNZb3VUeXBlKTsKICAgICBzcGVsbGluZ0Fu
ZEdyYW1tYXJNZW51LmFwcGVuZEl0ZW0oZ3JhbW1hcldpdGhTcGVsbGluZyk7CisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICBzcGVsbGluZ0FuZEdyYW1tYXJNZW51LmFwcGVuZEl0ZW0oY29y
cmVjdFNwZWxsaW5nKTsKKyNlbmRpZgogCiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudUl0ZW0u
c2V0U3ViTWVudSgmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7CiB9CkBAIC0xODksNiArMTk5LDQ1
IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRleHREaXJlY3Rpb24KIH0KICNlbmRpZgog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKK3N0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFN1
YnN0aXR1dGlvbnNTdWJNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgQ29udGV4dE1l
bnVJdGVtJiBzdWJzdGl0dXRpb25zTWVudUl0ZW0pCit7CisgICAgQ29udGV4dE1lbnUgc3Vic3Rp
dHV0aW9uc01lbnUocmVzdWx0KTsKKworICAgIENvbnRleHRNZW51SXRlbSBzaG93U3Vic3RpdHV0
aW9ucyhBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucywgY29u
dGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnModHJ1ZSkpOworICAgIENvbnRleHRNZW51
SXRlbSBzbWFydENvcHlQYXN0ZShDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1U
YWdTbWFydENvcHlQYXN0ZSwgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKSk7Cisg
ICAgQ29udGV4dE1lbnVJdGVtIHNtYXJ0UXVvdGVzKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzLCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rlcygp
KTsKKyAgICBDb250ZXh0TWVudUl0ZW0gc21hcnREYXNoZXMoQ2hlY2thYmxlQWN0aW9uVHlwZSwg
Q29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMsIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFz
aGVzKCkpOworICAgIENvbnRleHRNZW51SXRlbSBzbWFydExpbmtzKENoZWNrYWJsZUFjdGlvblR5
cGUsIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MsIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
TGlua3MoKSk7CisgICAgQ29udGV4dE1lbnVJdGVtIHRleHRSZXBsYWNlbWVudChDaGVja2FibGVB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQsIGNvbnRleHRNZW51
SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpKTsKKworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVu
ZEl0ZW0oc2hvd1N1YnN0aXR1dGlvbnMpOworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0
ZW0oKnNlcGFyYXRvckl0ZW0oKSk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShz
bWFydENvcHlQYXN0ZSk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydFF1
b3Rlcyk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydERhc2hlcyk7Cisg
ICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydExpbmtzKTsKKyAgICBzdWJzdGl0
dXRpb25zTWVudS5hcHBlbmRJdGVtKHRleHRSZXBsYWNlbWVudCk7CisKKyAgICBzdWJzdGl0dXRp
b25zTWVudUl0ZW0uc2V0U3ViTWVudSgmc3Vic3RpdHV0aW9uc01lbnUpOworfQorCitzdGF0aWMg
dm9pZCBjcmVhdGVBbmRBcHBlbmRUcmFuc2Zvcm1hdGlvbnNTdWJNZW51KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgQ29udGV4dE1lbnVJdGVtJiB0cmFuc2Zvcm1hdGlvbnNNZW51SXRlbSkK
K3sKKyAgICBDb250ZXh0TWVudSB0cmFuc2Zvcm1hdGlvbnNNZW51KHJlc3VsdCk7CisKKyAgICBD
b250ZXh0TWVudUl0ZW0gbWFrZVVwcGVyQ2FzZShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1U
YWdNYWtlVXBwZXJDYXNlLCBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCkpOworICAg
IENvbnRleHRNZW51SXRlbSBtYWtlTG93ZXJDYXNlKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ01ha2VMb3dlckNhc2UsIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKSk7Cisg
ICAgQ29udGV4dE1lbnVJdGVtIGNhcGl0YWxpemUoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVt
VGFnQ2FwaXRhbGl6ZSwgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpKTsKKworICAgIHRy
YW5zZm9ybWF0aW9uc01lbnUuYXBwZW5kSXRlbShtYWtlVXBwZXJDYXNlKTsKKyAgICB0cmFuc2Zv
cm1hdGlvbnNNZW51LmFwcGVuZEl0ZW0obWFrZUxvd2VyQ2FzZSk7CisgICAgdHJhbnNmb3JtYXRp
b25zTWVudS5hcHBlbmRJdGVtKGNhcGl0YWxpemUpOworCisgICAgdHJhbnNmb3JtYXRpb25zTWVu
dUl0ZW0uc2V0U3ViTWVudSgmdHJhbnNmb3JtYXRpb25zTWVudSk7Cit9CisjZW5kaWYKKwogc3Rh
dGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQogewog
ICAgIC8vIEN1cnJlbnQgYWxnb3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90
IGp1c3QgYSBzZXBhcmF0b3IuCkBAIC00MDcsNiArNDU2LDE2IEBAIHZvaWQgQ29udGV4dE1lbnU6
OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFNwZWxsaW5nU3ViTWVudSht
X2hpdFRlc3RSZXN1bHQsIFNwZWxsaW5nTWVudUl0ZW0pOwogICAgICAgICAgICAgYXBwZW5kSXRl
bShTcGVsbGluZ01lbnVJdGVtKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisg
ICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gc3Vic3RpdHV0aW9uc01lbnVJdGVtKFN1Ym1lbnVU
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwgCisgICAgICAgICAgICAg
ICAgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKSk7CisgICAgICAgICAgICBj
cmVhdGVBbmRBcHBlbmRTdWJzdGl0dXRpb25zU3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIHN1YnN0
aXR1dGlvbnNNZW51SXRlbSk7CisgICAgICAgICAgICBhcHBlbmRJdGVtKHN1YnN0aXR1dGlvbnNN
ZW51SXRlbSk7CisgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gdHJhbnNmb3JtYXRpb25zTWVu
dUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUs
IAorICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUo
KSk7CisgICAgICAgICAgICBjcmVhdGVBbmRBcHBlbmRUcmFuc2Zvcm1hdGlvbnNTdWJNZW51KG1f
aGl0VGVzdFJlc3VsdCwgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0pOworICAgICAgICAgICAgYXBw
ZW5kSXRlbSh0cmFuc2Zvcm1hdGlvbnNNZW51SXRlbSk7CisjZW5kaWYKICAgICAgICAgICAgIENv
bnRleHRNZW51SXRlbSAgRm9udE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1U
YWdGb250TWVudSwgCiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUo
KSk7CiAgICAgICAgICAgICBjcmVhdGVBbmRBcHBlbmRGb250U3ViTWVudShtX2hpdFRlc3RSZXN1
bHQsIEZvbnRNZW51SXRlbSk7CkBAIC01ODQsNiArNjQzLDUzIEBAIHZvaWQgQ29udGV4dE1lbnU6
OmNoZWNrT3JFbmFibGVJZk5lZWRlZCgKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmc6CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTdWJzdGl0dXRpb25zTWVudToKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdU
cmFuc2Zvcm1hdGlvbnNNZW51OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6CisgICAgICAgICAgICBpZiAoZnJhbWUt
PmVkaXRvcigpLT5zdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSkKKyAgICAgICAgICAgICAg
ICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGZhbHNl
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250
ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyh0cnVlKSk7CisgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2U6CisgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKKyAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgorICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJh
bWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToKKyNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
KyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91
bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
OworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTbWFydExpbmtzOgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyNlbmRpZgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dFJl
cGxhY2VtZW50OgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOworI2VuZGlmCisgICAg
ICAgICAgICBicmVhazsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdHb0JhY2s6CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFt
ZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZCgtMSk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0NvbnRleHRNZW51SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZXh0TWVudUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZh
dWx0LAogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQs
CiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCwKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGlu
Z0F1dG9tYXRpY2FsbHksCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNN
ZW51LAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucywKKyAgICAg
ICAgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsCisgICAgICAgIENvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0UXVvdGVzLAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
cywKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcywKKyAgICAgICAgQ29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50LAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdU
cmFuc2Zvcm1hdGlvbnNNZW51LAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJD
YXNlLAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlLAorICAgICAgICBD
b250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplLAorI2VuZGlmCiAgICAgICAgIENvbnRleHRNZW51
SXRlbUJhc2VBcHBsaWNhdGlvblRhZyA9IDEwMDAwCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVu
dSgpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCk7CiAgICAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZygpOworICAgIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCk7CisgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCk7CisgICAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7CisgICAgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0UXVvdGVzKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
RGFzaGVzKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsKKyAg
ICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CisgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKTsKKyAgICBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdNYWtlTG93ZXJDYXNlKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0
YWxpemUoKTsKICNlbmRpZgogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxl
bWVudCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NN
YWMubW0JKHJldmlzaW9uIDQyNzUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVk
U3RyaW5nc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMywxMDIgQEAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5
KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2Vi
Q29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RT
cGVsbGluZ0F1dG9tYXRpY2FsbHldOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3Rp
dHV0aW9uc01lbnUoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBy
ZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVt
VGFnU3Vic3RpdHV0aW9uc01lbnVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoYm9vbCBzaG93KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6c2hvd107CisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250
ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTbWFydFF1b3RlcygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0
ZW1UYWdTbWFydFF1b3Rlc107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
cygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dl
YkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERh
c2hlc107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCkKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3NdOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkKK3sKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudF07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKK3sKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnVdOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlXTsKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0g
Y29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDYXBpdGFsaXplKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisg
ICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51
SXRlbVRhZ0NhcGl0YWxpemVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVs
ZW1lbnQoKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFdlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gNDI3
NTApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDktMDQtMjIgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjcyNDEwNj4gV2ViVmlld3MgbmVlZCB0byBpbXBsZW1lbnQgdGV4dCBjaGVja2luZwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCiAyMDA5LTA0LTIxICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgU3RyaW5nc05vdFRvQmVMb2NhbGl6
ZWQudHh0IGZvciByZWNlbnQgY2hhbmdlcwpJbmRleDogV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9j
YWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA0Mjc1MCkKKysrIFdlYktpdC9FbmdsaXNoLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi3+/y8q
IHdpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9u
IHN5bWJvbCwgbm90IHgpICovCiv//i8qIHdpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpICovCiAiJUAgJWTXJWQgcGl4
ZWxzIiA9ICIlQCAlZNclZCBwaXhlbHMiOwogCiAvKiBMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVt
YmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93
cyBtdWx0aXBsZSBmaWxlcyAqLwpAQCAtMjgsNiArMjgsOSBAQAogLyogQm9sZCBjb250ZXh0IG1l
bnUgaXRlbSAqLwogIkJvbGQiID0gIkJvbGQiOwogCisvKiBDYXBpdGFsaXplIGNvbnRleHQgbWVu
dSBpdGVtICovCisiQ2FwaXRhbGl6ZSIgPSAiQ2FwaXRhbGl6ZSI7CisKIC8qIFVuZG8gYWN0aW9u
IG5hbWUgKi8KICJDZW50ZXIgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJDZW50ZXIiOwogCkBAIC01
Niw3ICs1OSw3IEBACiAiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIiA9ICJDbGVhciBSZWNlbnQgU2Vh
cmNoZXMiOwogCiAvKiBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSBkZXNjcmlwdGlvbiAq
LwotIkNvbnRlbnQgd2l0aCBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbiAZdCBiZSBzaG93biIgPSAi
Q29udGVudCB3aXRoIHNwZWNpZmllZCBNSU1FIHR5cGUgY2FuIBl0IGJlIHNob3duIjsKKyJDb250
ZW50IHdpdGggc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW4ZIHQgYmUgc2hvd24iID0gIkNvbnRlbnQg
d2l0aCBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbhkgdCBiZSBzaG93biI7CiAKIC8qIENvcHkgY29u
dGV4dCBtZW51IGl0ZW0gKi8KICJDb3B5IiA9ICJDb3B5IjsKQEAgLTY3LDYgKzcwLDkgQEAKIC8q
IENvcHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkNvcHkgTGluayIgPSAiQ29weSBMaW5r
IjsKIAorLyogQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVt
ICovCisiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IiA9ICJDb3JyZWN0IFNwZWxsaW5n
IEF1dG9tYXRpY2FsbHkiOworCiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiQ3JlYXRlIExpbmsg
KFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJDcmVhdGUgTGluayI7CiAKQEAgLTEwOSw2ICsxMTUsOSBA
QAogLyogbWVudSBpdGVtIHRpdGxlICovCiAiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIgPSAi
SGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciI7CiAKKy8qIG1lbnUgaXRlbSB0aXRsZSAqLworIkhp
ZGUgU3Vic3RpdHV0aW9ucyIgPSAiSGlkZSBTdWJzdGl0dXRpb25zIjsKKwogLyogVGhlIGRlZmF1
bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nICovCiAiSVNPLTg4NTktMSIgPSAiSVNPLTg4
NTktMSI7CiAKQEAgLTE1NCw2ICsxNjMsMTIgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJM
b3dlciBCYXNlbGluZSAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkxvd2VyIEJhc2VsaW5lIjsKIAor
LyogTWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtICovCisiTWFrZSBMb3dlciBDYXNl
IiA9ICJNYWtlIExvd2VyIENhc2UiOworCisvKiBNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51
IGl0ZW0gKi8KKyJNYWtlIFVwcGVyIENhc2UiID0gIk1ha2UgVXBwZXIgQ2FzZSI7CisKIC8qIE5v
IEd1ZXNzZXMgRm91bmQgY29udGV4dCBtZW51IGl0ZW0gKi8KICJObyBHdWVzc2VzIEZvdW5kIiA9
ICJObyBHdWVzc2VzIEZvdW5kIjsKIApAQCAtMjUwLDE0ICsyNjUsMjkgQEAKIC8qIFVuZG8gYWN0
aW9uIG5hbWUgKi8KICJTZXQgV3JpdGluZyBEaXJlY3Rpb24gKFVuZG8gYWN0aW9uIG5hbWUpIiA9
ICJTZXQgV3JpdGluZyBEaXJlY3Rpb24iOwogCisvKiBTaG93IGNvbG9ycyBjb250ZXh0IG1lbnUg
aXRlbSAqLworIlNob3cgQ29sb3JzIiA9ICJTaG93IENvbG9ycyI7CisKIC8qIFNob3cgZm9udHMg
Y29udGV4dCBtZW51IGl0ZW0gKi8KICJTaG93IEZvbnRzIiA9ICJTaG93IEZvbnRzIjsKIAogLyog
bWVudSBpdGVtIHRpdGxlICovCiAiU2hvdyBTcGVsbGluZyBhbmQgR3JhbW1hciIgPSAiU2hvdyBT
cGVsbGluZyBhbmQgR3JhbW1hciI7CiAKLS8qIFNob3cgY29sb3JzIGNvbnRleHQgbWVudSBpdGVt
ICovCi0iU2hvdyBjb2xvcnMiID0gIlNob3cgY29sb3JzIjsKKy8qIG1lbnUgaXRlbSB0aXRsZSAq
LworIlNob3cgU3Vic3RpdHV0aW9ucyIgPSAiU2hvdyBTdWJzdGl0dXRpb25zIjsKKworLyogU21h
cnQgQ29weS9QYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSAqLworIlNtYXJ0IENvcHkvUGFzdGUiID0g
IlNtYXJ0IENvcHkvUGFzdGUiOworCisvKiBTbWFydCBEYXNoZXMgY29udGV4dCBtZW51IGl0ZW0g
Ki8KKyJTbWFydCBEYXNoZXMiID0gIlNtYXJ0IERhc2hlcyI7CisKKy8qIFNtYXJ0IExpbmtzIGNv
bnRleHQgbWVudSBpdGVtICovCisiU21hcnQgTGlua3MiID0gIlNtYXJ0IExpbmtzIjsKKworLyog
U21hcnQgUXVvdGVzIGNvbnRleHQgbWVudSBpdGVtICovCisiU21hcnQgUXVvdGVzIiA9ICJTbWFy
dCBRdW90ZXMiOwogCiAvKiBTcGVlY2ggY29udGV4dCBzdWItbWVudSBpdGVtICovCiAiU3BlZWNo
IiA9ICJTcGVlY2giOwpAQCAtMzA0LDI2ICszMzQsMzIgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUg
Ki8KICJTdWJzY3JpcHQgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJTdWJzY3JpcHQiOwogCisvKiBT
dWJzdGl0dXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSAqLworIlN1YnN0aXR1dGlvbnMiID0g
IlN1YnN0aXR1dGlvbnMiOworCiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiU3VwZXJzY3JpcHQg
KFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJTdXBlcnNjcmlwdCI7CiAKKy8qIFRleHQgUmVwbGFjZW1l
bnQgY29udGV4dCBtZW51IGl0ZW0gKi8KKyJUZXh0IFJlcGxhY2VtZW50IiA9ICJUZXh0IFJlcGxh
Y2VtZW50IjsKKwogLyogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uICovCi0i
VGhlIFVSTCBjYW4gGXQgYmUgc2hvd24iID0gIlRoZSBVUkwgY2FuIBl0IGJlIHNob3duIjsKKyJU
aGUgVVJMIGNhbhkgdCBiZSBzaG93biIgPSAiVGhlIFVSTCBjYW4ZIHQgYmUgc2hvd24iOwogCiAv
KiBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnaW4gZGVzY3JpcHRpb24gKi8KLSJUaGUgcGx1Zy1p
biBjYW4gGXQgYmUgZm91bmQiID0gIlRoZSBwbHVnLWluIGNhbiAZdCBiZSBmb3VuZCI7CisiVGhl
IHBsdWctaW4gY2FuGSB0IGJlIGZvdW5kIiA9ICJUaGUgcGx1Zy1pbiBjYW4ZIHQgYmUgZm91bmQi
OwogCiAvKiBXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnaW4gZGVzY3JpcHRpb24gKi8KLSJUaGUg
cGx1Zy1pbiBjYW4gGXQgYmUgbG9hZGVkIiA9ICJUaGUgcGx1Zy1pbiBjYW4gGXQgYmUgbG9hZGVk
IjsKKyJUaGUgcGx1Zy1pbiBjYW4ZIHQgYmUgbG9hZGVkIiA9ICJUaGUgcGx1Zy1pbiBjYW4ZIHQg
YmUgbG9hZGVkIjsKIAogLyogcHJvbXB0IHN0cmluZyBpbiBhdXRoZW50aWNhdGlvbiBwYW5lbCAq
LwotIlRoZSB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgeW91IGVudGVyZWQgZm9yIGFyZWEgIBwlQCAd
IG9uICVAIHdhcyBpbmNvcnJlY3QuIE1ha2Ugc3VyZSB5b3UgGXJlIGVudGVyaW5nIHRoZW0gY29y
cmVjdGx5LCBhbmQgdGhlbiB0cnkgYWdhaW4uIiA9ICJUaGUgdXNlciBuYW1lIG9yIHBhc3N3b3Jk
IHlvdSBlbnRlcmVkIGZvciBhcmVhICAcJUAgHSBvbiAlQCB3YXMgaW5jb3JyZWN0LiBNYWtlIHN1
cmUgeW91IBlyZSBlbnRlcmluZyB0aGVtIGNvcnJlY3RseSwgYW5kIHRoZW4gdHJ5IGFnYWluLiI7
CisiVGhlIHVzZXIgbmFtZSBvciBwYXNzd29yZCB5b3UgZW50ZXJlZCBmb3IgYXJlYSAcICVAHSAg
b24gJUAgd2FzIGluY29ycmVjdC4gTWFrZSBzdXJlIHlvdRkgcmUgZW50ZXJpbmcgdGhlbSBjb3Jy
ZWN0bHksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iID0gIlRoZSB1c2VyIG5hbWUgb3IgcGFzc3dvcmQg
eW91IGVudGVyZWQgZm9yIGFyZWEgHCAlQB0gIG9uICVAIHdhcyBpbmNvcnJlY3QuIE1ha2Ugc3Vy
ZSB5b3UZIHJlIGVudGVyaW5nIHRoZW0gY29ycmVjdGx5LCBhbmQgdGhlbiB0cnkgYWdhaW4uIjsK
IAogLyogcHJvbXB0IHN0cmluZyBpbiBhdXRoZW50aWNhdGlvbiBwYW5lbCAqLwotIlRoZSB1c2Vy
IG5hbWUgb3IgcGFzc3dvcmQgeW91IGVudGVyZWQgZm9yIHRoZSAlQCBwcm94eSBzZXJ2ZXIgJUAg
d2FzIGluY29ycmVjdC4gTWFrZSBzdXJlIHlvdSAZcmUgZW50ZXJpbmcgdGhlbSBjb3JyZWN0bHks
IGFuZCB0aGVuIHRyeSBhZ2Fpbi4iID0gIlRoZSB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgeW91IGVu
dGVyZWQgZm9yIHRoZSAlQCBwcm94eSBzZXJ2ZXIgJUAgd2FzIGluY29ycmVjdC4gTWFrZSBzdXJl
IHlvdSAZcmUgZW50ZXJpbmcgdGhlbSBjb3JyZWN0bHksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iOwor
IlRoZSB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgeW91IGVudGVyZWQgZm9yIHRoZSAlQCBwcm94eSBz
ZXJ2ZXIgJUAgd2FzIGluY29ycmVjdC4gTWFrZSBzdXJlIHlvdRkgcmUgZW50ZXJpbmcgdGhlbSBj
b3JyZWN0bHksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iID0gIlRoZSB1c2VyIG5hbWUgb3IgcGFzc3dv
cmQgeW91IGVudGVyZWQgZm9yIHRoZSAlQCBwcm94eSBzZXJ2ZXIgJUAgd2FzIGluY29ycmVjdC4g
TWFrZSBzdXJlIHlvdRkgcmUgZW50ZXJpbmcgdGhlbSBjb3JyZWN0bHksIGFuZCB0aGVuIHRyeSBh
Z2Fpbi4iOwogCiAvKiBwcm9tcHQgc3RyaW5nIGluIGF1dGhlbnRpY2F0aW9uIHBhbmVsICovCi0i
VGhlIHVzZXIgbmFtZSBvciBwYXNzd29yZCB5b3UgZW50ZXJlZCBmb3IgdGhpcyBhcmVhIG9uICVA
IHdhcyBpbmNvcnJlY3QuIE1ha2Ugc3VyZSB5b3UgGXJlIGVudGVyaW5nIHRoZW0gY29ycmVjdGx5
LCBhbmQgdGhlbiB0cnkgYWdhaW4uIiA9ICJUaGUgdXNlciBuYW1lIG9yIHBhc3N3b3JkIHlvdSBl
bnRlcmVkIGZvciB0aGlzIGFyZWEgb24gJUAgd2FzIGluY29ycmVjdC4gTWFrZSBzdXJlIHlvdSAZ
cmUgZW50ZXJpbmcgdGhlbSBjb3JyZWN0bHksIGFuZCB0aGVuIHRyeSBhZ2Fpbi4iOworIlRoZSB1
c2VyIG5hbWUgb3IgcGFzc3dvcmQgeW91IGVudGVyZWQgZm9yIHRoaXMgYXJlYSBvbiAlQCB3YXMg
aW5jb3JyZWN0LiBNYWtlIHN1cmUgeW91GSByZSBlbnRlcmluZyB0aGVtIGNvcnJlY3RseSwgYW5k
IHRoZW4gdHJ5IGFnYWluLiIgPSAiVGhlIHVzZXIgbmFtZSBvciBwYXNzd29yZCB5b3UgZW50ZXJl
ZCBmb3IgdGhpcyBhcmVhIG9uICVAIHdhcyBpbmNvcnJlY3QuIE1ha2Ugc3VyZSB5b3UZIHJlIGVu
dGVyaW5nIHRoZW0gY29ycmVjdGx5LCBhbmQgdGhlbiB0cnkgYWdhaW4uIjsKIAogLyogdGV4dCB0
aGF0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIG5lYXJseS1vYnNvbGV0ZSB3ZWIgcGFnZXMgaW4g
dGhlIGZvcm0gb2YgYSAnc2VhcmNoYWJsZSBpbmRleCcgKi8KICJUaGlzIGlzIGEgc2VhcmNoYWJs
ZSBpbmRleC4gRW50ZXIgc2VhcmNoIGtleXdvcmRzOiAiID0gIlRoaXMgaXMgYSBzZWFyY2hhYmxl
IGluZGV4LiBFbnRlciBzZWFyY2gga2V5d29yZHM6ICI7CkBAIC0zMzIsNyArMzY4LDcgQEAKICJU
aWdodGVuIEtlcm5pbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJUaWdodGVuIEtlcm5pbmciOwog
CiAvKiBwcm9tcHQgc3RyaW5nIGluIGF1dGhlbnRpY2F0aW9uIHBhbmVsICovCi0iVG8gdmlldyB0
aGlzIHBhZ2UsIHlvdSBtdXN0IGxvZyBpbiB0byBhcmVhICAcJUAgHSBvbiAlQC4iID0gIlRvIHZp
ZXcgdGhpcyBwYWdlLCB5b3UgbXVzdCBsb2cgaW4gdG8gYXJlYSAgHCVAIB0gb24gJUAuIjsKKyJU
byB2aWV3IHRoaXMgcGFnZSwgeW91IG11c3QgbG9nIGluIHRvIGFyZWEgHCAlQB0gIG9uICVALiIg
PSAiVG8gdmlldyB0aGlzIHBhZ2UsIHlvdSBtdXN0IGxvZyBpbiB0byBhcmVhIBwgJUAdICBvbiAl
QC4iOwogCiAvKiBwcm9tcHQgc3RyaW5nIGluIGF1dGhlbnRpY2F0aW9uIHBhbmVsICovCiAiVG8g
dmlldyB0aGlzIHBhZ2UsIHlvdSBtdXN0IGxvZyBpbiB0byB0aGUgJUAgcHJveHkgc2VydmVyICVA
LiIgPSAiVG8gdmlldyB0aGlzIHBhZ2UsIHlvdSBtdXN0IGxvZyBpbiB0byB0aGUgJUAgcHJveHkg
c2VydmVyICVALiI7CkBAIC0zNDAsNiArMzc2LDkgQEAKIC8qIHByb21wdCBzdHJpbmcgaW4gYXV0
aGVudGljYXRpb24gcGFuZWwgKi8KICJUbyB2aWV3IHRoaXMgcGFnZSwgeW91IG11c3QgbG9nIGlu
IHRvIHRoaXMgYXJlYSBvbiAlQDoiID0gIlRvIHZpZXcgdGhpcyBwYWdlLCB5b3UgbXVzdCBsb2cg
aW4gdG8gdGhpcyBhcmVhIG9uICVAOiI7CiAKKy8qIFRyYW5zZm9ybWF0aW9ucyBjb250ZXh0IHN1
Yi1tZW51IGl0ZW0gKi8KKyJUcmFuc2Zvcm1hdGlvbnMiID0gIlRyYW5zZm9ybWF0aW9ucyI7CisK
IC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJUdXJuIE9mZiBLZXJuaW5nIChVbmRvIGFjdGlvbiBu
YW1lKSIgPSAiVHVybiBPZmYgS2VybmluZyI7CiAKQEAgLTM3Nyw3ICs0MTYsNyBAQAogIlVzZSBT
dGFuZGFyZCBMaWdhdHVyZXMgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJVc2UgU3RhbmRhcmQgTGln
YXR1cmVzIjsKIAogLyogV2ViIEluc3BlY3RvciB3aW5kb3cgdGl0bGUgKi8KLSJXZWIgSW5zcGVj
dG9yICAUICVAIiA9ICJXZWIgSW5zcGVjdG9yICAUICVAIjsKKyJXZWIgSW5zcGVjdG9yIBQgICVA
IiA9ICJXZWIgSW5zcGVjdG9yIBQgICVAIjsKIAogLyogV3JpdGluZyBkaXJlY3Rpb24gY29udGV4
dCBzdWItbWVudSBpdGVtICovCiAiV3JpdGluZyBEaXJlY3Rpb24iID0gIldyaXRpbmcgRGlyZWN0
aW9uIjsKQEAgLTU2Nyw0ICs2MDYsNCBAQAogCiAvKiBhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIHdlYiBhcmVhICovCiAid2ViIGFyZWEiID0gIndlYiBhcmVhIjsKLQorClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNzUwKQorKysgV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NiBAQAorMjAwOS0wNC0y
MiAgRG91Z2xhcyBSLiBEYXZpZHNvbiAgPGRkYXZpZHNvQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgdGhlIHZhcmlvdXMgc3dpdGNoZXMgYW5kIGNvbnRleHQgbWVudSBpdGVtcyBuZWVkZWQgZm9y
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxl
bWVudCB0ZXh0IGNoZWNraW5nCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAg
ICAgICAgKGZpeE1lbnVzUmVjZWl2ZWRGcm9tT2xkQ2xpZW50cyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1cHBlcmNhc2VXb3Jk
KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6bG93ZXJjYXNlV29yZCk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OmNhcGl0YWxpemVXb3JkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6c2hvd1N1YnN0aXR1dGlvbnNQYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnN1
YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRv
Z2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
Ojp0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbik6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKToKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24pOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRP
ZlBhcmFncmFwaCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW06
CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnNd
KToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0
TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9y
eSBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczpdKToKKyAgICAgICAgKC1bV2Vi
Vmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGVdKToKKyAgICAgICAg
KC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXNdKToKKyAgICAg
ICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdKToKKyAg
ICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rc10pOgor
ICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1l
bnRdKToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0
ZW1UYWdNYWtlVXBwZXJDYXNlXSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRN
ZW51SXRlbVRhZ01ha2VMb3dlckNhc2VdKToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29u
dGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1X
aXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246XSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRF
bmFibGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dn
bGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0
XSk6CisgICAgICAgICgtW1dlYlZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXRE
ZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxl
ZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVu
YWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJz
dGl0dXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
RW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwog
MjAwOS0wNC0yMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJldmlzaW9uIDQyNzUwKQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDYgKzIxNiwzMSBAQCBzdGF0aWMgdm9pZCBmaXhNZW51c1JlY2VpdmVkRnJv
bU9sZENsaWVuCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdMZWZ0
VG9SaWdodDsKICAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tX
ZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVm
dF1dKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnUmlnaHRUb0xl
ZnQ7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseV1dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0
aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250
ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudV1dKQorICAgICAgICAgICAgICAgIG1vZGVy
blRhZyA9IFdlYk1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU7CisgICAgICAgICAgICBlbHNl
IGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9y
eV0gY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6dHJ1ZV1dCisgICAgICAgICAg
ICAgICAgICAgICB8fCBbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6ZmFsc2VdXSkK
KyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRp
b25zOworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZp
ZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3Rl
XV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydENvcHlQ
YXN0ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rlc11d
KQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRRdW90ZXM7
CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0Zh
Y3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdXSkKKyAg
ICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOworICAg
ICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5
IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3NdXSkKKyAgICAgICAg
ICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NtYXJ0TGlua3M7CisgICAgICAgICAg
ICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50XV0pCisgICAgICAgICAg
ICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQ7CisgICAgICAg
ICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudV1dKQorICAg
ICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVu
dTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3
RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlXV0p
CisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNl
OworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2VdXSkK
KyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U7
CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0Zh
Y3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZV1dKQorICAg
ICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnQ2FwaXRhbGl6ZTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IFdlYk1lbnVJdGVt
VGFnT3RoZXIgZm9yIGFueSBpdGVtcyBvdGhlciB0aGFuIHRoZSBvbmVzIHdlIGV4cGxpY2l0bHkg
aGFuZGxlLgogICAgICAgICAgICAgLy8gVGhlcmUncyBub3RoaW5nIHRvIHByZXZlbnQgYW4gYXBw
IGZyb20gYXBwbHlpbmcgdGhpcyB0YWcsIGJ1dCB0aGV5IGFyZSBzdXBwb3NlZCB0byBvbmx5Cklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDQyNzUwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMjUgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
TlNBcnJheSogcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CiAj
ZW5kaWYKICAgICAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNlV29yZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsb3dlcmNhc2VXb3JkKCk7CisgICAgdmlydHVhbCB2b2lkIGNhcGl0
YWxpemVXb3JkKCk7CisgICAgdmlydHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9v
bCBzaG93KTsKKyAgICB2aXJ0dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCk7
CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CisgICAgdmlydHVh
bCBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisgICAgdmlydHVh
bCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAgdmlydHVhbCBi
b29sIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uKCk7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbigpOwogCkBAIC0xMDEsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBs
ZWFybldvcmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNr
U3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxp
bmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
ZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBi
YWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ0FuZEdyYW1t
YXJPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgYm9vbCBjaGVja0dy
YW1tYXIsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMp
OworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4
dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgV1RGOjpWZWN0b3I8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBjb25z
dCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxs
aW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdyk7CkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gNDI3NTApCisrKyBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzE5LDYgKzMxOSw5MiBAQCBOU0FycmF5KiBXZWJFZGl0b3JDbGllbnQ6OnBhc3RlYm9h
cmRUeXBlCiB9CiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwcGVy
Y2FzZVdvcmQoKQoreworICAgIFttX3dlYlZpZXcgdXBwZXJjYXNlV29yZDpuaWxdOworfQorCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6bG93ZXJjYXNlV29yZCgpCit7CisgICAgW21fd2ViVmlldyBs
b3dlcmNhc2VXb3JkOm5pbF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjYXBpdGFsaXpl
V29yZCgpCit7CisgICAgW21fd2ViVmlldyBjYXBpdGFsaXplV29yZDpuaWxdOworfQorCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6c2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cpCit7Cisg
ICAgTlNQYW5lbCAqc3BlbGxpbmdQYW5lbCA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXSBzdWJzdGl0dXRpb25zUGFuZWxdOworICAgIGlmIChzaG93KQorICAgICAgICBbc3Bl
bGxpbmdQYW5lbCBvcmRlckZyb250Om5pbF07CisgICAgZWxzZQorICAgICAgICBbc3BlbGxpbmdQ
YW5lbCBvcmRlck91dDpuaWxdOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6c3Vic3RpdHV0
aW9uc1BhbmVsSXNTaG93aW5nKCkKK3sKKyAgICByZXR1cm4gW1tbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBzdWJzdGl0dXRpb25zUGFuZWxdIGlzVmlzaWJsZV07Cit9CisKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAgW21f
d2ViVmlldyB0b2dnbGVTbWFydEluc2VydERlbGV0ZTpuaWxdOworfQorCitib29sIFdlYkVkaXRv
ckNsaWVudDo6aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQoreworICAgIHJl
dHVybiBbbV93ZWJWaWV3IGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkXTsKK30K
Kwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9u
KCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOm5p
bF07Cit9CisKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25F
bmFibGVkKCkKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkXTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb24oKQoreworICAgIFttX3dlYlZpZXcgdG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbjpuaWxdOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dn
bGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dl
YlZpZXcgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKK30KKwordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpCit7CisgICAgW21f
d2ViVmlldyB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6bmlsXTsKK30KKworYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkXTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbigpCit7CisgICAgW21fd2ViVmlldyB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb246bmlsXTsKK30KKyNlbmRpZgorCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxk
SW5zZXJ0Tm9kZShOb2RlICpub2RlLCBSYW5nZSogcmVwbGFjaW5nUmFuZ2UsIEVkaXRvckluc2Vy
dEFjdGlvbiBnaXZlbkFjdGlvbikKIHsgCiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5n
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHNob3VsZEluc2VydE5vZGU6a2l0
KG5vZGUpIHJlcGxhY2luZ0RPTVJhbmdlOmtpdChyZXBsYWNpbmdSYW5nZSkgZ2l2ZW5BY3Rpb246
KFdlYlZpZXdJbnNlcnRBY3Rpb24pZ2l2ZW5BY3Rpb25dOwpAQCAtNTk1LDI0ICs2ODEsMjMgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaQogI2VuZGlmCiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nQW5kR3JhbW1hck9mUGFyYWdyYXBoKGNv
bnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBib29sIGNoZWNrR3JhbW1hciwgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNo
ZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQogICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3Ro
IGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNUZXh0Q2hlY2tpbmdUeXBlcyBjaGVja2luZ1R5cGVz
ID0gY2hlY2tHcmFtbWFyID8gKE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IHwgTlNUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IChOU1Rl
eHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSB8IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKTsK
LSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBb
dGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczpjaGVja2luZ1R5cGVzIG9wdGlvbnM6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpO
VUxMIHdvcmRDb3VudDpOVUxMXTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyBy
YW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdU
eXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwg
d29yZENvdW50Ok5VTExdOwogICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOwogICAgIGZvciAoTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewog
ICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAg
ICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVz
dWx0VHlwZV07CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZv
dW5kICYmIHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICBpZiAoTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSkgeworICAgICAgICBpZiAoTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSAxOwogICAgICAgICAg
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGVja0dyYW1tYXIgJiYgTlNUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1bHRUeXBlKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
TlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5n
VHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5j
b21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnJlc3VsdFR5
cGUgPSAyOwpAQCAtNjM0LDYgKzcxOSw0MSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tT
cGVsbGluZ0FuZEdyCiAgICAgICAgICAgICAgICAgcmVzdWx0LmRldGFpbHMuYXBwZW5kKGRldGFp
bCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwor
ICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAm
JiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKKyAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQucmVz
dWx0VHlwZSA9IDU7CisgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0g
YWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYm
IDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKKyAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQucmVz
dWx0VHlwZSA9IDY7CisgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAg
ICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVEYXNoID09IHJlc3VsdFR5cGUgJiYgMCAh
PSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZURhc2gpKSB7CisgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc3VsdFR5
cGUgPSA3OworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgPT0gcmVzdWx0VHlwZSAmJiAw
ICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKSB7Cisg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0
LnJlc3VsdFR5cGUgPSA4OworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJl
cGxhY2VtZW50U3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1bHRU
eXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
KSkgeworICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAg
IHJlc3VsdC5yZXN1bHRUeXBlID0gOTsKKyAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jl
c3VsdCByZXBsYWNlbWVudFN0cmluZ107CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9uIDQyNzUwKQorKysgV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIx
LDcgKzMyMSw3IEBACiAKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9y
cwogewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgY29sb3JzIiwgIlNob3cgY29sb3JzIGNv
bnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBDb2xvcnMiLCAi
U2hvdyBjb2xvcnMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogLSAoTlNTdHJpbmcgKiljb250
ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51CkBAIC0zNjgsNiArMzY4LDY4IEBACiAgICAgcmV0dXJu
IFVJX1NUUklORygiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0IGNvbnRleHQgbWVudSBp
dGVtIik7CiB9CiAKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxs
aW5nQXV0b21hdGljYWxseQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcnJlY3QgU3BlbGxp
bmcgQXV0b21hdGljYWxseSIsICJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTdWJz
dGl0dXRpb25zTWVudQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN1YnN0aXR1dGlvbnMiLCAi
U3Vic3RpdHV0aW9ucyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczooYm9vbClzaG93Cit7CisgICAg
aWYgKHNob3cpIAorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlvbnMi
LCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTdWJzdGl0
dXRpb25zIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQg
Q29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
Ky0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJTbWFydCBRdW90ZXMiLCAiU21hcnQgUXVvdGVzIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBEYXNoZXMiLCAiU21hcnQgRGFzaGVzIGNv
bnRleHQgbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFn
U21hcnRMaW5rcworeworICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNtYXJ0
IExpbmtzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiVGV4dCBS
ZXBsYWNlbWVudCIsICJUZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
Ky0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlRyYW5zZm9ybWF0aW9ucyIsICJUcmFuc2Zvcm1hdGlvbnMg
Y29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJ
dGVtVGFnTWFrZVVwcGVyQ2FzZQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk1ha2UgVXBwZXIg
Q2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNT
dHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiTWFrZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIgQ2FzZSBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDYXBpdGFsaXplIiwgIkNhcGl0YWxpemUgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKwogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudAogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkluc3BlY3QgRWxlbWVudCIsICJJ
bnNwZWN0IEVsZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHJldmlzaW9uIDQyNzUwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQ5LDYgKzI2NDksNDIgQEAgV0VCQ09SRV9D
T01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQogI2VuZGlm
CisKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkKKyAgICAvLyBGSVhNRSA0Nzk5MTM0OiBXZWJWaWV3IGlzIHRoZSBib3R0bGVu
ZWNrIGZvciB0aGlzIGxvZ2ljLCBidXQgd2UgbXVzdCB2YWxpZGF0ZSAKKyAgICAvLyB0aGUgc2Vs
ZWN0b3IgaGVyZSBiZWNhdXNlIHdlIGltcGxlbWVudCBpdCBoZXJlLCBhbmQgd2UgbXVzdCBpbXBs
ZW1lbnQgaXQgaGVyZSBiZWNhdXNlIHRoZSBBcHBLaXQgCisgICAgLy8gY29kZSBjaGVja3MgdGhl
IGZpcnN0IHJlc3BvbmRlci4KKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbjopKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVt
ID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xh
c3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpb
c2VsZiBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF0gPyBOU09uU3RhdGUgOiBO
U09mZlN0YXRlXTsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAgaWYgKGFjdGlvbiA9
PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjopKSB7CisgICAgICAgIE5T
TWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21l
bnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXSA/
IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
OikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07
CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11d
KQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIHJl
dHVybiBZRVM7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9t
YXRpY1RleHRSZXBsYWNlbWVudDopKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0g
KE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6
W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2Vs
ZiBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZT
dGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjopKSB7CisgICAgICAgIE5T
TWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21l
bnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7CisgICAg
fQorI2VuZGlmCiAgICAgCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBbc2VsZiBjb3Jl
Q29tbWFuZEJ5U2VsZWN0b3I6YWN0aW9uXTsKICAgICBpZiAoY29tbWFuZC5pc1N1cHBvcnRlZCgp
KSB7CkBAIC00OTQ5LDYgKzQ5ODUsODggQEAgc3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNzU2Ny
ZWVuUG9pbnRGbwogCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorCisvLyBGSVhNRSA0Nzk5MTM0OiBXZWJW
aWV3IGlzIHRoZSBib3R0bGVuZWNrIGZvciB0aGlzIGxvZ2ljLCBidXQgd2UgbXVzdCBpbXBsZW1l
bnQgdGhlc2UgbWV0aG9kcyBoZXJlIGJlY2F1c2UKKy8vIHRoZSBBcHBLaXQgY29kZSBjaGVja3Mg
dGhlIGZpcnN0IHJlc3BvbmRlci4KKworLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uRW5hYmxlZAoreworICAgIHJldHVybiBbW3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNRdW90ZVN1
YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBfd2ViVmlld10gc2V0
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOmZsYWddOworfQorCistICh2b2lkKXRv
Z2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYg
X3dlYlZpZXddIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOnNlbmRlcl07Cit9CisK
Ky0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBb
W3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOworfQorCist
ICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAg
ICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOmZsYWdd
OworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNlbmRlcgor
eworICAgIFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjpzZW5k
ZXJdOworfQorCistIChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKK3sK
KyAgICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3XSBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25F
bmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSBzZXRBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uRW5hYmxlZDpmbGFnXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246c2VuZGVyXTsKK30KKworLSAoQk9PTClpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3XSBp
c0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRdOworfQorCistICh2b2lkKXNldEF1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBfd2Vi
Vmlld10gc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDpmbGFnXTsKK30KKworLSAo
dm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcgoreworICAgIFtb
c2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50OnNlbmRlcl07Cit9
CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkCit7CisgICAg
cmV0dXJuIFtbc2VsZiBfd2ViVmlld10gaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
OihCT09MKWZsYWcKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjpzZW5kZXJdOworfQorCisjZW5kaWYKKwogLSAo
dm9pZClfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6KGlkKXNlbmRlcgogewogICAgIC8vIERp
Y3Rpb25hcnkgQVBJIHdpbGwgYWNjZXB0IGEgd2hpdGVzcGFjZS1vbmx5IHN0cmluZyBhbmQgZGlz
cGxheSBVSSBhcyBpZiBpdCB3ZXJlIHJlYWwgdGV4dCwKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gNDI3NTApCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwy
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0VuYWJs
ZWQ6KEJPT0wpZmxhZzsKIC0gKHZvaWQpdG9nZ2xlR3JhbW1hckNoZWNraW5nOihpZClzZW5kZXI7
CiAjZW5kaWYKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKKy0gKEJPT0wpaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQ7CistICh2b2lkKXNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9P
TClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2Vu
ZGVyOworLSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworLSAodm9pZClz
ZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dn
bGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOihpZClzZW5kZXI7CistIChCT09MKWlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CistICh2b2lkKXNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb246KGlkKXNlbmRlcjsKKy0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRF
bmFibGVkOworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOihCT09M
KWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2VuZGVy
OworLSAoQk9PTClpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7CistICh2b2lk
KXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKHZv
aWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CisjZW5kaWYK
IC0gKFdlYkNvcmU6OkNhY2hlZEltYWdlKilwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZTsKIC0g
KHZvaWQpc2V0UHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2U6KFdlYkNvcmU6OkNhY2hlZEltYWdl
Kilzb3VyY2U7CiAtICh2b2lkKV93ZWJfbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmU7CkluZGV4OiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lv
biA0Mjc1MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTEgQEAKICNkZWZpbmUgV2ViS2l0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkIgogI2RlZmluZSBXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgQCJXZWJDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYkdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQgQCJXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgQCJXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIEAiV2ViQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkIEAiV2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQiCisj
ZGVmaW5lIFdlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgQCJXZWJBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb25FbmFibGVkIEAiV2ViQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCIKICNk
ZWZpbmUgV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleSBAIldlYktpdERPTVBhc3Rl
QWxsb3dlZFByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktp
dEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aCBAIldlYktpdEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0
aCIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZp
c2lvbiA0Mjc1MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxOCBAQCBlbnVtIHsgCiAgICAgV2ViTWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKICAgICBXZWJNZW51SXRlbVRhZ1RleHREaXJlY3Rp
b25MZWZ0VG9SaWdodCwKICAgICBXZWJNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVm
dCwKKyAgICBXZWJNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHksCisgICAg
V2ViTWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwKKyAgICBXZWJNZW51SXRlbVRhZ1Nob3dT
dWJzdGl0dXRpb25zLAorICAgIFdlYk1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsCisgICAgV2Vi
TWVudUl0ZW1UYWdTbWFydFF1b3RlcywKKyAgICBXZWJNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzLAor
ICAgIFdlYk1lbnVJdGVtVGFnU21hcnRMaW5rcywKKyAgICBXZWJNZW51SXRlbVRhZ1RleHRSZXBs
YWNlbWVudCwKKyAgICBXZWJNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUsCisgICAgV2Vi
TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlLAorICAgIFdlYk1lbnVJdGVtVGFnTWFrZUxvd2VyQ2Fz
ZSwKKyAgICBXZWJNZW51SXRlbVRhZ0NhcGl0YWxpemUsCiAgICAgV2ViTWVudUl0ZW1UYWdCYXNl
QXBwbGljYXRpb24gPSAxMDAwMAogfTsKIEBjbGFzcyBXZWJHZW9sb2NhdGlvbjsKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA0Mjc1MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNiArNTA0LDEzIEBAIHN0YXRpYyBCT09M
IGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmwKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIK
IHN0YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7CiAjZW5kaWYKKyNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKK3N0
YXRpYyBCT09MIGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKK3N0YXRpYyBCT09M
IGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworc3RhdGljIEJPT0wgYXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWQ7CitzdGF0aWMgQk9PTCBhdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnRFbmFibGVkOworc3RhdGljIEJPT0wgYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZDsKKyNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlld1ByaXZhdGUKIApAQCAtNTMyLDYg
KzUzOSwxMyBAQCBzdGF0aWMgQk9PTCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkOwogI2lmbmRlZiBC
VUlMRElOR19PTl9USUdFUgogICAgIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkdyYW1tYXJDaGVja2lu
Z0VuYWJsZWRdOwogI2VuZGlmCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgYXV0b21hdGljUXVvdGVTdWJzdGl0dXRp
b25FbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZv
cktleTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAgIGF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gYm9vbEZvcktleTpXZWJBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07CisgICAg
YXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25F
bmFibGVkXTsKKyAgICBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkXTsKKyAgICBhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpX
ZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsKKyNlbmRpZgogICAgIAogICAg
IHVzZXNQYWdlQ2FjaGUgPSBZRVM7CiAgICAgCkBAIC0zNzA2LDYgKzM3MjAsNDMgQEAgc3RhdGlj
IFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBZRVM7CiAjZW5kaWYKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246KSkgeworICAgICAgICBCT09M
IGNoZWNrTWFyayA9IFtzZWxmIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkXTsK
KyAgICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0g
Y2xhc3NdXSkgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRl
bSAqKWl0ZW07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNP
blN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlFUzsKKyAg
ICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tpbmRP
ZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0gKm1l
bnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOmNoZWNrTWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246KSkgeworICAgICAgICBCT09MIGNoZWNrTWFyayA9
IFtzZWxmIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAgICAgICBpZiAo
WyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7Cisg
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAg
ICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09m
ZlN0YXRlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWUVTOworICAgIH0gZWxzZSBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KSkgewor
ICAgICAgICBCT09MIGNoZWNrTWFyayA9IFtzZWxmIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50
RW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tpbmRPZkNsYXNzOltO
U01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0g
KE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmNoZWNr
TWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYg
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsKKyAgICAgICAgaWYgKFsoTlNP
YmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgeworICAgICAg
ICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CisgICAgICAg
ICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZTdGF0
ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlFUzsKKyNlbmRpZgogICAgIH0KICAgICBG
T1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoVkFMSURBVEUpCiAKQEAgLTQ0NjMsMTAgKzQ1MTQs
MTMgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgIGdyYW1t
YXJDaGVja2luZ0VuYWJsZWQgPSBmbGFnOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHNldEJvb2w6Z3JhbW1hckNoZWNraW5nRW5hYmxlZCBmb3JLZXk6V2ViR3Jh
bW1hckNoZWNraW5nRW5hYmxlZF07ICAgIAogICAgIAotICAgIC8vIEZJWE1FIDQ4MTE0NDc6IHdv
cmthcm91bmQgZm9yIGxhY2sgb2YgQVBJCisjaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQKKyAg
ICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKKyNl
bHNlCiAgICAgTlNTcGVsbENoZWNrZXIgKnNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdOwogICAgIGlmIChbc3BlbGxDaGVja2VyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3VwZGF0ZUdyYW1tYXIpXSkKICAgICAgICAgW3NwZWxsQ2hlY2tlciBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVHcmFtbWFyKV07CisjZW5kaWYKICAgICAK
ICAgICAvLyBXZSBjYWxsIF9wcmVmbGlnaHRTcGVsbENoZWNrZXIgd2hlbiB0dXJuaW5nIGNvbnRp
bnVvdXMgc3BlbGwgY2hlY2tpbmcgb24sIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoYXQgaGVy
ZQogICAgIC8vIGJlY2F1c2UgZ3JhbW1hciBjaGVja2luZyBvbmx5IG9jY3VycyBvbiBjb2RlIHBh
dGhzIHRoYXQgYWxyZWFkeSBwcmVmbGlnaHQgc3BlbGwgY2hlY2tpbmcgYXBwcm9wcmlhdGVseS4K
QEAgLTQ0ODQsNiArNDUzOCwxMjkgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFl
RGVzY0ZybwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VGV4dENo
ZWNraW5nKQorCistIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCit7
CisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZDsKKyNlbmRpZgorfQorCistIChCT09MKWlzQXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICBy
ZXR1cm4gYXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ7CisjZW5kaWYKK30KKworLSAoQk9P
TClpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkCit7CisjaWYgZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIHJldHVy
biBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
OworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
Cit7CisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudEVuYWJsZWQ7CisjZW5kaWYKK30KKworLSAoQk9PTClpc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgcmV0dXJuIE5POworI2Vsc2UK
KyAgICByZXR1cm4gYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKKyNlbmRpZgor
fQorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCisKKy0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkID09IGZsYWcpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbkVuYWJsZWQgPSBmbGFnOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6YXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkIGZvcktleTpX
ZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOyAgICAKKyAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKK30KKworLSAodm9pZCl0
b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYg
c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF1dOworfQorCistICh2b2lkKXNldEF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljTGlua0RldGVj
dGlvbkVuYWJsZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkID0gZmxhZzsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBzZXRCb29sOmF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIGZvcktleTpX
ZWJBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVQYW5lbHNdOworfQorCistICh2b2lkKXRvZ2ds
ZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25F
bmFibGVkXV07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQ6KEJPT0wpZmxhZworeworICAgIGlmIChhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bkVuYWJsZWQgPSBmbGFnOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHNldEJvb2w6YXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQgZm9yS2V5OldlYkF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkXTsgICAgCisgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9CisKKy0gKHZvaWQpdG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0QXV0
b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWRdXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnRFbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljVGV4dFJlcGxhY2VtZW50
RW5hYmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCA9IGZsYWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkIGZvcktleTpX
ZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsgICAgCisgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9CisKKy0gKHZvaWQpdG9n
Z2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXRB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRpY1RleHRSZXBs
YWNlbWVudEVuYWJsZWRdXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uRW5hYmxlZCA9IGZsYWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkIGZvcktleTpXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsgICAgCisg
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9
CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOiFbc2Vs
ZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdXTsKK30KKworI2VuZGlmCisK
K0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdVbmRvYWJsZUVkaXRpbmcp
CiAKIC0gKHZvaWQpcmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlOihET01Ob2RlICopbm9kZQpJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDQyNzUwKQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw2
ICs0NjQsMjkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBGSVhNRTog
VGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1lcmdlZCBpbnRvIFdlYklCQWN0aW9ucyB3aGVuIHdlJ3Jl
IG5vdCBpbiBBUEkgZnJlZXplCiAtICh2b2lkKXRvZ2dsZUdyYW1tYXJDaGVja2luZzooaWQpc2Vu
ZGVyOwogI2VuZGlmCisKK0BlbmQKKworQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4dENo
ZWNraW5nKQorCistIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwor
LSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworLSAoQk9PTClpc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOworLSAoQk9PTClpc0F1dG9tYXRpY1RleHRSZXBs
YWNlbWVudEVuYWJsZWQ7CistIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZDsKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKy0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9u
OihpZClzZW5kZXI7CistICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihC
T09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNlbmRl
cjsKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVyOwor
LSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOihCT09MKWZsYWc7Cist
ICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2VuZGVyOworLSAodm9p
ZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2
b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOworI2VuZGlm
CisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0luTWFpbCkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29750</attachid>
            <date>2009-04-24 11:11:04 -0700</date>
            <delta_ts>2009-04-24 13:50:16 -0700</delta_ts>
            <desc>new patch taking into account suggestions from Justin</desc>
            <filename>textchecking.0424.patch</filename>
            <type>text/plain</type>
            <size>95133</size>
            <attacher name="Douglas Davidson">ddavidso</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjQgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBlZGl0aW5nIG1lY2hhbmlzbXMg
YW5kIGFkZCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxlbWVudCB0ZXh0IGNoZWNraW5nCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tOgorCiAyMDA5LTA0
LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIFJvYmVuLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDQyODI1KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFu
ZC5oIgorI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC0xMTIyLDYgKzExMjMsMTEwIEBAIGludCBFZGl0b3I6
OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKICAgICByZXR1cm4gY2xpZW50KCkgPyBjbGllbnQo
KS0+c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSA6IDA7CiB9CiAKKyNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorCit2b2lkIEVkaXRvcjo6dXBwZXJjYXNlV29yZCgpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+dXBwZXJjYXNlV29yZCgpOworfQorCit2b2lkIEVkaXRv
cjo6bG93ZXJjYXNlV29yZCgpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQo
KS0+bG93ZXJjYXNlV29yZCgpOworfQorCit2b2lkIEVkaXRvcjo6Y2FwaXRhbGl6ZVdvcmQoKQor
eworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPmNhcGl0YWxpemVXb3JkKCk7
Cit9CisKK3ZvaWQgRWRpdG9yOjpzaG93U3Vic3RpdHV0aW9uc1BhbmVsKCkKK3sKKyAgICBpZiAo
IWNsaWVudCgpKSB7CisgICAgICAgIExPR19FUlJPUigiTm8gTlNTcGVsbENoZWNrZXIiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjbGllbnQoKS0+c3Vic3RpdHV0aW9uc1Bh
bmVsSXNTaG93aW5nKCkpIHsKKyAgICAgICAgY2xpZW50KCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsaWVudCgpLT5zaG93U3Vic3RpdHV0
aW9uc1BhbmVsKHRydWUpOworICAgIH0KK30KKworYm9vbCBFZGl0b3I6OnN1YnN0aXR1dGlvbnNQ
YW5lbElzU2hvd2luZygpCit7CisgICAgaWYgKCFjbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBjbGllbnQoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCk7
Cit9CisKK3ZvaWQgRWRpdG9yOjp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAgaWYg
KGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsK
K30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkK
K3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljUXVvdGVTdWJz
dGl0dXRpb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yOjp0b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+
dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKK30KKworYm9vbCBFZGl0b3I6Omlz
QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBjbGllbnQoKSAm
JiBjbGllbnQoKS0+aXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpOworfQorCit2b2lk
IEVkaXRvcjo6dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwor
fQorCitib29sIEVkaXRvcjo6aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yOjp0b2dnbGVBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uKCkKK3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT50b2dn
bGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7Cit9CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKQoreworICAgIHJldHVybiBjbGllbnQoKSAmJiBj
bGllbnQoKS0+aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCk7Cit9CisKK3ZvaWQg
RWRpdG9yOjp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKQoreworICAgIGlmIChjbGll
bnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgp
OworfQorCitib29sIEVkaXRvcjo6aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uKCkKK3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVu
dCgpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKK30KKworI2VuZGlmCisK
IGJvb2wgRWRpdG9yOjpzaG91bGRFbmRFZGl0aW5nKFJhbmdlKiByYW5nZSkKIHsKICAgICByZXR1
cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNob3VsZEVuZEVkaXRpbmcocmFuZ2UpOwpAQCAtMTU5
MiwxNyArMTY5NywxOCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckRldGFpbEluZGV4ID0gMDsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOwotICAgICAgICAgICAgICAgIGNsaWVudC0+Y2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJP
ZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcu
bGVuZ3RoKCksIGNoZWNrR3JhbW1hciwgcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgdWludDY0
X3QgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CisgICAgICAgICAgICAgICAgY2xpZW50LT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhT
dHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5nVHlw
ZXMsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnJlc3VsdFR5cGUgPT0gMSAmJiByZXN1bHQtPmxv
Y2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0
LT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHQtPmxvY2F0
aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5s
ZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC0+bG9jYXRpb247CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpICE9IDApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2hlY2tHcmFtbWFyICYmIHJlc3VsdC0+cmVzdWx0VHlwZSA9PSAyICYmIHJlc3VsdC0+bG9jYXRp
b24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0
aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIg
JiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlv
biArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24g
Pj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRo
ZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVs
bGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBi
dXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBm
aW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgpAQCAtMTk2MSwxMSArMjA2NywxMiBAQCBzdGF0
aWMgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsCiAgICAgICAgIHJldHVybiBndWVz
c2VzOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBjbGll
bnQtPmNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNo
YXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBjaGVja0dyYW1tYXIsIHJlc3Vs
dHMpOworICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOworICAgIGNsaWVudC0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdy
YXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBjaGVja2lu
Z1R5cGVzLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVz
dWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJl
c3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRUeXBlID09IDEg
JiYgcmVzdWx0LT5sb2NhdGlvbiA9PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bGVuZ3Ro
ID09IHJhbmdlTGVuZ3RoKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRpb24gPT0gcmFuZ2VTdGFydE9mZnNldCAm
JiByZXN1bHQtPmxlbmd0aCA9PSByYW5nZUxlbmd0aCkgewogICAgICAgICAgICAgU3RyaW5nIG1p
c3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyYW5nZVN0YXJ0T2Zmc2V0
LCByYW5nZUxlbmd0aCk7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkgIT0gMCk7CiAgICAgICAgICAgICBjbGllbnQtPmdldEd1ZXNzZXNGb3JXb3JkKG1pc3NwZWxs
ZWRXb3JkLCBndWVzc2VzKTsKQEAgLTE5ODAsNyArMjA4Nyw3IEBAIHN0YXRpYyBWZWN0b3I8U3Ry
aW5nPiBndWVzc2VzRm9yTWlzc3BlbGwKICAgICAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgVGV4dENoZWNraW5n
UmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAgaWYgKHJlc3VsdC0+cmVzdWx0
VHlwZSA9PSAyICYmIHJlc3VsdC0+bG9jYXRpb24gPD0gcmFuZ2VTdGFydE9mZnNldCAmJiByZXN1
bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPj0gcmFuZ2VTdGFydE9mZnNldCArIHJhbmdl
TGVuZ3RoKSB7CisgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIgJiYgcmVzdWx0LT5sb2NhdGlvbiA8PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+
bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+PSByYW5nZVN0YXJ0T2Zmc2V0ICsgcmFuZ2VMZW5n
dGgpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFp
bHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBk
ZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRh
aWwtPmxlbmd0aCA+IDAgJiYgZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKQEAgLTIwNDcsMzEgKzIx
NTQsNiBAQCBib29sIEVkaXRvcjo6c3BlbGxpbmdQYW5lbElzU2hvd2luZygpCiAgICAgcmV0dXJu
IGNsaWVudCgpLT5zcGVsbGluZ1VJSXNTaG93aW5nKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjptYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
cCkKLXsKLSAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIFZpc2libGVT
ZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQocCwg
TGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KSk7Ci0gICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNl
bnRlbmNlKHApLCBlbmRPZlNlbnRlbmNlKHApKTsKLSAgICAgICAgbWFya01pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXIoYWRqYWNlbnRXb3JkcywgdHJ1ZSwgc2VsZWN0ZWRTZW50ZW5jZSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoYWRqYWNlbnRX
b3JkcywgZmFsc2UsIGFkamFjZW50V29yZHMpOwotICAgIH0KLSNlbHNlCi0gICAgLy8gQ2hlY2sg
c3BlbGxpbmcgb2Ygb25lIHdvcmQKLSAgICBtYXJrTWlzc3BlbGxpbmdzKFZpc2libGVTZWxlY3Rp
b24oc3RhcnRPZldvcmQocCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KSkpOwotICAgIAotICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBDaGVjayBncmFtbWFyIG9m
IGVudGlyZSBzZW50ZW5jZQotICAgIG1hcmtCYWRHcmFtbWFyKFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRPZlNlbnRlbmNlKHApLCBlbmRPZlNlbnRlbmNlKHApKSk7Ci0jZW5kaWYKLX0KLQogc3RhdGlj
IHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0luUmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGllbnQsIFJh
bmdlKiBzZWFyY2hSYW5nZSkKIHsKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9m
IGZpbmRGaXJzdE1pc3NwZWxsaW5nSW5SYW5nZS4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5k
IHRoZSAib3V0IHBhcmFtZXRlciI7CkBAIC0yMTQyLDExICsyMjI0LDExIEBAIHZvaWQgRWRpdG9y
OjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmwKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
CiAKLXN0YXRpYyB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
RWRpdG9yQ2xpZW50KiBjbGllbnQsIFJhbmdlICpzcGVsbGluZ1JhbmdlLCBib29sIG1hcmtHcmFt
bWFyLCBSYW5nZSAqZ3JhbW1hclJhbmdlKQordm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoUmFuZ2UgKnNwZWxsaW5nUmFuZ2UsIGJvb2wgbWFya0dy
YW1tYXIsIFJhbmdlICpncmFtbWFyUmFuZ2UsIGJvb2wgcGVyZm9ybVRleHRDaGVja2luZykKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHNlbGVjdGlvbnMgYWxyZWFkeSBl
eHBhbmRlZCB0byB3b3JkIGJvdW5kYXJpZXMuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBp
ZiAoIWNsaWVudCB8fCAhc3BlbGxpbmdSYW5nZSB8fCAobWFya0dyYW1tYXIgJiYgIWdyYW1tYXJS
YW5nZSkpCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaWYgKCFjbGllbnQoKSB8fCAh
c3BlbGxpbmdSYW5nZSB8fCAobWFya0dyYW1tYXIgJiYgIWdyYW1tYXJSYW5nZSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gYW4gZWRpdGFibGUgbm9kZSwg
YmFpbC4KQEAgLTIxNTksNDIgKzIyNDEsMTIzIEBAIHN0YXRpYyB2b2lkIG1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmEKICAgICBpbnQgc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IDA7CiAgICAg
aW50IGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0ID0gMDsKICAgICBpbnQgZ3JhbW1hclJhbmdlRW5k
T2Zmc2V0ID0gMDsKKyAgICBpbnQgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA9IDA7CisgICAgaW50
IHBhcmFncmFwaExlbmd0aCA9IDA7CisgICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAg
Ym9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CisgICAgYm9vbCByZXN0b3JlU2VsZWN0aW9u
QWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKKyAgICBib29sIGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFw
aEJvdW5kYXJpZXMgPSBmYWxzZTsKICAgICBTdHJpbmcgcGFyYWdyYXBoU3RyaW5nOworICAgIFJl
ZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2U7CiAgICAgCiAgICAgaWYgKG1hcmtHcmFtbWFyKSB7
CiAgICAgICAgIC8vIFRoZSBzcGVsbGluZyByYW5nZSBzaG91bGQgYmUgY29udGFpbmVkIGluIHRo
ZSBwYXJhZ3JhcGgtYWxpZ25lZCBleHRlbnNpb24gb2YgdGhlIGdyYW1tYXIgcmFuZ2UuCi0gICAg
ICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhBbGlnbmVkUmFuZ2VG
b3JSYW5nZShncmFtbWFyUmFuZ2UsIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhT
dHJpbmcpOworICAgICAgICBwYXJhZ3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5nZUZv
clJhbmdlKGdyYW1tYXJSYW5nZSwgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0
cmluZyk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gb2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKSwgcGFyYWdy
YXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgc3BlbGxpbmdSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKICAgICAgICAgc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChvZmZzZXRBc1JhbmdlLmdldCgpKTsKICAgICAgICAgZ3JhbW1hclJhbmdlRW5kT2Zm
c2V0ID0gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KGdyYW1tYXJSYW5nZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJh
Z3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5nZUZvclJhbmdlKHNwZWxsaW5nUmFuZ2Us
IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCwgcGFyYWdyYXBoU3RyaW5nKTsKKyAgICAgICAgcGFy
YWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhBbGlnbmVkUmFuZ2VGb3JSYW5nZShzcGVsbGluZ1Jhbmdl
LCBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0cmluZyk7CiAgICAgfQogICAg
IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgKyBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHNwZWxsaW5nUmFuZ2UpOwotICAgIGlmIChwYXJhZ3JhcGhT
dHJpbmcubGVuZ3RoKCkgPT0gMCB8fCAoc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0ID49IHNwZWxs
aW5nUmFuZ2VFbmRPZmZzZXQgJiYgKCFtYXJrR3JhbW1hciB8fCBncmFtbWFyUmFuZ2VTdGFydE9m
ZnNldCA+PSBncmFtbWFyUmFuZ2VFbmRPZmZzZXQpKSkKKyAgICBwYXJhZ3JhcGhMZW5ndGggPSBw
YXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKHBhcmFncmFwaExlbmd0aCA8PSAwIHx8
IChzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgPj0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAo
IW1hcmtHcmFtbWFyIHx8IGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0ID49IGdyYW1tYXJSYW5nZUVu
ZE9mZnNldCkpKQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgaWYgKHBlcmZvcm1UZXh0Q2hl
Y2tpbmcpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb25UeXBl
KCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gb2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICBv
ZmZzZXRBc1JhbmdlLT5zZXRFbmQobV9mcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpLmNvbnRhaW5l
ck5vZGUoKSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgZWMpOworICAgICAgICAgICAgaWYgKGVjID09IDApIHsKKyAgICAgICAgICAg
ICAgICBzZWxlY3Rpb25PZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG9mZnNldEFz
UmFuZ2UuZ2V0KCkpOworCQlyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVlOworCQlh
ZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gKHNlbGVjdGlvbk9mZnNldCA+
PSBwYXJhZ3JhcGhMZW5ndGgpID8gdHJ1ZSA6IGZhbHNlOworCSAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBj
bGllbnQtPmNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5n
LmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBtYXJrR3JhbW1hciwgcmVz
dWx0cyk7CisgICAgdWludDY0X3QgY2hlY2tpbmdUeXBlcyA9IG1hcmtHcmFtbWFyID8gKFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAocGVyZm9ybVRleHRDaGVja2luZykgeworICAgICAg
ICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hl
Y2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVz
IHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENo
ZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVu
YWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVJl
cGxhY2VtZW50OworICAgICAgICBpZiAoaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uOworICAgIH0KKyAgICBjbGllbnQoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdy
YXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoTGVuZ3RoLCBjaGVja2luZ1R5cGVzLCBy
ZXN1bHRzKTsKKyAgICAKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0
cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3Vs
dCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRUeXBlID09IDEgJiYg
cmVzdWx0LT5sb2NhdGlvbiA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5s
b2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+
PSAwKTsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdSYW5nZSwgcmVzdWx0LT5sb2NhdGlvbiAtIHNwZWxs
aW5nUmFuZ2VTdGFydE9mZnNldCwgcmVzdWx0LT5sZW5ndGgpOworICAgICAgICBpbnQgcmVzdWx0
TG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAg
ICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdC0+bGVuZ3RoOworICAgICAgICBpZiAocmVz
dWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+
PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5n
dGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNwZWxsaW5n
UmFuZ2UsIHJlc3VsdExvY2F0aW9uIC0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCByZXN1bHRM
ZW5ndGgpOwogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoZWMp
LT5kb2N1bWVudCgpLT5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nKTsKLSAgICAgICAgfSBlbHNlIGlmIChtYXJrR3JhbW1hciAmJiByZXN1
bHQtPnJlc3VsdFR5cGUgPT0gMiAmJiByZXN1bHQtPmxvY2F0aW9uIDwgZ3JhbW1hclJhbmdlRW5k
T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGdyYW1tYXJSYW5n
ZVN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYm
IHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CisgICAgICAgIH0gZWxzZSBpZiAobWFya0dyYW1tYXIg
JiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdExvY2F0
aW9uIDwgZ3JhbW1hclJhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoID4gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAg
ICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNb
al07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwt
PmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPmxvY2F0aW9uICsg
ZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1bHQtPmxv
Y2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGdyYW1tYXJSYW5n
ZUVuZE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1t
YXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoZ3JhbW1hclJhbmdlLCByZXN1bHQtPmxv
Y2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiAtIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0LCBkZXRh
aWwtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9uICsgZGV0YWls
LT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiAr
IGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBncmFtbWFyUmFuZ2VFbmRPZmZz
ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBiYWRHcmFtbWFyUmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGdyYW1tYXJSYW5nZSwgcmVzdWx0TG9jYXRpb24gKyBk
ZXRhaWwtPmxvY2F0aW9uIC0gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIGRldGFpbC0+bGVuZ3Ro
KTsKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcihlYykt
PmRvY3VtZW50KCktPmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHBlcmZvcm1UZXh0Q2hlY2tpbmcg
JiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNl
dCAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA+PSBzcGVsbGluZ1JhbmdlU3RhcnRP
ZmZzZXQgJiYKKwkJICAgIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsgfHwK
KwkJICAgICByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3RlIHx8CisJCSAgICAg
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVEYXNoIHx8CisJCSAgICAgcmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8fAorCQkgICAgIHJlc3VsdC0+dHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKKyAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOworICAgICAgICAgICAgaW50
IHJlcGxhY2VtZW50TGVuZ3RoID0gcmVzdWx0LT5yZXBsYWNlbWVudC5sZW5ndGgoKTsKKyAgICAg
ICAgICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IChyZXBsYWNlbWVudExlbmd0aCA+IDApOworICAg
ICAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCk7CisgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHJlcGxhY2VtZW50U2VsZWN0aW9uKHJl
cGxhY2VtZW50UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgaWYgKGRvUmVw
bGFjZW1lbnQgJiYgcmVwbGFjZW1lbnRTZWxlY3Rpb24gIT0gbV9mcmFtZS0+c2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5n
ZVNlbGVjdGlvbihyZXBsYWNlbWVudFNlbGVjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihyZXBsYWNlbWVudFNlbGVjdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9S
ZXBsYWNlbWVudCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZUxpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkVkaXRSaWNobHko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChDcmVhdGVMaW5rQ29tbWFu
ZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVwbGFjZW1lbnQpKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAmJiBzaG91bGRJbnNlcnRUZXh0KHJl
c3VsdC0+cmVwbGFjZW1lbnQsIHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvblR5cGVkKSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQocmVzdWx0LT5yZXBsYWNlbWVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3BlbGxpbmdSYW5nZUVuZE9mZnNldCArPSByZXBsYWNlbWVudExlbmd0aCAtIHJlc3VsdExl
bmd0aDsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCArPSByZXBs
YWNlbWVudExlbmd0aCAtIHJlc3VsdExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdExvY2F0aW9uIDwgc2VsZWN0aW9uT2Zmc2V0KQorCQkJc2VsZWN0aW9uT2Zmc2V0ICs9IHJl
cGxhY2VtZW50TGVuZ3RoIC0gcmVzdWx0TGVuZ3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpZiAoc2VsZWN0aW9uQ2hhbmdl
ZCkgeworICAgICAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2UuZ2V0KCksIGVuZE9mUGFyYWdyYXBo
KHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpKSk7
CisgICAgICAgIGludCBuZXdMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFn
cmFwaFJhbmdlLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5n
ZSAmJiBzZWxlY3Rpb25PZmZzZXQgPj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gbmV3TGVuZ3Ro
KSB7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgMCwgc2VsZWN0aW9uT2Zmc2V0KTsK
KwkgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vdmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5kUG9z
aXRpb24oKSwgRE9XTlNUUkVBTSk7CisJICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3Jh
cGhCb3VuZGFyaWVzKQorCQltX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KTsKKyAgICAgICAgfSBlbHNlIHsKKwkgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vdmVUbyhtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOworCSAgICBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKwl9CisgICAgfQogfQogCiAj
ZW5kaWYKQEAgLTIyMDQsNyArMjM2Nyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW0KICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIGlmICghaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoY2xpZW50KCksIHNwZWxsaW5nU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNo
ZWNraW5nRW5hYmxlZCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCkpOworICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoc3BlbGxp
bmdTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgbWFya0dyYW1tYXIgJiYgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSwgZmFsc2UpOwogI2Vsc2UKICAgICBtYXJrTWlzc3BlbGxpbmdzKHNwZWxsaW5n
U2VsZWN0aW9uKTsKICAgICBpZiAobWFya0dyYW1tYXIpCkBAIC0yMjEyLDYgKzIzNzUsMzEgQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogI2VuZGlmCiB9CiAKK3Zv
aWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmcCkKK3sKKyAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQorICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24o
c3RhcnRPZldvcmQocCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRX
b3JkSWZPbkJvdW5kYXJ5KSk7CisgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKSB7
CisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxl
Y3Rpb24oc3RhcnRPZlNlbnRlbmNlKHApLCBlbmRPZlNlbnRlbmNlKHApKTsKKyAgICAgICAgbWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIHRydWUsIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCksIGZhbHNlLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHRydWUpOworICAgIH0KKyNlbHNlCisgICAgLy8gQ2hlY2sgc3BlbGxpbmcgb2Ygb25lIHdv
cmQKKyAgICBtYXJrTWlzc3BlbGxpbmdzKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQocCwg
TGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KSkpOworICAgIAorICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICAvLyBDaGVjayBncmFtbWFyIG9mIGVudGlyZSBzZW50ZW5jZQor
ICAgIG1hcmtCYWRHcmFtbWFyKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHApLCBl
bmRPZlNlbnRlbmNlKHApKSk7CisjZW5kaWYKK30KKwogUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9y
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudEF0UG9pbnQod2luZG93UG9pbnQpOwpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsMjUgQEAgcHVibGljOgogICAgIHZvaWQg
bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJr
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVj
dGlvbiwgYm9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNl
bGVjdGlvbik7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2b2lkIHVwcGVyY2FzZVdv
cmQoKTsKKyAgICB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKKyAgICB2b2lkIGNhcGl0YWxpemVXb3Jk
KCk7CisgICAgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CisgICAgYm9vbCBzdWJzdGl0
dXRpb25zUGFuZWxJc1Nob3dpbmcoKTsKKyAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRl
KCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAg
IHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKKyAgICBib29sIGlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb24oKTsKKyAgICBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBi
b29sIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOworICAgIHZvaWQgdG9nZ2xl
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbigpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyhSYW5nZSAqc3BlbGxpbmdSYW5nZSwgYm9vbCBtYXJrR3JhbW1hciwgUmFuZ2UgKmdyYW1t
YXJSYW5nZSwgYm9vbCBwZXJmb3JtVGV4dENoZWNraW5nKTsKKyNlbmRpZgogICAgIHZvaWQgYWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7
CiAgICAgdm9pZCBzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBzcGVsbGluZ1Bh
bmVsSXNTaG93aW5nKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lv
biA0MjgyNSkKKysrIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjk5LDggKzI5OSw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGUKIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQo
KQogewotICAgIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZygpOwogICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
KGNvbnN0IFN0cmluZyAmdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDEyICszNDEsMzAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgTlNBcnJheSogcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uKEZyYW1lKikgeyBy
ZXR1cm4gMDsgfQogI2VuZGlmCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAg
IHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvd2Vy
Y2FzZVdvcmQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlu
a0RldGVjdGlvbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
KCkgeyB9CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVu
dChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQsIGludCosIGludCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1t
YXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50
KiwgaW50KikgeyB9CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJPZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgYm9v
bCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVs
bGVkV29yZChjb25zdCBTdHJpbmcmKSB7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDM4IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd0NvbG9yUGFuZWwoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCisj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51cHBlcmNhc2VXb3Jk
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlTG93ZXJDYXNlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5sb3dlcmNhc2VXb3Jk
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdD
YXBpdGFsaXplOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jYXBpdGFsaXplV29yZCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hv
d1N1YnN0aXR1dGlvbnM6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0
dXRpb25zUGFuZWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50
b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKKyAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlu
a0RldGVjdGlvbigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50OgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50
b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6
CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDoKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmluc3BlY3QocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDQyODI1KQorKysgV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTQgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWwg
ewogICAgIFN0cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCitlbnVtIFRleHRDaGVja2luZ1R5
cGUgeyBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPSAxIDw8IDEsIFRleHRDaGVja2luZ1R5cGVH
cmFtbWFyID0gMSA8PCAyLCBUZXh0Q2hlY2tpbmdUeXBlTGluayA9IDEgPDwgNSwgVGV4dENoZWNr
aW5nVHlwZVF1b3RlID0gMSA8PCA2LCBUZXh0Q2hlY2tpbmdUeXBlRGFzaCA9IDEgPDwgNywgVGV4
dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LCBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbiA9IDEgPDwgOSB9OworCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKLSAgICBpbnQg
cmVzdWx0VHlwZTsgLy8gMSBmb3Igc3BlbGxpbmcsIDIgZm9yIGdyYW1tYXIKKyAgICBUZXh0Q2hl
Y2tpbmdUeXBlIHR5cGU7CiAgICAgaW50IGxvY2F0aW9uOwogICAgIGludCBsZW5ndGg7CiAgICAg
VmVjdG9yPEdyYW1tYXJEZXRhaWw+IGRldGFpbHM7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50Owog
fTsKICAKIGNsYXNzIEVkaXRvckNsaWVudCB7CkBAIC0xMzMsMTIgKzEzNiwzMSBAQCBwdWJsaWM6
CiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2aXJ0dWFs
IHZvaWQgdXBwZXJjYXNlV29yZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG93ZXJjYXNlV29y
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KSA9IDA7CisgICAgdmly
dHVhbCBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgPSAwOworI2VuZGlm
CisKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0
aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxv
Y2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nQW5kR3JhbW1hck9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBib29sIGNoZWNrR3JhbW1hciwgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYpID0gMDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaAkocmV2
aXNpb24gNDI4MjUpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxOCBAQAogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVu
dUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uOwogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdMZWZ0VG9SaWdodDsKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xl
ZnQ7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHk7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNN
ZW51OworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczoo
Ym9vbClzaG93OworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM7CistIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOworLSAoTlNTdHJpbmcgKiljb250
ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdUZXh0UmVwbGFjZW1lbnQ7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1RyYW5z
Zm9ybWF0aW9uc01lbnU7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U7Cist
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemU7CiAtIChOU1N0cmluZyAq
KWNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OwogCiAtIChOU1N0cmluZyAqKXNlYXJj
aE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4
dE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3Bw
CShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsMTEgKzExMiwyMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBbmRB
cHBlbmRTcGVsbGluZ0FuZEdyCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxp
bmdXaGlsZVR5cGluZygpKTsKICAgICBDb250ZXh0TWVudUl0ZW0gZ3JhbW1hcldpdGhTcGVsbGlu
ZyhDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRo
U3BlbGxpbmcsIAogICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3Bl
bGxpbmcoKSk7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBDb250ZXh0TWVudUl0ZW0g
Y29ycmVjdFNwZWxsaW5nKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0Nv
cnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHksIAorICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdD
b3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkpOworI2VuZGlmCiAKICAgICBzcGVsbGluZ0Fu
ZEdyYW1tYXJNZW51LmFwcGVuZEl0ZW0oc2hvd1NwZWxsaW5nUGFuZWwpOwogICAgIHNwZWxsaW5n
QW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbShjaGVja1NwZWxsaW5nKTsKKyNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbSgqc2VwYXJh
dG9ySXRlbSgpKTsKKyNlbmRpZgogICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRl
bShjaGVja0FzWW91VHlwZSk7CiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudS5hcHBlbmRJdGVt
KGdyYW1tYXJXaXRoU3BlbGxpbmcpOworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgc3Bl
bGxpbmdBbmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGNvcnJlY3RTcGVsbGluZyk7CisjZW5kaWYK
IAogICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnVJdGVtLnNldFN1Yk1lbnUoJnNwZWxsaW5nQW5k
R3JhbW1hck1lbnUpOwogfQpAQCAtMTg5LDYgKzE5OSw0NSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVB
bmRBcHBlbmRUZXh0RGlyZWN0aW9uCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpCitzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRTdWJzdGl0dXRpb25zU3ViTWVudShjb25z
dCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIENvbnRleHRNZW51SXRlbSYgc3Vic3RpdHV0aW9uc01l
bnVJdGVtKQoreworICAgIENvbnRleHRNZW51IHN1YnN0aXR1dGlvbnNNZW51KHJlc3VsdCk7CisK
KyAgICBDb250ZXh0TWVudUl0ZW0gc2hvd1N1YnN0aXR1dGlvbnMoQWN0aW9uVHlwZSwgQ29udGV4
dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMsIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zKHRydWUpKTsKKyAgICBDb250ZXh0TWVudUl0ZW0gc21hcnRDb3B5UGFzdGUoQ2hl
Y2thYmxlQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsIGNvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkpOworICAgIENvbnRleHRNZW51SXRlbSBzbWFy
dFF1b3RlcyhDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rl
cywgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKSk7CisgICAgQ29udGV4dE1lbnVJdGVt
IHNtYXJ0RGFzaGVzKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
RGFzaGVzLCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpKTsKKyAgICBDb250ZXh0TWVu
dUl0ZW0gc21hcnRMaW5rcyhDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdT
bWFydExpbmtzLCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCkpOworICAgIENvbnRleHRN
ZW51SXRlbSB0ZXh0UmVwbGFjZW1lbnQoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dFJlcGxhY2VtZW50LCBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQo
KSk7CisKKyAgICBzdWJzdGl0dXRpb25zTWVudS5hcHBlbmRJdGVtKHNob3dTdWJzdGl0dXRpb25z
KTsKKyAgICBzdWJzdGl0dXRpb25zTWVudS5hcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOwor
ICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0ZW0oc21hcnRDb3B5UGFzdGUpOworICAgIHN1
YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0ZW0oc21hcnRRdW90ZXMpOworICAgIHN1YnN0aXR1dGlv
bnNNZW51LmFwcGVuZEl0ZW0oc21hcnREYXNoZXMpOworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFw
cGVuZEl0ZW0oc21hcnRMaW5rcyk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbSh0
ZXh0UmVwbGFjZW1lbnQpOworCisgICAgc3Vic3RpdHV0aW9uc01lbnVJdGVtLnNldFN1Yk1lbnUo
JnN1YnN0aXR1dGlvbnNNZW51KTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlQW5kQXBwZW5kVHJh
bnNmb3JtYXRpb25zU3ViTWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIENvbnRleHRN
ZW51SXRlbSYgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0pCit7CisgICAgQ29udGV4dE1lbnUgdHJh
bnNmb3JtYXRpb25zTWVudShyZXN1bHQpOworCisgICAgQ29udGV4dE1lbnVJdGVtIG1ha2VVcHBl
ckNhc2UoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSwgY29udGV4
dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpKTsKKyAgICBDb250ZXh0TWVudUl0ZW0gbWFrZUxv
d2VyQ2FzZShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlLCBjb250
ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkpOworICAgIENvbnRleHRNZW51SXRlbSBjYXBp
dGFsaXplKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUsIGNvbnRleHRN
ZW51SXRlbVRhZ0NhcGl0YWxpemUoKSk7CisKKyAgICB0cmFuc2Zvcm1hdGlvbnNNZW51LmFwcGVu
ZEl0ZW0obWFrZVVwcGVyQ2FzZSk7CisgICAgdHJhbnNmb3JtYXRpb25zTWVudS5hcHBlbmRJdGVt
KG1ha2VMb3dlckNhc2UpOworICAgIHRyYW5zZm9ybWF0aW9uc01lbnUuYXBwZW5kSXRlbShjYXBp
dGFsaXplKTsKKworICAgIHRyYW5zZm9ybWF0aW9uc01lbnVJdGVtLnNldFN1Yk1lbnUoJnRyYW5z
Zm9ybWF0aW9uc01lbnUpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRh
aW5zUG9zc2libGVXb3JkKEZyYW1lKiBmcmFtZSkKIHsKICAgICAvLyBDdXJyZW50IGFsZ29yaXRo
bTogbG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgpAQCAt
NDA3LDYgKzQ1NiwxNiBAQCB2b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgICAgICAg
ICBjcmVhdGVBbmRBcHBlbmRTcGVsbGluZ1N1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBTcGVsbGlu
Z01lbnVJdGVtKTsKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3BlbGxpbmdNZW51SXRlbSk7CiAj
ZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgQ29udGV4dE1lbnVJ
dGVtIHN1YnN0aXR1dGlvbnNNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFn
U3Vic3RpdHV0aW9uc01lbnUsIAorICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1N1
YnN0aXR1dGlvbnNNZW51KCkpOworICAgICAgICAgICAgY3JlYXRlQW5kQXBwZW5kU3Vic3RpdHV0
aW9uc1N1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBzdWJzdGl0dXRpb25zTWVudUl0ZW0pOworICAg
ICAgICAgICAgYXBwZW5kSXRlbShzdWJzdGl0dXRpb25zTWVudUl0ZW0pOworICAgICAgICAgICAg
Q29udGV4dE1lbnVJdGVtIHRyYW5zZm9ybWF0aW9uc01lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51LCAKKyAgICAgICAgICAgICAgICBjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkpOworICAgICAgICAgICAgY3JlYXRl
QW5kQXBwZW5kVHJhbnNmb3JtYXRpb25zU3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIHRyYW5zZm9y
bWF0aW9uc01lbnVJdGVtKTsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW0odHJhbnNmb3JtYXRpb25z
TWVudUl0ZW0pOworI2VuZGlmCiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gIEZvbnRNZW51
SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUsIAogICAgICAgICAg
ICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkpOwogICAgICAgICAgICAgY3JlYXRl
QW5kQXBwZW5kRm9udFN1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBGb250TWVudUl0ZW0pOwpAQCAt
NTg0LDYgKzY0Myw1MyBAQCB2b2lkIENvbnRleHRNZW51OjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5n
OgogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQ29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6
CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9u
c1BhbmVsSXNTaG93aW5nKCkpCisgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0
TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhmYWxzZSkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0
aXR1dGlvbnModHJ1ZSkpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRv
cigpLT5jYW5FZGl0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlOgorICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z01ha2VMb3dlckNhc2U6CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6
ZToKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29y
cmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnU21hcnRDb3B5UGFzdGU6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisjZW5kaWYK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
UXVvdGVzOgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9y
KCktPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisjZW5kaWYKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVz
OgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlz
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rczoKKyNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKKyNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
ICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnR29CYWNr
OgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmxvYWRlcigpLT5jYW5Hb0JhY2tP
ckZvcndhcmQoLTEpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShyZXZpc2lv
biA0MjgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKICAgICAgICAgQ29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgICAgICBDb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQsCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5LAorICAgICAg
ICBDb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwKKyAgICAgICAgQ29udGV4dE1l
bnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0Q29weVBhc3RlLAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcywKKyAg
ICAgICAgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMsCisgICAgICAgIENvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0TGlua3MsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNl
bWVudCwKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSwKKyAg
ICAgICAgQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSwKKyAgICAgICAgQ29udGV4dE1l
bnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSwKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRh
bGl6ZSwKKyNlbmRpZgogICAgICAgICBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcg
PSAxMDAwMAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShy
ZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKICAgICBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTdG9wU3BlYWtpbmcoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdWJz
dGl0dXRpb25zTWVudSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3Rp
dHV0aW9ucyhib29sIHNob3cpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENv
cHlQYXN0ZSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOwor
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOworICAgIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1RleHRSZXBsYWNlbWVudCgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2Zvcm1hdGlvbnNNZW51KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2UoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOwor
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CiAjZW5kaWYKICAgICBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKIApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCShyZXZpc2lvbiA0MjgyNSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQzMyw2ICs0MzMsMTAyIEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdo
dFRvTGVmdCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5XTsK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51XTsK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29y
ZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0
dXRpb25zOnNob3ddOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUo
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJD
b3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5
UGFzdGVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKQoreworICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0Zh
Y3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXNdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQoreworICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250
ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Rl
eHRSZXBsYWNlbWVudCgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0
ZW1UYWdUZXh0UmVwbGFjZW1lbnRdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0
ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01h
a2VVcHBlckNhc2UoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBy
ZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVt
VGFnTWFrZVVwcGVyQ2FzZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJD
YXNlKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtb
V2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ01ha2VM
b3dlckNhc2VdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3
RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA0LTI0ICBEb3VnbGFzIFIu
IERhdmlkc29uICA8ZGRhdmlkc29AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2NhbGl6YWJs
ZSBzdHJpbmdzIGZvciAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3MjQxMDY+IFdlYlZpZXdz
IG5lZWQgdG8gaW1wbGVtZW50IHRleHQgY2hlY2tpbmcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKwogMjAwOS0wNC0yMyAgS2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L0VuZ2xp
c2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYktpdC9F
bmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi3+/wAvACoAIAB3AGkAbgBkAG8AdwAgAHQAaQB0AGwAZQAgAGYAbwByACAAYQAgAHMA
dABhAG4AZABhAGwAbwBuAGUAIABpAG0AYQBnAGUAIAAoAHUAcwBlAHMAIABtAHUAbAB0AGkAcABs
AGkAYwBhAHQAaQBvAG4AIABzAHkAbQBiAG8AbAAsACAAbgBvAHQAIAB4ACkAIAAqAC8ACiv//i8A
KgAgAHcAaQBuAGQAbwB3ACAAdABpAHQAbABlACAAZgBvAHIAIABhACAAcwB0AGEAbgBkAGEAbABv
AG4AZQAgAGkAbQBhAGcAZQAgACgAdQBzAGUAcwAgAG0AdQBsAHQAaQBwAGwAaQBjAGEAdABpAG8A
bgAgAHMAeQBtAGIAbwBsACwAIABuAG8AdAAgAHgAKQAgACoALwAKIAAiACUAQAAgACUAZADXACUA
ZAAgAHAAaQB4AGUAbABzACIAIAA9ACAAIgAlAEAAIAAlAGQA1wAlAGQAIABwAGkAeABlAGwAcwAi
ADsACiAACiAALwAqACAATABhAGIAZQBsACAAdABvACAAZABlAHMAYwByAGkAYgBlACAAdABoAGUA
IABuAHUAbQBiAGUAcgAgAG8AZgAgAGYAaQBsAGUAcwAgAHMAZQBsAGUAYwB0AGUAZAAgAGkAbgAg
AGEAIABmAGkAbABlACAAdQBwAGwAbwBhAGQAIABjAG8AbgB0AHIAbwBsACAAdABoAGEAdAAgAGEA
bABsAG8AdwBzACAAbQB1AGwAdABpAHAAbABlACAAZgBpAGwAZQBzACAAKgAvAApAQCAtMjgsNiAr
MjgsOSBAQAogAC8AKgAgAEIAbwBsAGQAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABl
AG0AIAAqAC8ACiAAIgBCAG8AbABkACIAIAA9ACAAIgBCAG8AbABkACIAOwAKIAAKKwAvACoAIABD
AGEAcABpAHQAYQBsAGkAegBlACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAA
KgAvAAorACIAQwBhAHAAaQB0AGEAbABpAHoAZQAiACAAPQAgACIAQwBhAHAAaQB0AGEAbABpAHoA
ZQAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAK
IAAiAEMAZQBuAHQAZQByACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAg
AD0AIAAiAEMAZQBuAHQAZQByACIAOwAKIAAKQEAgLTU2LDcgKzU5LDcgQEAKIAAiAEMAbABlAGEA
cgAgAFIAZQBjAGUAbgB0ACAAUwBlAGEAcgBjAGgAZQBzACIAIAA9ACAAIgBDAGwAZQBhAHIAIABS
AGUAYwBlAG4AdAAgAFMAZQBhAHIAYwBoAGUAcwAiADsACiAACiAALwAqACAAVwBlAGIASwBpAHQA
RQByAHIAbwByAEMAYQBuAG4AbwB0AFMAaABvAHcATQBJAE0ARQBUAHkAcABlACAAZABlAHMAYwBy
AGkAcAB0AGkAbwBuACAAKgAvAAotACIAQwBvAG4AdABlAG4AdAAgAHcAaQB0AGgAIABzAHAAZQBj
AGkAZgBpAGUAZAAgAE0ASQBNAEUAIAB0AHkAcABlACAAYwBhAG4gGQB0ACAAYgBlACAAcwBoAG8A
dwBuACIAIAA9ACAAIgBDAG8AbgB0AGUAbgB0ACAAdwBpAHQAaAAgAHMAcABlAGMAaQBmAGkAZQBk
ACAATQBJAE0ARQAgAHQAeQBwAGUAIABjAGEAbiAZAHQAIABiAGUAIABzAGgAbwB3AG4AIgA7AAor
ACIAQwBvAG4AdABlAG4AdAAgAHcAaQB0AGgAIABzAHAAZQBjAGkAZgBpAGUAZAAgAE0ASQBNAEUA
IAB0AHkAcABlACAAYwBhAG4AGSB0ACAAYgBlACAAcwBoAG8AdwBuACIAIAA9ACAAIgBDAG8AbgB0
AGUAbgB0ACAAdwBpAHQAaAAgAHMAcABlAGMAaQBmAGkAZQBkACAATQBJAE0ARQAgAHQAeQBwAGUA
IABjAGEAbgAZIHQAIABiAGUAIABzAGgAbwB3AG4AIgA7AAogAAogAC8AKgAgAEMAbwBwAHkAIABj
AG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBDAG8AcAB5ACIAIAA9
ACAAIgBDAG8AcAB5ACIAOwAKQEAgLTY3LDYgKzcwLDkgQEAKIAAvACoAIABDAG8AcAB5ACAATABp
AG4AawAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAEMAbwBw
AHkAIABMAGkAbgBrACIAIAA9ACAAIgBDAG8AcAB5ACAATABpAG4AawAiADsACiAACisALwAqACAA
QwBvAHIAcgBlAGMAdAAgAFMAcABlAGwAbABpAG4AZwAgAEEAdQB0AG8AbQBhAHQAaQBjAGEAbABs
AHkAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBDAG8AcgBy
AGUAYwB0ACAAUwBwAGUAbABsAGkAbgBnACAAQQB1AHQAbwBtAGEAdABpAGMAYQBsAGwAeQAiACAA
PQAgACIAQwBvAHIAcgBlAGMAdAAgAFMAcABlAGwAbABpAG4AZwAgAEEAdQB0AG8AbQBhAHQAaQBj
AGEAbABsAHkAIgA7AAorAAogAC8AKgAgAFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUA
IAAqAC8ACiAAIgBDAHIAZQBhAHQAZQAgAEwAaQBuAGsAIAAoAFUAbgBkAG8AIABhAGMAdABpAG8A
bgAgAG4AYQBtAGUAKQAiACAAPQAgACIAQwByAGUAYQB0AGUAIABMAGkAbgBrACIAOwAKIAAKQEAg
LTEwOSw2ICsxMTUsOSBAQAogAC8AKgAgAG0AZQBuAHUAIABpAHQAZQBtACAAdABpAHQAbABlACAA
KgAvAAogACIASABpAGQAZQAgAFMAcABlAGwAbABpAG4AZwAgAGEAbgBkACAARwByAGEAbQBtAGEA
cgAiACAAPQAgACIASABpAGQAZQAgAFMAcABlAGwAbABpAG4AZwAgAGEAbgBkACAARwByAGEAbQBt
AGEAcgAiADsACiAACisALwAqACAAbQBlAG4AdQAgAGkAdABlAG0AIAB0AGkAdABsAGUAIAAqAC8A
CisAIgBIAGkAZABlACAAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAiACAAPQAgACIASABpAGQA
ZQAgAFMAdQBiAHMAdABpAHQAdQB0AGkAbwBuAHMAIgA7AAorAAogAC8AKgAgAFQAaABlACAAZABl
AGYAYQB1AGwAdAAsACAAZABlAGYAYQB1AGwAdAAgAGMAaABhAHIAYQBjAHQAZQByACAAZQBuAGMA
bwBkAGkAbgBnACAAKgAvAAogACIASQBTAE8ALQA4ADgANQA5AC0AMQAiACAAPQAgACIASQBTAE8A
LQA4ADgANQA5AC0AMQAiADsACiAACkBAIC0xNTQsNiArMTYzLDEyIEBACiAALwAqACAAVQBuAGQA
bwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAEwAbwB3AGUAcgAgAEIAYQBzAGUA
bABpAG4AZQAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQApACIAIAA9ACAAIgBM
AG8AdwBlAHIAIABCAGEAcwBlAGwAaQBuAGUAIgA7AAogAAorAC8AKgAgAE0AYQBrAGUAIABMAG8A
dwBlAHIAIABDAGEAcwBlACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAv
AAorACIATQBhAGsAZQAgAEwAbwB3AGUAcgAgAEMAYQBzAGUAIgAgAD0AIAAiAE0AYQBrAGUAIABM
AG8AdwBlAHIAIABDAGEAcwBlACIAOwAKKwAKKwAvACoAIABNAGEAawBlACAAVQBwAHAAZQByACAA
QwBhAHMAZQAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAE0A
YQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACIAIAA9ACAAIgBNAGEAawBlACAAVQBwAHAAZQBy
ACAAQwBhAHMAZQAiADsACisACiAALwAqACAATgBvACAARwB1AGUAcwBzAGUAcwAgAEYAbwB1AG4A
ZAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAE4AbwAgAEcA
dQBlAHMAcwBlAHMAIABGAG8AdQBuAGQAIgAgAD0AIAAiAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABG
AG8AdQBuAGQAIgA7AAogAApAQCAtMjUwLDE0ICsyNjUsMjkgQEAKIAAvACoAIABVAG4AZABvACAA
YQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAvAAogACIAUwBlAHQAIABXAHIAaQB0AGkAbgBnACAA
RABpAHIAZQBjAHQAaQBvAG4AIAAoAFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAKQAi
ACAAPQAgACIAUwBlAHQAIABXAHIAaQB0AGkAbgBnACAARABpAHIAZQBjAHQAaQBvAG4AIgA7AAog
AAorAC8AKgAgAFMAaABvAHcAIABjAG8AbABvAHIAcwAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1
ACAAaQB0AGUAbQAgACoALwAKKwAiAFMAaABvAHcAIABDAG8AbABvAHIAcwAiACAAPQAgACIAUwBo
AG8AdwAgAEMAbwBsAG8AcgBzACIAOwAKKwAKIAAvACoAIABTAGgAbwB3ACAAZgBvAG4AdABzACAA
YwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAogACIAUwBoAG8AdwAgAEYA
bwBuAHQAcwAiACAAPQAgACIAUwBoAG8AdwAgAEYAbwBuAHQAcwAiADsACiAACiAALwAqACAAbQBl
AG4AdQAgAGkAdABlAG0AIAB0AGkAdABsAGUAIAAqAC8ACiAAIgBTAGgAbwB3ACAAUwBwAGUAbABs
AGkAbgBnACAAYQBuAGQAIABHAHIAYQBtAG0AYQByACIAIAA9ACAAIgBTAGgAbwB3ACAAUwBwAGUA
bABsAGkAbgBnACAAYQBuAGQAIABHAHIAYQBtAG0AYQByACIAOwAKIAAKLQAvACoAIABTAGgAbwB3
ACAAYwBvAGwAbwByAHMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8A
Ci0AIgBTAGgAbwB3ACAAYwBvAGwAbwByAHMAIgAgAD0AIAAiAFMAaABvAHcAIABjAG8AbABvAHIA
cwAiADsACisALwAqACAAbQBlAG4AdQAgAGkAdABlAG0AIAB0AGkAdABsAGUAIAAqAC8ACisAIgBT
AGgAbwB3ACAAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAiACAAPQAgACIAUwBoAG8AdwAgAFMA
dQBiAHMAdABpAHQAdQB0AGkAbwBuAHMAIgA7AAorAAorAC8AKgAgAFMAbQBhAHIAdAAgAEMAbwBw
AHkALwBQAGEAcwB0AGUAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8A
CisAIgBTAG0AYQByAHQAIABDAG8AcAB5AC8AUABhAHMAdABlACIAIAA9ACAAIgBTAG0AYQByAHQA
IABDAG8AcAB5AC8AUABhAHMAdABlACIAOwAKKwAKKwAvACoAIABTAG0AYQByAHQAIABEAGEAcwBo
AGUAcwAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFMAbQBh
AHIAdAAgAEQAYQBzAGgAZQBzACIAIAA9ACAAIgBTAG0AYQByAHQAIABEAGEAcwBoAGUAcwAiADsA
CisACisALwAqACAAUwBtAGEAcgB0ACAATABpAG4AawBzACAAYwBvAG4AdABlAHgAdAAgAG0AZQBu
AHUAIABpAHQAZQBtACAAKgAvAAorACIAUwBtAGEAcgB0ACAATABpAG4AawBzACIAIAA9ACAAIgBT
AG0AYQByAHQAIABMAGkAbgBrAHMAIgA7AAorAAorAC8AKgAgAFMAbQBhAHIAdAAgAFEAdQBvAHQA
ZQBzACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAUwBtAGEA
cgB0ACAAUQB1AG8AdABlAHMAIgAgAD0AIAAiAFMAbQBhAHIAdAAgAFEAdQBvAHQAZQBzACIAOwAK
IAAKIAAvACoAIABTAHAAZQBlAGMAaAAgAGMAbwBuAHQAZQB4AHQAIABzAHUAYgAtAG0AZQBuAHUA
IABpAHQAZQBtACAAKgAvAAogACIAUwBwAGUAZQBjAGgAIgAgAD0AIAAiAFMAcABlAGUAYwBoACIA
OwAKQEAgLTMwNCwyNiArMzM0LDMyIEBACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAA
bgBhAG0AZQAgACoALwAKIAAiAFMAdQBiAHMAYwByAGkAcAB0ACAAKABVAG4AZABvACAAYQBjAHQA
aQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFMAdQBiAHMAYwByAGkAcAB0ACIAOwAKIAAKKwAv
ACoAIABTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACAAYwBvAG4AdABlAHgAdAAgAHMAdQBiAC0A
bQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACIA
IAA9ACAAIgBTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACIAOwAKKwAKIAAvACoAIABVAG4AZABv
ACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAvAAogACIAUwB1AHAAZQByAHMAYwByAGkAcAB0
ACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFMAdQBwAGUA
cgBzAGMAcgBpAHAAdAAiADsACiAACisALwAqACAAVABlAHgAdAAgAFIAZQBwAGwAYQBjAGUAbQBl
AG4AdAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFQAZQB4
AHQAIABSAGUAcABsAGEAYwBlAG0AZQBuAHQAIgAgAD0AIAAiAFQAZQB4AHQAIABSAGUAcABsAGEA
YwBlAG0AZQBuAHQAIgA7AAorAAogAC8AKgAgAFcAZQBiAEsAaQB0AEUAcgByAG8AcgBDAGEAbgBu
AG8AdABTAGgAbwB3AFUAUgBMACAAZABlAHMAYwByAGkAcAB0AGkAbwBuACAAKgAvAAotACIAVABo
AGUAIABVAFIATAAgAGMAYQBuIBkAdAAgAGIAZQAgAHMAaABvAHcAbgAiACAAPQAgACIAVABoAGUA
IABVAFIATAAgAGMAYQBuIBkAdAAgAGIAZQAgAHMAaABvAHcAbgAiADsACisAIgBUAGgAZQAgAFUA
UgBMACAAYwBhAG4AGSB0ACAAYgBlACAAcwBoAG8AdwBuACIAIAA9ACAAIgBUAGgAZQAgAFUAUgBM
ACAAYwBhAG4AGSB0ACAAYgBlACAAcwBoAG8AdwBuACIAOwAKIAAKIAAvACoAIABXAGUAYgBLAGkA
dABFAHIAcgBvAHIAQwBhAG4AbgBvAHQARgBpAG4AZABQAGwAdQBnAGkAbgAgAGQAZQBzAGMAcgBp
AHAAdABpAG8AbgAgACoALwAKLQAiAFQAaABlACAAcABsAHUAZwAtAGkAbgAgAGMAYQBuIBkAdAAg
AGIAZQAgAGYAbwB1AG4AZAAiACAAPQAgACIAVABoAGUAIABwAGwAdQBnAC0AaQBuACAAYwBhAG4g
GQB0ACAAYgBlACAAZgBvAHUAbgBkACIAOwAKKwAiAFQAaABlACAAcABsAHUAZwAtAGkAbgAgAGMA
YQBuABkgdAAgAGIAZQAgAGYAbwB1AG4AZAAiACAAPQAgACIAVABoAGUAIABwAGwAdQBnAC0AaQBu
ACAAYwBhAG4AGSB0ACAAYgBlACAAZgBvAHUAbgBkACIAOwAKIAAKIAAvACoAIABXAGUAYgBLAGkA
dABFAHIAcgBvAHIAQwBhAG4AbgBvAHQATABvAGEAZABQAGwAdQBnAGkAbgAgAGQAZQBzAGMAcgBp
AHAAdABpAG8AbgAgACoALwAKLQAiAFQAaABlACAAcABsAHUAZwAtAGkAbgAgAGMAYQBuIBkAdAAg
AGIAZQAgAGwAbwBhAGQAZQBkACIAIAA9ACAAIgBUAGgAZQAgAHAAbAB1AGcALQBpAG4AIABjAGEA
biAZAHQAIABiAGUAIABsAG8AYQBkAGUAZAAiADsACisAIgBUAGgAZQAgAHAAbAB1AGcALQBpAG4A
IABjAGEAbgAZIHQAIABiAGUAIABsAG8AYQBkAGUAZAAiACAAPQAgACIAVABoAGUAIABwAGwAdQBn
AC0AaQBuACAAYwBhAG4AGSB0ACAAYgBlACAAbABvAGEAZABlAGQAIgA7AAogAAogAC8AKgAgAHAA
cgBvAG0AcAB0ACAAcwB0AHIAaQBuAGcAIABpAG4AIABhAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBv
AG4AIABwAGEAbgBlAGwAIAAqAC8ACi0AIgBUAGgAZQAgAHUAcwBlAHIAIABuAGEAbQBlACAAbwBy
ACAAcABhAHMAcwB3AG8AcgBkACAAeQBvAHUAIABlAG4AdABlAHIAZQBkACAAZgBvAHIAIABhAHIA
ZQBhACAgHAAlAEAgHQAgAG8AbgAgACUAQAAgAHcAYQBzACAAaQBuAGMAbwByAHIAZQBjAHQALgAg
AE0AYQBrAGUAIABzAHUAcgBlACAAeQBvAHUgGQByAGUAIABlAG4AdABlAHIAaQBuAGcAIAB0AGgA
ZQBtACAAYwBvAHIAcgBlAGMAdABsAHkALAAgAGEAbgBkACAAdABoAGUAbgAgAHQAcgB5ACAAYQBn
AGEAaQBuAC4AIgAgAD0AIAAiAFQAaABlACAAdQBzAGUAcgAgAG4AYQBtAGUAIABvAHIAIABwAGEA
cwBzAHcAbwByAGQAIAB5AG8AdQAgAGUAbgB0AGUAcgBlAGQAIABmAG8AcgAgAGEAcgBlAGEAICAc
ACUAQCAdACAAbwBuACAAJQBAACAAdwBhAHMAIABpAG4AYwBvAHIAcgBlAGMAdAAuACAATQBhAGsA
ZQAgAHMAdQByAGUAIAB5AG8AdSAZAHIAZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQAaABlAG0AIABj
AG8AcgByAGUAYwB0AGwAeQAsACAAYQBuAGQAIAB0AGgAZQBuACAAdAByAHkAIABhAGcAYQBpAG4A
LgAiADsACisAIgBUAGgAZQAgAHUAcwBlAHIAIABuAGEAbQBlACAAbwByACAAcABhAHMAcwB3AG8A
cgBkACAAeQBvAHUAIABlAG4AdABlAHIAZQBkACAAZgBvAHIAIABhAHIAZQBhACAAHCAlAEAAHSAg
AG8AbgAgACUAQAAgAHcAYQBzACAAaQBuAGMAbwByAHIAZQBjAHQALgAgAE0AYQBrAGUAIABzAHUA
cgBlACAAeQBvAHUAGSByAGUAIABlAG4AdABlAHIAaQBuAGcAIAB0AGgAZQBtACAAYwBvAHIAcgBl
AGMAdABsAHkALAAgAGEAbgBkACAAdABoAGUAbgAgAHQAcgB5ACAAYQBnAGEAaQBuAC4AIgAgAD0A
IAAiAFQAaABlACAAdQBzAGUAcgAgAG4AYQBtAGUAIABvAHIAIABwAGEAcwBzAHcAbwByAGQAIAB5
AG8AdQAgAGUAbgB0AGUAcgBlAGQAIABmAG8AcgAgAGEAcgBlAGEAIAAcICUAQAAdICAAbwBuACAA
JQBAACAAdwBhAHMAIABpAG4AYwBvAHIAcgBlAGMAdAAuACAATQBhAGsAZQAgAHMAdQByAGUAIAB5
AG8AdQAZIHIAZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQAaABlAG0AIABjAG8AcgByAGUAYwB0AGwA
eQAsACAAYQBuAGQAIAB0AGgAZQBuACAAdAByAHkAIABhAGcAYQBpAG4ALgAiADsACiAACiAALwAq
ACAAcAByAG8AbQBwAHQAIABzAHQAcgBpAG4AZwAgAGkAbgAgAGEAdQB0AGgAZQBuAHQAaQBjAGEA
dABpAG8AbgAgAHAAYQBuAGUAbAAgACoALwAKLQAiAFQAaABlACAAdQBzAGUAcgAgAG4AYQBtAGUA
IABvAHIAIABwAGEAcwBzAHcAbwByAGQAIAB5AG8AdQAgAGUAbgB0AGUAcgBlAGQAIABmAG8AcgAg
AHQAaABlACAAJQBAACAAcAByAG8AeAB5ACAAcwBlAHIAdgBlAHIAIAAlAEAAIAB3AGEAcwAgAGkA
bgBjAG8AcgByAGUAYwB0AC4AIABNAGEAawBlACAAcwB1AHIAZQAgAHkAbwB1IBkAcgBlACAAZQBu
AHQAZQByAGkAbgBnACAAdABoAGUAbQAgAGMAbwByAHIAZQBjAHQAbAB5ACwAIABhAG4AZAAgAHQA
aABlAG4AIAB0AHIAeQAgAGEAZwBhAGkAbgAuACIAIAA9ACAAIgBUAGgAZQAgAHUAcwBlAHIAIABu
AGEAbQBlACAAbwByACAAcABhAHMAcwB3AG8AcgBkACAAeQBvAHUAIABlAG4AdABlAHIAZQBkACAA
ZgBvAHIAIAB0AGgAZQAgACUAQAAgAHAAcgBvAHgAeQAgAHMAZQByAHYAZQByACAAJQBAACAAdwBh
AHMAIABpAG4AYwBvAHIAcgBlAGMAdAAuACAATQBhAGsAZQAgAHMAdQByAGUAIAB5AG8AdSAZAHIA
ZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQAaABlAG0AIABjAG8AcgByAGUAYwB0AGwAeQAsACAAYQBu
AGQAIAB0AGgAZQBuACAAdAByAHkAIABhAGcAYQBpAG4ALgAiADsACisAIgBUAGgAZQAgAHUAcwBl
AHIAIABuAGEAbQBlACAAbwByACAAcABhAHMAcwB3AG8AcgBkACAAeQBvAHUAIABlAG4AdABlAHIA
ZQBkACAAZgBvAHIAIAB0AGgAZQAgACUAQAAgAHAAcgBvAHgAeQAgAHMAZQByAHYAZQByACAAJQBA
ACAAdwBhAHMAIABpAG4AYwBvAHIAcgBlAGMAdAAuACAATQBhAGsAZQAgAHMAdQByAGUAIAB5AG8A
dQAZIHIAZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQAaABlAG0AIABjAG8AcgByAGUAYwB0AGwAeQAs
ACAAYQBuAGQAIAB0AGgAZQBuACAAdAByAHkAIABhAGcAYQBpAG4ALgAiACAAPQAgACIAVABoAGUA
IAB1AHMAZQByACAAbgBhAG0AZQAgAG8AcgAgAHAAYQBzAHMAdwBvAHIAZAAgAHkAbwB1ACAAZQBu
AHQAZQByAGUAZAAgAGYAbwByACAAdABoAGUAIAAlAEAAIABwAHIAbwB4AHkAIABzAGUAcgB2AGUA
cgAgACUAQAAgAHcAYQBzACAAaQBuAGMAbwByAHIAZQBjAHQALgAgAE0AYQBrAGUAIABzAHUAcgBl
ACAAeQBvAHUAGSByAGUAIABlAG4AdABlAHIAaQBuAGcAIAB0AGgAZQBtACAAYwBvAHIAcgBlAGMA
dABsAHkALAAgAGEAbgBkACAAdABoAGUAbgAgAHQAcgB5ACAAYQBnAGEAaQBuAC4AIgA7AAogAAog
AC8AKgAgAHAAcgBvAG0AcAB0ACAAcwB0AHIAaQBuAGcAIABpAG4AIABhAHUAdABoAGUAbgB0AGkA
YwBhAHQAaQBvAG4AIABwAGEAbgBlAGwAIAAqAC8ACi0AIgBUAGgAZQAgAHUAcwBlAHIAIABuAGEA
bQBlACAAbwByACAAcABhAHMAcwB3AG8AcgBkACAAeQBvAHUAIABlAG4AdABlAHIAZQBkACAAZgBv
AHIAIAB0AGgAaQBzACAAYQByAGUAYQAgAG8AbgAgACUAQAAgAHcAYQBzACAAaQBuAGMAbwByAHIA
ZQBjAHQALgAgAE0AYQBrAGUAIABzAHUAcgBlACAAeQBvAHUgGQByAGUAIABlAG4AdABlAHIAaQBu
AGcAIAB0AGgAZQBtACAAYwBvAHIAcgBlAGMAdABsAHkALAAgAGEAbgBkACAAdABoAGUAbgAgAHQA
cgB5ACAAYQBnAGEAaQBuAC4AIgAgAD0AIAAiAFQAaABlACAAdQBzAGUAcgAgAG4AYQBtAGUAIABv
AHIAIABwAGEAcwBzAHcAbwByAGQAIAB5AG8AdQAgAGUAbgB0AGUAcgBlAGQAIABmAG8AcgAgAHQA
aABpAHMAIABhAHIAZQBhACAAbwBuACAAJQBAACAAdwBhAHMAIABpAG4AYwBvAHIAcgBlAGMAdAAu
ACAATQBhAGsAZQAgAHMAdQByAGUAIAB5AG8AdSAZAHIAZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQA
aABlAG0AIABjAG8AcgByAGUAYwB0AGwAeQAsACAAYQBuAGQAIAB0AGgAZQBuACAAdAByAHkAIABh
AGcAYQBpAG4ALgAiADsACisAIgBUAGgAZQAgAHUAcwBlAHIAIABuAGEAbQBlACAAbwByACAAcABh
AHMAcwB3AG8AcgBkACAAeQBvAHUAIABlAG4AdABlAHIAZQBkACAAZgBvAHIAIAB0AGgAaQBzACAA
YQByAGUAYQAgAG8AbgAgACUAQAAgAHcAYQBzACAAaQBuAGMAbwByAHIAZQBjAHQALgAgAE0AYQBr
AGUAIABzAHUAcgBlACAAeQBvAHUAGSByAGUAIABlAG4AdABlAHIAaQBuAGcAIAB0AGgAZQBtACAA
YwBvAHIAcgBlAGMAdABsAHkALAAgAGEAbgBkACAAdABoAGUAbgAgAHQAcgB5ACAAYQBnAGEAaQBu
AC4AIgAgAD0AIAAiAFQAaABlACAAdQBzAGUAcgAgAG4AYQBtAGUAIABvAHIAIABwAGEAcwBzAHcA
bwByAGQAIAB5AG8AdQAgAGUAbgB0AGUAcgBlAGQAIABmAG8AcgAgAHQAaABpAHMAIABhAHIAZQBh
ACAAbwBuACAAJQBAACAAdwBhAHMAIABpAG4AYwBvAHIAcgBlAGMAdAAuACAATQBhAGsAZQAgAHMA
dQByAGUAIAB5AG8AdQAZIHIAZQAgAGUAbgB0AGUAcgBpAG4AZwAgAHQAaABlAG0AIABjAG8AcgBy
AGUAYwB0AGwAeQAsACAAYQBuAGQAIAB0AGgAZQBuACAAdAByAHkAIABhAGcAYQBpAG4ALgAiADsA
CiAACiAALwAqACAAdABlAHgAdAAgAHQAaABhAHQAIABhAHAAcABlAGEAcgBzACAAYQB0ACAAdABo
AGUAIABzAHQAYQByAHQAIABvAGYAIABuAGUAYQByAGwAeQAtAG8AYgBzAG8AbABlAHQAZQAgAHcA
ZQBiACAAcABhAGcAZQBzACAAaQBuACAAdABoAGUAIABmAG8AcgBtACAAbwBmACAAYQAgACcAcwBl
AGEAcgBjAGgAYQBiAGwAZQAgAGkAbgBkAGUAeAAnACAAKgAvAAogACIAVABoAGkAcwAgAGkAcwAg
AGEAIABzAGUAYQByAGMAaABhAGIAbABlACAAaQBuAGQAZQB4AC4AIABFAG4AdABlAHIAIABzAGUA
YQByAGMAaAAgAGsAZQB5AHcAbwByAGQAcwA6ACAAIgAgAD0AIAAiAFQAaABpAHMAIABpAHMAIABh
ACAAcwBlAGEAcgBjAGgAYQBiAGwAZQAgAGkAbgBkAGUAeAAuACAARQBuAHQAZQByACAAcwBlAGEA
cgBjAGgAIABrAGUAeQB3AG8AcgBkAHMAOgAgACIAOwAKQEAgLTMzMiw3ICszNjgsNyBAQAogACIA
VABpAGcAaAB0AGUAbgAgAEsAZQByAG4AaQBuAGcAIAAoAFUAbgBkAG8AIABhAGMAdABpAG8AbgAg
AG4AYQBtAGUAKQAiACAAPQAgACIAVABpAGcAaAB0AGUAbgAgAEsAZQByAG4AaQBuAGcAIgA7AAog
AAogAC8AKgAgAHAAcgBvAG0AcAB0ACAAcwB0AHIAaQBuAGcAIABpAG4AIABhAHUAdABoAGUAbgB0
AGkAYwBhAHQAaQBvAG4AIABwAGEAbgBlAGwAIAAqAC8ACi0AIgBUAG8AIAB2AGkAZQB3ACAAdABo
AGkAcwAgAHAAYQBnAGUALAAgAHkAbwB1ACAAbQB1AHMAdAAgAGwAbwBnACAAaQBuACAAdABvACAA
YQByAGUAYQAgIBwAJQBAIB0AIABvAG4AIAAlAEAALgAiACAAPQAgACIAVABvACAAdgBpAGUAdwAg
AHQAaABpAHMAIABwAGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQAIABsAG8AZwAgAGkAbgAgAHQA
bwAgAGEAcgBlAGEAICAcACUAQCAdACAAbwBuACAAJQBAAC4AIgA7AAorACIAVABvACAAdgBpAGUA
dwAgAHQAaABpAHMAIABwAGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQAIABsAG8AZwAgAGkAbgAg
AHQAbwAgAGEAcgBlAGEAIAAcICUAQAAdICAAbwBuACAAJQBAAC4AIgAgAD0AIAAiAFQAbwAgAHYA
aQBlAHcAIAB0AGgAaQBzACAAcABhAGcAZQAsACAAeQBvAHUAIABtAHUAcwB0ACAAbABvAGcAIABp
AG4AIAB0AG8AIABhAHIAZQBhACAAHCAlAEAAHSAgAG8AbgAgACUAQAAuACIAOwAKIAAKIAAvACoA
IABwAHIAbwBtAHAAdAAgAHMAdAByAGkAbgBnACAAaQBuACAAYQB1AHQAaABlAG4AdABpAGMAYQB0
AGkAbwBuACAAcABhAG4AZQBsACAAKgAvAAogACIAVABvACAAdgBpAGUAdwAgAHQAaABpAHMAIABw
AGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQAIABsAG8AZwAgAGkAbgAgAHQAbwAgAHQAaABlACAA
JQBAACAAcAByAG8AeAB5ACAAcwBlAHIAdgBlAHIAIAAlAEAALgAiACAAPQAgACIAVABvACAAdgBp
AGUAdwAgAHQAaABpAHMAIABwAGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQAIABsAG8AZwAgAGkA
bgAgAHQAbwAgAHQAaABlACAAJQBAACAAcAByAG8AeAB5ACAAcwBlAHIAdgBlAHIAIAAlAEAALgAi
ADsACkBAIC0zNDAsNiArMzc2LDkgQEAKIAAvACoAIABwAHIAbwBtAHAAdAAgAHMAdAByAGkAbgBn
ACAAaQBuACAAYQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACAAcABhAG4AZQBsACAAKgAvAAog
ACIAVABvACAAdgBpAGUAdwAgAHQAaABpAHMAIABwAGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQA
IABsAG8AZwAgAGkAbgAgAHQAbwAgAHQAaABpAHMAIABhAHIAZQBhACAAbwBuACAAJQBAADoAIgAg
AD0AIAAiAFQAbwAgAHYAaQBlAHcAIAB0AGgAaQBzACAAcABhAGcAZQAsACAAeQBvAHUAIABtAHUA
cwB0ACAAbABvAGcAIABpAG4AIAB0AG8AIAB0AGgAaQBzACAAYQByAGUAYQAgAG8AbgAgACUAQAA6
ACIAOwAKIAAKKwAvACoAIABUAHIAYQBuAHMAZgBvAHIAbQBhAHQAaQBvAG4AcwAgAGMAbwBuAHQA
ZQB4AHQAIABzAHUAYgAtAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAVAByAGEAbgBzAGYA
bwByAG0AYQB0AGkAbwBuAHMAIgAgAD0AIAAiAFQAcgBhAG4AcwBmAG8AcgBtAGEAdABpAG8AbgBz
ACIAOwAKKwAKIAAvACoAIABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAvAAog
ACIAVAB1AHIAbgAgAE8AZgBmACAASwBlAHIAbgBpAG4AZwAgACgAVQBuAGQAbwAgAGEAYwB0AGkA
bwBuACAAbgBhAG0AZQApACIAIAA9ACAAIgBUAHUAcgBuACAATwBmAGYAIABLAGUAcgBuAGkAbgBn
ACIAOwAKIAAKQEAgLTM3Nyw3ICs0MTYsNyBAQAogACIAVQBzAGUAIABTAHQAYQBuAGQAYQByAGQA
IABMAGkAZwBhAHQAdQByAGUAcwAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAp
ACIAIAA9ACAAIgBVAHMAZQAgAFMAdABhAG4AZABhAHIAZAAgAEwAaQBnAGEAdAB1AHIAZQBzACIA
OwAKIAAKIAAvACoAIABXAGUAYgAgAEkAbgBzAHAAZQBjAHQAbwByACAAdwBpAG4AZABvAHcAIAB0
AGkAdABsAGUAIAAqAC8ACi0AIgBXAGUAYgAgAEkAbgBzAHAAZQBjAHQAbwByACAgFAAgACUAQAAi
ACAAPQAgACIAVwBlAGIAIABJAG4AcwBwAGUAYwB0AG8AcgAgIBQAIAAlAEAAIgA7AAorACIAVwBl
AGIAIABJAG4AcwBwAGUAYwB0AG8AcgAgABQgIAAlAEAAIgAgAD0AIAAiAFcAZQBiACAASQBuAHMA
cABlAGMAdABvAHIAIAAUICAAJQBAACIAOwAKIAAKIAAvACoAIABXAHIAaQB0AGkAbgBnACAAZABp
AHIAZQBjAHQAaQBvAG4AIABjAG8AbgB0AGUAeAB0ACAAcwB1AGIALQBtAGUAbgB1ACAAaQB0AGUA
bQAgACoALwAKIAAiAFcAcgBpAHQAaQBuAGcAIABEAGkAcgBlAGMAdABpAG8AbgAiACAAPQAgACIA
VwByAGkAdABpAG4AZwAgAEQAaQByAGUAYwB0AGkAbwBuACIAOwAKQEAgLTU2Nyw0ICs2MDYsNCBA
QAogAAogAC8AKgAgAGEAYwBjAGUAcwBzAGkAYgBpAGwAaQB0AHkAIAByAG8AbABlACAAZABlAHMA
YwByAGkAcAB0AGkAbwBuACAAZgBvAHIAIAB3AGUAYgAgAGEAcgBlAGEAIAAqAC8ACiAAIgB3AGUA
YgAgAGEAcgBlAGEAIgAgAD0AIAAiAHcAZQBiACAAYQByAGUAYQAiADsACi0ACisAClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NiBAQAorMjAwOS0wNC0yNCAg
RG91Z2xhcyBSLiBEYXZpZHNvbiAgPGRkYXZpZHNvQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
dGhlIHZhcmlvdXMgc3dpdGNoZXMgYW5kIGNvbnRleHQgbWVudSBpdGVtcyBuZWVkZWQgZm9yCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxlbWVu
dCB0ZXh0IGNoZWNraW5nCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAg
ICAgKGZpeE1lbnVzUmVjZWl2ZWRGcm9tT2xkQ2xpZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1cHBlcmNhc2VXb3JkKToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6bG93ZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmNhcGl0YWxpemVXb3JkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
c2hvd1N1YnN0aXR1dGlvbnNQYW5lbCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnN1YnN0
aXR1dGlvbnNQYW5lbElzU2hvd2luZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRvZ2ds
ZVNtYXJ0SW5zZXJ0RGVsZXRlKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0
b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbik6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24pOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQpOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBh
cmFncmFwaCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW06Cisg
ICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnNdKToK
KyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxs
aW5nQXV0b21hdGljYWxseV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVu
dUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBj
b250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczpdKToKKyAgICAgICAgKC1bV2ViVmll
d0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGVdKToKKyAgICAgICAgKC1b
V2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXNdKToKKyAgICAgICAg
KC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdKToKKyAgICAg
ICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rc10pOgorICAg
ICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnRd
KToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3Jt
YXRpb25zTWVudV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1U
YWdNYWtlVXBwZXJDYXNlXSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51
SXRlbVRhZ01ha2VMb3dlckNhc2VdKToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4
dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRo
b3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldEF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdG9n
Z2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6XSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZF0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6
CisgICAgICAgICgtW1dlYlZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
XSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF0p
OgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRd
KToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRd
KToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0
dXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlv
bjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVu
YWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAw
OS0wNC0yNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIxNiw2ICsyMTYsMzEgQEAgc3RhdGljIHZvaWQgZml4TWVudXNSZWNlaXZlZEZyb21P
bGRDbGllbgogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnTGVmdFRv
UmlnaHQ7CiAgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2Vi
Vmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnRd
XSkKICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0
OworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1
dG9tYXRpY2FsbHldXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRh
Z0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnVdXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5U
YWcgPSBXZWJNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51OworICAgICAgICAgICAgZWxzZSBp
ZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rvcnld
IGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOnRydWVdXQorICAgICAgICAgICAg
ICAgICAgICAgfHwgW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOmZhbHNlXV0pCisg
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9u
czsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3
RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZV1d
KQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRDb3B5UGFz
dGU7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXNdXSkK
KyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOwor
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzXV0pCisgICAg
ICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydERhc2hlczsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBz
aGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzXV0pCisgICAgICAgICAg
ICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydExpbmtzOworICAgICAgICAgICAg
ZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZh
Y3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudF1dKQorICAgICAgICAgICAg
ICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50OworICAgICAgICAg
ICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnVdXSkKKyAgICAg
ICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU7
CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0Zh
Y3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZV1dKQor
ICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFj
dG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlXV0pCisg
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemVdXSkKKyAgICAg
ICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0NhcGl0YWxpemU7CiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBXZWJNZW51SXRlbVRh
Z090aGVyIGZvciBhbnkgaXRlbXMgb3RoZXIgdGhhbiB0aGUgb25lcyB3ZSBleHBsaWNpdGx5IGhh
bmRsZS4KICAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm90aGluZyB0byBwcmV2ZW50IGFuIGFwcCBm
cm9tIGFwcGx5aW5nIHRoaXMgdGFnLCBidXQgdGhleSBhcmUgc3VwcG9zZWQgdG8gb25seQpJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lv
biA0MjgyNSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDI1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5T
QXJyYXkqIHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopOwogI2Vu
ZGlmCiAgICAgCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisgICAgdmlydHVhbCB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbG93ZXJjYXNlV29yZCgpOworICAgIHZpcnR1YWwgdm9pZCBjYXBpdGFs
aXplV29yZCgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKGJvb2wg
c2hvdyk7CisgICAgdmlydHVhbCBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpOwor
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOworICAgIHZpcnR1YWwg
Ym9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOworICAgIHZpcnR1YWwgYm9v
bCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRv
Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50RW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKTsKIApAQCAtMTAxLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGVh
cm5Xb3JkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5n
TG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdl
YkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFk
R3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdBbmRHcmFtbWFy
T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGJvb2wgY2hlY2tHcmFt
bWFyLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6
OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGlu
Z1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOwpJbmRleDogV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDQyODI1KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxOSw2ICszMTksOTIgQEAgTlNBcnJheSogV2ViRWRpdG9yQ2xpZW50OjpwYXN0ZWJvYXJk
VHlwZQogfQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cHBlcmNh
c2VXb3JkKCkKK3sKKyAgICBbbV93ZWJWaWV3IHVwcGVyY2FzZVdvcmQ6bmlsXTsKK30KKwordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6Omxvd2VyY2FzZVdvcmQoKQoreworICAgIFttX3dlYlZpZXcgbG93
ZXJjYXNlV29yZDpuaWxdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2FwaXRhbGl6ZVdv
cmQoKQoreworICAgIFttX3dlYlZpZXcgY2FwaXRhbGl6ZVdvcmQ6bmlsXTsKK30KKwordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KQoreworICAg
IE5TUGFuZWwgKnNwZWxsaW5nUGFuZWwgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gc3Vic3RpdHV0aW9uc1BhbmVsXTsKKyAgICBpZiAoc2hvdykKKyAgICAgICAgW3NwZWxs
aW5nUGFuZWwgb3JkZXJGcm9udDpuaWxdOworICAgIGVsc2UKKyAgICAgICAgW3NwZWxsaW5nUGFu
ZWwgb3JkZXJPdXQ6bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnN1YnN0aXR1dGlv
bnNQYW5lbElzU2hvd2luZygpCit7CisgICAgcmV0dXJuIFtbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gc3Vic3RpdHV0aW9uc1BhbmVsXSBpc1Zpc2libGVdOworfQorCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKQoreworICAgIFttX3dl
YlZpZXcgdG9nZ2xlU21hcnRJbnNlcnREZWxldGU6bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKK3sKKyAgICByZXR1
cm4gW21fd2ViVmlldyBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF07Cit9CisK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigp
Cit7CisgICAgW21fd2ViVmlldyB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjpuaWxd
OworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9u
RW5hYmxlZF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rp
b246bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IGlzQXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWRdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpCit7CisgICAgW21fd2ViVmlldyB0b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uOm5pbF07Cit9CisKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojpp
c0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJW
aWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZF07Cit9CisKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKQoreworICAgIFttX3dl
YlZpZXcgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50Om5pbF07Cit9CisKK2Jvb2wgV2Vi
RWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKQorewor
ICAgIHJldHVybiBbbV93ZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKQoreworICAgIFttX3dlYlZpZXcgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uOm5pbF07Cit9CisjZW5kaWYKKwogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZElu
c2VydE5vZGUoTm9kZSAqbm9kZSwgUmFuZ2UqIHJlcGxhY2luZ1JhbmdlLCBFZGl0b3JJbnNlcnRB
Y3Rpb24gZ2l2ZW5BY3Rpb24pCiB7IAogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0Rl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRJbnNlcnROb2RlOmtpdChu
b2RlKSByZXBsYWNpbmdET01SYW5nZTpraXQocmVwbGFjaW5nUmFuZ2UpIGdpdmVuQWN0aW9uOihX
ZWJWaWV3SW5zZXJ0QWN0aW9uKWdpdmVuQWN0aW9uXTsKQEAgLTU5NSwyNyArNjgxLDI2IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmkKICNlbmRpZgogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgYm9vbCBjaGVja0dyYW1tYXIsIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVj
a2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKICNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKICAgICBOU1N0cmluZyAqdGV4dFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
Q2hhcmFjdGVyc05vQ29weTpjb25zdF9jYXN0PFVDaGFyKj4odGV4dCkgbGVuZ3RoOmxlbmd0aCBm
cmVlV2hlbkRvbmU6Tk9dOwotICAgIE5TVGV4dENoZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlcyA9
IGNoZWNrR3JhbW1hciA/IChOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSB8IE5TVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiAoTlNUZXh0
Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkgfCBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyk7Ci0g
ICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3Rl
eHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6Y2hlY2tpbmdUeXBlcyBvcHRpb25zOm5pbCBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVM
TCB3b3JkQ291bnQ6TlVMTF07CisgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5nVHlw
ZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1
bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdv
cmRDb3VudDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAgICBmb3IgKE5TVGV4
dENoZWNraW5nUmVzdWx0ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKICAg
ICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAg
ICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3Vs
dFR5cGVdOwogICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCAmJiByZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgaWYgKE5TVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUpIHsKKyAgICAgICAgaWYgKE5TVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXN1bHRUeXBlID0gMTsKKyAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgICAgICAgICAgcmVz
dWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQu
bGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGVja0dyYW1tYXIgJiYgTlNUZXh0Q2hlY2tp
bmdUeXBlR3JhbW1hciA9PSByZXN1bHRUeXBlKSB7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hciA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMg
JiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdS
ZXN1bHQgZ3JhbW1hckRldGFpbHNdOwotICAgICAgICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSAy
OworICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKICAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwogICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIGZv
ciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CkBAIC02MzQsNiAr
NzE5LDQxIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nQW5kR3IKICAgICAg
ICAgICAgICAgICByZXN1bHQuZGV0YWlscy5hcHBlbmQoZGV0YWlsKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSBpZiAo
TlNUZXh0Q2hlY2tpbmdUeXBlTGluayA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlw
ZXMgJiBOU1RleHRDaGVja2luZ1R5cGVMaW5rKSkgeworICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZUxpbms7CisgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKKyAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1
dGVTdHJpbmddOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAg
fSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVRdW90ZSA9PSByZXN1bHRUeXBlICYmIDAgIT0g
KGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSkpIHsKKyAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3Vs
dCByZXBsYWNlbWVudFN0cmluZ107CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZURhc2ggPT0gcmVzdWx0VHlw
ZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCkpIHsKKyAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGVEYXNoOworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29t
aW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1l
bnQgPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdU
eXBlUmVwbGFjZW1lbnQpKSB7CisgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0
OworICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7
CisgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKKyAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmdd
OworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIGlm
IChOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hl
Y2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pKSB7CisgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3Vs
dFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIxLDcgKzMyMSw3IEBACiAKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd0Nv
bG9ycwogewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgY29sb3JzIiwgIlNob3cgY29sb3Jz
IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBDb2xvcnMi
LCAiU2hvdyBjb2xvcnMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogLSAoTlNTdHJpbmcgKilj
b250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51CkBAIC0zNjgsNiArMzY4LDY4IEBACiAgICAgcmV0
dXJuIFVJX1NUUklORygiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0IGNvbnRleHQgbWVu
dSBpdGVtIik7CiB9CiAKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcnJlY3QgU3Bl
bGxpbmcgQXV0b21hdGljYWxseSIsICJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdT
dWJzdGl0dXRpb25zTWVudQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN1YnN0aXR1dGlvbnMi
LCAiU3Vic3RpdHV0aW9ucyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJp
bmcgKiljb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczooYm9vbClzaG93Cit7Cisg
ICAgaWYgKHNob3cpIAorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlv
bnMiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTdWJz
dGl0dXRpb25zIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21h
cnQgQ29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9
CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBRdW90ZXMiLCAiU21hcnQgUXVvdGVzIGNvbnRleHQgbWVu
dSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNo
ZXMKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBEYXNoZXMiLCAiU21hcnQgRGFzaGVz
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVt
VGFnU21hcnRMaW5rcworeworICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNt
YXJ0IExpbmtzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiVGV4
dCBSZXBsYWNlbWVudCIsICJUZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Cit9
CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudQor
eworICAgIHJldHVybiBVSV9TVFJJTkcoIlRyYW5zZm9ybWF0aW9ucyIsICJUcmFuc2Zvcm1hdGlv
bnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnTWFrZVVwcGVyQ2FzZQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk1ha2UgVXBw
ZXIgQ2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAo
TlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlCit7CisgICAgcmV0dXJu
IFVJX1NUUklORygiTWFrZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIgQ2FzZSBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxp
emUKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDYXBpdGFsaXplIiwgIkNhcGl0YWxpemUgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKwogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdJ
bnNwZWN0RWxlbWVudAogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkluc3BlY3QgRWxlbWVudCIs
ICJJbnNwZWN0IEVsZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQwLDYgKzI2NDAsNDIgQEAgV0VCQ09S
RV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQogI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICAvLyBGSVhNRSA0Nzk5MTM0OiBXZWJWaWV3IGlzIHRoZSBib3R0
bGVuZWNrIGZvciB0aGlzIGxvZ2ljLCBidXQgd2UgbXVzdCB2YWxpZGF0ZSAKKyAgICAvLyB0aGUg
c2VsZWN0b3IgaGVyZSBiZWNhdXNlIHdlIGltcGxlbWVudCBpdCBoZXJlLCBhbmQgd2UgbXVzdCBp
bXBsZW1lbnQgaXQgaGVyZSBiZWNhdXNlIHRoZSBBcHBLaXQgCisgICAgLy8gY29kZSBjaGVja3Mg
dGhlIGZpcnN0IHJlc3BvbmRlci4KKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVB
dXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjopKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJ
dGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9m
Q2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0
ZTpbc2VsZiBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF0gPyBOU09uU3RhdGUg
OiBOU09mZlN0YXRlXTsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAgaWYgKGFjdGlv
biA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjopKSB7CisgICAgICAg
IE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAo
W21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAg
IFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
XSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0K
KyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uOikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0
ZW07CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFz
c11dKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzQXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAg
IHJldHVybiBZRVM7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudDopKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVt
ID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xh
c3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpb
c2VsZiBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNP
ZmZTdGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0g
QHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjopKSB7CisgICAgICAg
IE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAo
W21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAg
IFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVu
YWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7Cisg
ICAgfQorI2VuZGlmCiAgICAgCiAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBbc2VsZiBj
b3JlQ29tbWFuZEJ5U2VsZWN0b3I6YWN0aW9uXTsKICAgICBpZiAoY29tbWFuZC5pc1N1cHBvcnRl
ZCgpKSB7CkBAIC00OTM3LDYgKzQ5NzMsODggQEAgc3RhdGljIENHUG9pbnQgY29yZUdyYXBoaWNz
U2NyZWVuUG9pbnRGbwogCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorCisvLyBGSVhNRSA0Nzk5MTM0OiBX
ZWJWaWV3IGlzIHRoZSBib3R0bGVuZWNrIGZvciB0aGlzIGxvZ2ljLCBidXQgd2UgbXVzdCBpbXBs
ZW1lbnQgdGhlc2UgbWV0aG9kcyBoZXJlIGJlY2F1c2UKKy8vIHRoZSBBcHBLaXQgY29kZSBjaGVj
a3MgdGhlIGZpcnN0IHJlc3BvbmRlci4KKworLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBbW3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBfd2ViVmlld10g
c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOmZsYWddOworfQorCistICh2b2lk
KXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3Nl
bGYgX3dlYlZpZXddIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOnNlbmRlcl07Cit9
CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAoreworICAgIHJldHVy
biBbW3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOworfQor
CistICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sK
KyAgICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOmZs
YWddOworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNlbmRl
cgoreworICAgIFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjpz
ZW5kZXJdOworfQorCistIChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQK
K3sKKyAgICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3XSBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSBzZXRBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uRW5hYmxlZDpmbGFnXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246c2VuZGVyXTsKK30KKworLSAoQk9PTClpc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQKK3sKKyAgICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3
XSBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRdOworfQorCistICh2b2lkKXNldEF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBf
d2ViVmlld10gc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDpmbGFnXTsKK30KKwor
LSAodm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcgoreworICAg
IFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50OnNlbmRlcl07
Cit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkCit7Cisg
ICAgcmV0dXJuIFtbc2VsZiBfd2ViVmlld10gaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkOihCT09MKWZsYWcKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRv
Z2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjpzZW5kZXJdOworfQorCisjZW5kaWYKKwog
LSAodm9pZClfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6KGlkKXNlbmRlcgogewogICAgIC8v
IERpY3Rpb25hcnkgQVBJIHdpbGwgYWNjZXB0IGEgd2hpdGVzcGFjZS1vbmx5IHN0cmluZyBhbmQg
ZGlzcGxheSBVSSBhcyBpZiBpdCB3ZXJlIHJlYWwgdGV4dCwKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1
NCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQ6KEJPT0wpZmxhZzsKIC0gKHZvaWQpdG9nZ2xlR3JhbW1hckNoZWNraW5nOihpZClzZW5k
ZXI7CiAjZW5kaWYKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKKy0gKEJPT0wpaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWQ7CistICh2b2lkKXNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDoo
Qk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQp
c2VuZGVyOworLSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworLSAodm9p
ZClzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0
b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOihpZClzZW5kZXI7CistIChCT09MKWlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CistICh2b2lkKXNldEF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb246KGlkKXNlbmRlcjsKKy0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnRFbmFibGVkOworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOihC
T09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2Vu
ZGVyOworLSAoQk9PTClpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7CistICh2
b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CisjZW5k
aWYKIC0gKFdlYkNvcmU6OkNhY2hlZEltYWdlKilwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZTsK
IC0gKHZvaWQpc2V0UHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2U6KFdlYkNvcmU6OkNhY2hlZElt
YWdlKilzb3VyY2U7CiAtICh2b2lkKV93ZWJfbGF5b3V0SWZOZWVkZWRSZWN1cnNpdmU7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZp
c2lvbiA0MjgyNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTEgQEAKICNkZWZpbmUgV2ViS2l0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQcml2YXRlQnJvd3NpbmdF
bmFibGVkIgogI2RlZmluZSBXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgQCJXZWJD
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYkdyYW1tYXJDaGVja2lu
Z0VuYWJsZWQgQCJXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgQCJXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIEAiV2Vi
QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkIEAiV2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQi
CisjZGVmaW5lIFdlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgQCJXZWJBdXRvbWF0
aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkIEAiV2ViQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleSBAIldlYktpdERPTVBh
c3RlQWxsb3dlZFByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdl
YktpdEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aCBAIldlYktpdEZUUERpcmVjdG9yeVRlbXBsYXRl
UGF0aCIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShy
ZXZpc2lvbiA0MjgyNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxOCBAQCBlbnVtIHsgCiAgICAgV2ViTWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKICAgICBXZWJNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25MZWZ0VG9SaWdodCwKICAgICBXZWJNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRv
TGVmdCwKKyAgICBXZWJNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHksCisg
ICAgV2ViTWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwKKyAgICBXZWJNZW51SXRlbVRhZ1No
b3dTdWJzdGl0dXRpb25zLAorICAgIFdlYk1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsCisgICAg
V2ViTWVudUl0ZW1UYWdTbWFydFF1b3RlcywKKyAgICBXZWJNZW51SXRlbVRhZ1NtYXJ0RGFzaGVz
LAorICAgIFdlYk1lbnVJdGVtVGFnU21hcnRMaW5rcywKKyAgICBXZWJNZW51SXRlbVRhZ1RleHRS
ZXBsYWNlbWVudCwKKyAgICBXZWJNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUsCisgICAg
V2ViTWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlLAorICAgIFdlYk1lbnVJdGVtVGFnTWFrZUxvd2Vy
Q2FzZSwKKyAgICBXZWJNZW51SXRlbVRhZ0NhcGl0YWxpemUsCiAgICAgV2ViTWVudUl0ZW1UYWdC
YXNlQXBwbGljYXRpb24gPSAxMDAwMAogfTsKIEBjbGFzcyBXZWJHZW9sb2NhdGlvbjsKSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDEzIEBAIHN0YXRpYyBC
T09MIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmwKICNpZm5kZWYgQlVJTERJTkdfT05fVElH
RVIKIHN0YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7CiAjZW5kaWYKKyNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
K3N0YXRpYyBCT09MIGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKK3N0YXRpYyBC
T09MIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworc3RhdGljIEJPT0wgYXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CitzdGF0aWMgQk9PTCBhdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkOworc3RhdGljIEJPT0wgYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZDsKKyNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlld1ByaXZhdGUKIApAQCAtNTM1
LDYgKzU0MiwxMyBAQCBzdGF0aWMgQk9PTCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkOwogI2lmbmRl
ZiBCVUlMRElOR19PTl9USUdFUgogICAgIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkdyYW1tYXJDaGVj
a2luZ0VuYWJsZWRdOwogI2VuZGlmCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgYXV0b21hdGljUXVvdGVTdWJzdGl0
dXRpb25FbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAgIGF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gYm9vbEZvcktleTpXZWJBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07Cisg
ICAgYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkXTsKKyAgICBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKKyAgICBhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktl
eTpXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsKKyNlbmRpZgogICAgIAog
ICAgIHVzZXNQYWdlQ2FjaGUgPSBZRVM7CiAgICAgCkBAIC0zNzQxLDYgKzM3NTUsNDMgQEAgc3Rh
dGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBZRVM7CiAjZW5kaWYKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IodG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246KSkgeworICAgICAgICBC
T09MIGNoZWNrTWFyayA9IFtzZWxmIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
XTsKKyAgICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0
ZW0gY2xhc3NdXSkgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51
SXRlbSAqKWl0ZW07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8g
TlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlFUzsK
KyAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljTGlua0Rl
dGVjdGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tp
bmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0g
Km1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNl
dFN0YXRlOmNoZWNrTWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRv
Z2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246KSkgeworICAgICAgICBCT09MIGNoZWNrTWFy
ayA9IFtzZWxmIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAgICAgICBp
ZiAoWyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7
CisgICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsK
KyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBO
U09mZlN0YXRlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWUVTOworICAgIH0gZWxzZSBp
ZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KSkg
eworICAgICAgICBCT09MIGNoZWNrTWFyayA9IFtzZWxmIGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tpbmRPZkNsYXNz
OltOU01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVt
ID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmNo
ZWNrTWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9t
YXRpY1NwZWxsaW5nQ29ycmVjdGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3Nl
bGYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsKKyAgICAgICAgaWYgKFso
TlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgeworICAg
ICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CisgICAg
ICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZT
dGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlFUzsKKyNlbmRpZgogICAgIH0KICAg
ICBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoVkFMSURBVEUpCiAKQEAgLTQ0OTgsMTAgKzQ1
NDksMTMgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgIGdy
YW1tYXJDaGVja2luZ0VuYWJsZWQgPSBmbGFnOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6Z3JhbW1hckNoZWNraW5nRW5hYmxlZCBmb3JLZXk6V2Vi
R3JhbW1hckNoZWNraW5nRW5hYmxlZF07ICAgIAogICAgIAotICAgIC8vIEZJWE1FIDQ4MTE0NDc6
IHdvcmthcm91bmQgZm9yIGxhY2sgb2YgQVBJCisjaWZuZGVmIEJVSUxESU5HX09OX0xFT1BBUkQK
KyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsK
KyNlbHNlCiAgICAgTlNTcGVsbENoZWNrZXIgKnNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdOwogICAgIGlmIChbc3BlbGxDaGVja2VyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3VwZGF0ZUdyYW1tYXIpXSkKICAgICAgICAgW3NwZWxsQ2hlY2tl
ciBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVHcmFtbWFyKV07CisjZW5kaWYKICAg
ICAKICAgICAvLyBXZSBjYWxsIF9wcmVmbGlnaHRTcGVsbENoZWNrZXIgd2hlbiB0dXJuaW5nIGNv
bnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcgb24sIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoYXQg
aGVyZQogICAgIC8vIGJlY2F1c2UgZ3JhbW1hciBjaGVja2luZyBvbmx5IG9jY3VycyBvbiBjb2Rl
IHBhdGhzIHRoYXQgYWxyZWFkeSBwcmVmbGlnaHQgc3BlbGwgY2hlY2tpbmcgYXBwcm9wcmlhdGVs
eS4KQEAgLTQ1MTksNiArNDU3MywxMjkgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3Iq
IGFlRGVzY0ZybwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3VGV4
dENoZWNraW5nKQorCistIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
Cit7CisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKKyNlbmRpZgorfQorCistIChCT09MKWlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8
fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAg
ICByZXR1cm4gYXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ7CisjZW5kaWYKK30KKworLSAo
Qk9PTClpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkCit7CisjaWYgZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIHJl
dHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkOworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkCit7CisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQ7CisjZW5kaWYKK30KKworLSAoQk9PTClpc0F1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgcmV0dXJuIE5POworI2Vs
c2UKKyAgICByZXR1cm4gYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKKyNlbmRp
ZgorfQorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCisKKy0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkID09IGZsYWcpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvbWF0aWNRdW90ZVN1YnN0
aXR1dGlvbkVuYWJsZWQgPSBmbGFnOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHNldEJvb2w6YXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkIGZvcktl
eTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOyAgICAKKyAgICBbW05TU3Bl
bGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKK30KKworLSAodm9p
ZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCit7CisgICAgW3Nl
bGYgc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF1dOworfQorCistICh2b2lkKXNldEF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkID0gZmxhZzsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBzZXRCb29sOmF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIGZvcktl
eTpXZWJBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVQYW5lbHNdOworfQorCistICh2b2lkKXRv
Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNldEF1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkXV07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVu
YWJsZWQ6KEJPT0wpZmxhZworeworICAgIGlmIChhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQgPSBmbGFnOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6YXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQgZm9yS2V5Oldl
YkF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkXTsgICAgCisgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9CisKKy0gKHZvaWQpdG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWRdXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RW5hYmxlZCA9IGZsYWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkIGZvcktl
eTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsgICAgCisgICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9CisKKy0gKHZvaWQp
dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBz
ZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOiFbc2VsZiBpc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWRdXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCA9IGZsYWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsgICAg
CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107
Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5k
ZXIKK3sKKyAgICBbc2VsZiBzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOiFb
c2VsZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdXTsKK30KKworI2VuZGlm
CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdVbmRvYWJsZUVkaXRp
bmcpCiAKIC0gKHZvaWQpcmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlOihET01Ob2RlICopbm9kZQpJ
bmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDQyODI1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
NCw2ICs0NjQsMjkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBGSVhN
RTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1lcmdlZCBpbnRvIFdlYklCQWN0aW9ucyB3aGVuIHdl
J3JlIG5vdCBpbiBBUEkgZnJlZXplCiAtICh2b2lkKXRvZ2dsZUdyYW1tYXJDaGVja2luZzooaWQp
c2VuZGVyOwogI2VuZGlmCisKK0BlbmQKKworQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4
dENoZWNraW5nKQorCistIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
OworLSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOworLSAoQk9PTClpc0F1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOworLSAoQk9PTClpc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWQ7CistIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZDsKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKKy0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uOihpZClzZW5kZXI7CistICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
OihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KGlkKXNl
bmRlcjsKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wp
ZmxhZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVy
OworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOihCT09MKWZsYWc7
CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2VuZGVyOworLSAo
dm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7Cist
ICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyOworI2Vu
ZGlmCisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0luTWFpbCkK
</data>
<flag name="review"
          id="14883"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29761</attachid>
            <date>2009-04-24 13:50:16 -0700</date>
            <delta_ts>2009-04-24 18:47:27 -0700</delta_ts>
            <desc>new patch to improve conformance to style guidelines</desc>
            <filename>textchecking.0424.1.patch</filename>
            <type>text/plain</type>
            <size>87365</size>
            <attacher name="Douglas Davidson">ddavidso</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjQgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBlZGl0aW5nIG1lY2hhbmlzbXMg
YW5kIGFkZCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxlbWVudCB0ZXh0IGNoZWNraW5nCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9FZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tOgorCiAyMDA5LTA0
LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIFJvYmVuLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDQyODI1KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFu
ZC5oIgorI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC0xMTIyLDYgKzExMjMsMTEwIEBAIGludCBFZGl0b3I6
OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKICAgICByZXR1cm4gY2xpZW50KCkgPyBjbGllbnQo
KS0+c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSA6IDA7CiB9CiAKKyNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorCit2b2lkIEVkaXRvcjo6dXBwZXJjYXNlV29yZCgpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+dXBwZXJjYXNlV29yZCgpOworfQorCit2b2lkIEVkaXRv
cjo6bG93ZXJjYXNlV29yZCgpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQo
KS0+bG93ZXJjYXNlV29yZCgpOworfQorCit2b2lkIEVkaXRvcjo6Y2FwaXRhbGl6ZVdvcmQoKQor
eworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPmNhcGl0YWxpemVXb3JkKCk7
Cit9CisKK3ZvaWQgRWRpdG9yOjpzaG93U3Vic3RpdHV0aW9uc1BhbmVsKCkKK3sKKyAgICBpZiAo
IWNsaWVudCgpKSB7CisgICAgICAgIExPR19FUlJPUigiTm8gTlNTcGVsbENoZWNrZXIiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjbGllbnQoKS0+c3Vic3RpdHV0aW9uc1Bh
bmVsSXNTaG93aW5nKCkpIHsKKyAgICAgICAgY2xpZW50KCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNsaWVudCgpLT5zaG93U3Vi
c3RpdHV0aW9uc1BhbmVsKHRydWUpOworfQorCitib29sIEVkaXRvcjo6c3Vic3RpdHV0aW9uc1Bh
bmVsSXNTaG93aW5nKCkKK3sKKyAgICBpZiAoIWNsaWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGNsaWVudCgpLT5zdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKTsK
K30KKwordm9pZCBFZGl0b3I6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkKK3sKKyAgICBpZiAo
Y2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
fQorCitib29sIEVkaXRvcjo6aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQor
eworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0
aXR1dGlvbkVuYWJsZWQoKTsKK30KKwordm9pZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uKCkKK3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT50
b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOworfQorCitib29sIEVkaXRvcjo6aXNB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGNsaWVudCgpICYm
IGNsaWVudCgpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7Cit9CisKK3ZvaWQg
RWRpdG9yOjp0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkKK3sKKyAgICBpZiAoY2xpZW50
KCkpCisgICAgICAgIGNsaWVudCgpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7Cit9
CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKK3sK
KyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKTsKK30KKwordm9pZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb24oKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKK30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKK30KKwordm9pZCBF
ZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7
Cit9CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQo
KQoreworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yOjp0b2dnbGVBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb24oKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50
KCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOworfQorCisjZW5kaWYKKwog
Ym9vbCBFZGl0b3I6OnNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqIHJhbmdlKQogewogICAgIHJldHVy
biBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkRW5kRWRpdGluZyhyYW5nZSk7CkBAIC0xNTky
LDE3ICsxNjk3LDE4IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEcK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7Ci0gICAgICAgICAgICAgICAgY2xpZW50LT5jaGVja1NwZWxsaW5nQW5kR3JhbW1hck9m
UGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5s
ZW5ndGgoKSwgY2hlY2tHcmFtbWFyLCByZXN1bHRzKTsKKyAgICAgICAgICAgICAgICB1aW50NjRf
dCBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsK
KyAgICAgICAgICAgICAgICBjbGllbnQtPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0
cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBl
cywgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+cmVzdWx0VHlwZSA9PSAxICYmIHJlc3VsdC0+bG9j
YXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQt
Pmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRp
b24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxl
bmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1
YnN0cmluZyhyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgIT0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChj
aGVja0dyYW1tYXIgJiYgcmVzdWx0LT5yZXN1bHRUeXBlID09IDIgJiYgcmVzdWx0LT5sb2NhdGlv
biA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3Ro
ID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2hlY2tHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAm
JiByZXN1bHQtPmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9u
ICsgcmVzdWx0LT5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+
PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHN0b3AgYWZ0ZXIgdGhl
IGZpcnN0IGdyYW1tYXIgcmVzdWx0LCBzaW5jZSB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHNwZWxs
aW5nIHJlc3VsdCBhZnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgYmVnaW5zIGJ1
dCBiZWZvcmUgdGhlIGZpcnN0IGRldGFpbCBpbiBpdCwgYnV0IHdlIGNhbiBzdG9wIGlmIHdlIGZp
bmQgYSBzZWNvbmQgZ3JhbW1hciByZXN1bHQuCkBAIC0xOTYxLDExICsyMDY3LDEyIEBAIHN0YXRp
YyBWZWN0b3I8U3RyaW5nPiBndWVzc2VzRm9yTWlzc3BlbGwKICAgICAgICAgcmV0dXJuIGd1ZXNz
ZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIGNsaWVu
dC0+Y2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hh
cmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNrR3JhbW1hciwgcmVzdWx0
cyk7CisgICAgdWludDY0X3QgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmc7CisgICAgY2xpZW50LT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3Jh
cGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5n
VHlwZXMsIHJlc3VsdHMpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1
bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVz
dWx0ID0gJnJlc3VsdHNbaV07Ci0gICAgICAgIGlmIChyZXN1bHQtPnJlc3VsdFR5cGUgPT0gMSAm
JiByZXN1bHQtPmxvY2F0aW9uID09IHJhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sZW5ndGgg
PT0gcmFuZ2VMZW5ndGgpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlvbiA9PSByYW5nZVN0YXJ0T2Zmc2V0ICYm
IHJlc3VsdC0+bGVuZ3RoID09IHJhbmdlTGVuZ3RoKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWlz
c3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJhbmdlU3RhcnRPZmZzZXQs
IHJhbmdlTGVuZ3RoKTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgo
KSAhPSAwKTsKICAgICAgICAgICAgIGNsaWVudC0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxl
ZFdvcmQsIGd1ZXNzZXMpOwpAQCAtMTk4MCw3ICsyMDg3LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJp
bmc+IGd1ZXNzZXNGb3JNaXNzcGVsbAogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdS
ZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRU
eXBlID09IDIgJiYgcmVzdWx0LT5sb2NhdGlvbiA8PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIHJlc3Vs
dC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+PSByYW5nZVN0YXJ0T2Zmc2V0ICsgcmFuZ2VM
ZW5ndGgpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hciAmJiByZXN1bHQtPmxvY2F0aW9uIDw9IHJhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5s
b2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID49IHJhbmdlU3RhcnRPZmZzZXQgKyByYW5nZUxlbmd0
aCkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWls
cy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRl
dGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFp
bC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwpAQCAtMjA0NywzMSArMjE1
NCw2IEBAIGJvb2wgRWRpdG9yOjpzcGVsbGluZ1BhbmVsSXNTaG93aW5nKCkKICAgICByZXR1cm4g
Y2xpZW50KCktPnNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKIH0KIAotdm9pZCBFZGl0b3I6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZw
KQotewotICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgVmlzaWJsZVNl
bGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChwLCBM
ZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZChwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkp
KTsKLSAgICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpIHsKLSAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3RlZFNlbnRlbmNlID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2Vu
dGVuY2UocCksIGVuZE9mU2VudGVuY2UocCkpOwotICAgICAgICBtYXJrTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hcihhZGphY2VudFdvcmRzLCB0cnVlLCBzZWxlY3RlZFNlbnRlbmNlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihhZGphY2VudFdv
cmRzLCBmYWxzZSwgYWRqYWNlbnRXb3Jkcyk7Ci0gICAgfQotI2Vsc2UKLSAgICAvLyBDaGVjayBz
cGVsbGluZyBvZiBvbmUgd29yZAotICAgIG1hcmtNaXNzcGVsbGluZ3MoVmlzaWJsZVNlbGVjdGlv
bihzdGFydE9mV29yZChwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZChwLCBSaWdo
dFdvcmRJZk9uQm91bmRhcnkpKSk7Ci0gICAgCi0gICAgaWYgKCFpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENoZWNrIGdyYW1tYXIgb2Yg
ZW50aXJlIHNlbnRlbmNlCi0gICAgbWFya0JhZEdyYW1tYXIoVmlzaWJsZVNlbGVjdGlvbihzdGFy
dE9mU2VudGVuY2UocCksIGVuZE9mU2VudGVuY2UocCkpKTsKLSNlbmRpZgotfQotCiBzdGF0aWMg
dm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzSW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFu
Z2UqIHNlYXJjaFJhbmdlKQogewogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2Yg
ZmluZEZpcnN0TWlzc3BlbGxpbmdJblJhbmdlLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQg
dGhlICJvdXQgcGFyYW1ldGVyIjsKQEAgLTIxNDIsMTEgKzIyMjQsMTEgQEAgdm9pZCBFZGl0b3I6
Om1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
IAotc3RhdGljIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhF
ZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UgKnNwZWxsaW5nUmFuZ2UsIGJvb2wgbWFya0dyYW1t
YXIsIFJhbmdlICpncmFtbWFyUmFuZ2UpCit2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhSYW5nZSogc3BlbGxpbmdSYW5nZSwgYm9vbCBtYXJrR3Jh
bW1hciwgUmFuZ2UqIGdyYW1tYXJSYW5nZSwgYm9vbCBwZXJmb3JtVGV4dENoZWNraW5nKQogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggc2VsZWN0aW9ucyBhbHJlYWR5IGV4
cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIGlm
ICghY2xpZW50IHx8ICFzcGVsbGluZ1JhbmdlIHx8IChtYXJrR3JhbW1hciAmJiAhZ3JhbW1hclJh
bmdlKSkKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpZiAoIWNsaWVudCgpIHx8ICFz
cGVsbGluZ1JhbmdlIHx8IChtYXJrR3JhbW1hciAmJiAhZ3JhbW1hclJhbmdlKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBhbiBlZGl0YWJsZSBub2RlLCBi
YWlsLgpAQCAtMjE1OSw0MCArMjI0MSwxMjEgQEAgc3RhdGljIHZvaWQgbWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYQogICAgIGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gMDsKICAgICBp
bnQgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQgPSAwOwogICAgIGludCBncmFtbWFyUmFuZ2VFbmRP
ZmZzZXQgPSAwOworICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKKyAgICBpbnQg
cGFyYWdyYXBoTGVuZ3RoID0gMDsKKyAgICBpbnQgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKKyAgICBi
b29sIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIHJlc3RvcmVTZWxlY3Rpb25B
ZnRlckNoYW5nZSA9IGZhbHNlOworICAgIGJvb2wgYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBo
Qm91bmRhcmllcyA9IGZhbHNlOwogICAgIFN0cmluZyBwYXJhZ3JhcGhTdHJpbmc7CisgICAgUmVm
UHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZTsKICAgICAKICAgICBpZiAobWFya0dyYW1tYXIpIHsK
ICAgICAgICAgLy8gVGhlIHNwZWxsaW5nIHJhbmdlIHNob3VsZCBiZSBjb250YWluZWQgaW4gdGhl
IHBhcmFncmFwaC1hbGlnbmVkIGV4dGVuc2lvbiBvZiB0aGUgZ3JhbW1hciByYW5nZS4KLSAgICAg
ICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5nZUZv
clJhbmdlKGdyYW1tYXJSYW5nZSwgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0
cmluZyk7CisgICAgICAgIHBhcmFncmFwaFJhbmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9y
UmFuZ2UoZ3JhbW1hclJhbmdlLCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCwgcGFyYWdyYXBoU3Ry
aW5nKTsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBvZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0
ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLCBwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBzcGVsbGluZ1JhbmdlLT5zdGFydFBvc2l0aW9uKCkp
OwogICAgICAgICBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKG9mZnNldEFzUmFuZ2UuZ2V0KCkpOwogICAgICAgICBncmFtbWFyUmFuZ2VFbmRPZmZz
ZXQgPSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
Z3JhbW1hclJhbmdlKTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaFJhbmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9yUmFuZ2Uoc3BlbGxpbmdSYW5nZSwg
c3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOworICAgICAgICBwYXJh
Z3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5nZUZvclJhbmdlKHNwZWxsaW5nUmFuZ2Us
IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCwgcGFyYWdyYXBoU3RyaW5nKTsKICAgICB9CiAgICAg
c3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCArIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3BlbGxpbmdSYW5nZSk7Ci0gICAgaWYgKHBhcmFncmFwaFN0
cmluZy5sZW5ndGgoKSA9PSAwIHx8IChzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgPj0gc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCAmJiAoIW1hcmtHcmFtbWFyIHx8IGdyYW1tYXJSYW5nZVN0YXJ0T2Zm
c2V0ID49IGdyYW1tYXJSYW5nZUVuZE9mZnNldCkpKQorICAgIHBhcmFncmFwaExlbmd0aCA9IHBh
cmFncmFwaFN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAocGFyYWdyYXBoTGVuZ3RoIDw9IDAgfHwg
KHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA+PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICgh
bWFya0dyYW1tYXIgfHwgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQgPj0gZ3JhbW1hclJhbmdlRW5k
T2Zmc2V0KSkpCiAgICAgICAgIHJldHVybjsKICAgICAKKyAgICBpZiAocGVyZm9ybVRleHRDaGVj
a2luZykgeworICAgICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvblR5cGUo
KSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbikgeworICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBvZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIG9m
ZnNldEFzUmFuZ2UtPnNldEVuZChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkuY29udGFpbmVy
Tm9kZSgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkuY29tcHV0ZU9mZnNldEluQ29udGFp
bmVyTm9kZSgpLCBlYyk7CisgICAgICAgICAgICBpZiAoIWVjKSB7CisgICAgICAgICAgICAgICAg
c2VsZWN0aW9uT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChvZmZzZXRBc1Jhbmdl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSB0
cnVlOyAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFw
aEJvdW5kYXJpZXMgPSAoc2VsZWN0aW9uT2Zmc2V0ID49IHBhcmFncmFwaExlbmd0aCkgPyB0cnVl
IDogZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBjbGllbnQtPmNoZWNrU3BlbGxp
bmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFy
YWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBtYXJrR3JhbW1hciwgcmVzdWx0cyk7CisgICAgdWludDY0
X3QgY2hlY2tpbmdUeXBlcyA9IG1hcmtHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsK
KyAgICBpZiAocGVyZm9ybVRleHRDaGVja2luZykgeworICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRp
b25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5
cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZURhc2g7Cisg
ICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICAgICAg
ICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgICAg
ICBpZiAoaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIH0KKyAg
ICBjbGllbnQoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3Rl
cnMoKSwgcGFyYWdyYXBoTGVuZ3RoLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKKyAgICAKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewog
ICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwot
ICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRUeXBlID09IDEgJiYgcmVzdWx0LT5sb2NhdGlvbiA+
PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+
bGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQpIHsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
c3BlbGxpbmdSYW5nZSwgcmVzdWx0LT5sb2NhdGlvbiAtIHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNl
dCwgcmVzdWx0LT5sZW5ndGgpOworICAgICAgICBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1bHQt
PmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgaW50IHJlc3VsdExl
bmd0aCA9IHJlc3VsdC0+bGVuZ3RoOworICAgICAgICBpZiAocmVzdWx0LT50eXBlID09IFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBzcGVsbGluZ1JhbmdlU3Rh
cnRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5n
ZUVuZE9mZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVz
dWx0TG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5n
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNwZWxsaW5nUmFuZ2UsIHJlc3VsdExvY2F0
aW9uIC0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCByZXN1bHRMZW5ndGgpOwogICAgICAgICAg
ICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT5hZGRN
YXJrZXIobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsK
LSAgICAgICAgfSBlbHNlIGlmIChtYXJrR3JhbW1hciAmJiByZXN1bHQtPnJlc3VsdFR5cGUgPT0g
MiAmJiByZXN1bHQtPmxvY2F0aW9uIDwgZ3JhbW1hclJhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdC0+
bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0KSB7Ci0g
ICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9jYXRpb24g
Pj0gMCk7CisgICAgICAgIH0gZWxzZSBpZiAobWFya0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdExvY2F0aW9uIDwgZ3JhbW1hclJhbmdl
RW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID4gZ3JhbW1hclJhbmdl
U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJl
c3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgIGNvbnN0IEdy
YW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRldGFpbHNbal07CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+
PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5s
b2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGdyYW1tYXJSYW5nZUVuZE9mZnNldCkgewotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoZ3JhbW1hclJhbmdlLCByZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5s
b2NhdGlvbiAtIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0LCBkZXRhaWwtPmxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFt
bWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24g
KyBkZXRhaWwtPmxlbmd0aCA8PSBncmFtbWFyUmFuZ2VFbmRPZmZzZXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJhbmdlPiBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKGdyYW1tYXJSYW5nZSwgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uIC0g
Z3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIGRldGFpbC0+bGVuZ3RoKTsKICAgICAgICAgICAgICAg
ICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPmFkZE1h
cmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRh
aWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKHBlcmZvcm1UZXh0Q2hlY2tpbmcgJiYgcmVzdWx0TG9jYXRpb24g
KyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlv
biArIHJlc3VsdExlbmd0aCA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYKKyAgICAgICAg
ICAgICAgICAgICAgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluaworICAgICAg
ICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3RlCisg
ICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlRGFz
aAorICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5n
dGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOworICAgICAgICAgICAgaW50IHJlcGxhY2Vt
ZW50TGVuZ3RoID0gcmVzdWx0LT5yZXBsYWNlbWVudC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGJv
b2wgZG9SZXBsYWNlbWVudCA9IChyZXBsYWNlbWVudExlbmd0aCA+IDApOworICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShw
YXJhZ3JhcGhSYW5nZS5nZXQoKSwgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CisgICAg
ICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHJlcGxhY2VtZW50U2VsZWN0aW9uKHJlcGxhY2VtZW50
UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgaWYgKGRvUmVwbGFjZW1lbnQg
JiYgcmVwbGFjZW1lbnRTZWxlY3Rpb24gIT0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlv
bihyZXBsYWNlbWVudFNlbGVjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihyZXBsYWNlbWVudFNlbGVjdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9SZXBsYWNlbWVu
dCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUxpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkVkaXRSaWNobHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChDcmVhdGVMaW5rQ29tbWFuZDo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIHJlc3VsdC0+cmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAmJiBzaG91bGRJbnNlcnRUZXh0KHJlc3VsdC0+cmVw
bGFjZW1lbnQsIHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVzdWx0
LT5yZXBsYWNlbWVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCArPSByZXBsYWNlbWVudExlbmd0aCAtIHJlc3VsdExlbmd0aDsKKyAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCArPSByZXBsYWNlbWVudExl
bmd0aCAtIHJlc3VsdExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0
aW9uIDwgc2VsZWN0aW9uT2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9u
T2Zmc2V0ICs9IHJlcGxhY2VtZW50TGVuZ3RoIC0gcmVzdWx0TGVuZ3RoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoc2Vs
ZWN0aW9uQ2hhbmdlZCkgeworICAgICAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2UuZ2V0KCksIGVu
ZE9mUGFyYWdyYXBoKHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpKSk7CisgICAgICAgIGludCBuZXdMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHBhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rp
b25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQg
PD0gbmV3TGVuZ3RoKSB7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgMCwgc2VsZWN0
aW9uT2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8oc2Vs
ZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgaWYg
KGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCisgICAgICAgICAgICAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTIyMDQsNyArMjM2Nyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW0KICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIGlmICghaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoY2xpZW50KCksIHNwZWxsaW5nU2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwor
ICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoc3BlbGxpbmdTZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgbWFya0dyYW1tYXIgJiYgaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSwgZmFsc2UpOwogI2Vsc2UKICAgICBtYXJrTWlzc3BlbGxpbmdzKHNwZWxsaW5nU2VsZWN0
aW9uKTsKICAgICBpZiAobWFya0dyYW1tYXIpCkBAIC0yMjEyLDYgKzIzNzUsMzEgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogI2VuZGlmCiB9CiAKK3ZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiAmcCkKK3sKKyAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAg
IFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRP
ZldvcmQocCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRXb3JkSWZP
bkJvdW5kYXJ5KSk7CisgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKSB7CisgICAg
ICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24o
c3RhcnRPZlNlbnRlbmNlKHApLCBlbmRPZlNlbnRlbmNlKHApKTsKKyAgICAgICAgbWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhhZGphY2VudFdvcmRzLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIHRydWUsIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSwgdHJ1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGZhbHNlLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHRy
dWUpOworICAgIH0KKyNlbHNlCisgICAgLy8gQ2hlY2sgc3BlbGxpbmcgb2Ygb25lIHdvcmQKKyAg
ICBtYXJrTWlzc3BlbGxpbmdzKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQocCwgTGVmdFdv
cmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSkpOwor
ICAgIAorICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICAvLyBDaGVjayBncmFtbWFyIG9mIGVudGlyZSBzZW50ZW5jZQorICAgIG1h
cmtCYWRHcmFtbWFyKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHApLCBlbmRPZlNl
bnRlbmNlKHApKSk7CisjZW5kaWYKK30KKwogUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5n
ZUZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudEF0UG9pbnQod2luZG93UG9pbnQpOwpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsMjUgQEAgcHVibGljOgogICAgIHZvaWQgbWFya01p
c3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrQmFkR3Jh
bW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwg
Ym9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlv
bik7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsK
KyAgICB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKKyAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCk7Cisg
ICAgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CisgICAgYm9vbCBzdWJzdGl0dXRpb25z
UGFuZWxJc1Nob3dpbmcoKTsKKyAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7Cisg
ICAgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIHZvaWQg
dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKKyAgICBib29sIGlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRl
Y3Rpb24oKTsKKyAgICBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsK
KyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBib29sIGlz
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOworICAgIHZvaWQgdG9nZ2xlQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50KCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bigpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhS
YW5nZSogc3BlbGxpbmdSYW5nZSwgYm9vbCBtYXJrR3JhbW1hciwgUmFuZ2UqIGdyYW1tYXJSYW5n
ZSwgYm9vbCBwZXJmb3JtVGV4dENoZWNraW5nKTsKKyNlbmRpZgogICAgIHZvaWQgYWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAgICAg
dm9pZCBzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBzcGVsbGluZ1BhbmVsSXNT
aG93aW5nKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lvbiA0Mjgy
NSkKKysrIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk5LDggKzI5OSw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGUKIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoKQogewot
ICAgIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZygpOwogICAgIGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBtYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmcoKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyAmdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDEyICszNDEsMzAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgTlNBcnJheSogcGFzdGVib2FyZFR5cGVzRm9yU2VsZWN0aW9uKEZyYW1lKikgeyByZXR1cm4g
MDsgfQogI2VuZGlmCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIHZpcnR1
YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvd2VyY2FzZVdv
cmQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25F
bmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudEVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgeyB9
CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25z
dCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQsIGludCosIGludCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiwgaW50
KikgeyB9CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tT
cGVsbGluZ0FuZEdyYW1tYXJPZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgYm9vbCwgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29y
ZChjb25zdCBTdHJpbmcmKSB7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDM4IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+c2hvd0NvbG9yUGFuZWwoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCisjaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBw
ZXJDYXNlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51cHBlcmNhc2VXb3JkKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93
ZXJDYXNlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5sb3dlcmNhc2VXb3JkKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFs
aXplOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jYXBpdGFsaXplV29yZCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0
aXR1dGlvbnM6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25z
UGFuZWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0Q29weVBhc3RlOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVT
bWFydEluc2VydERlbGV0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKKyAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5r
czoKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnVGV4dFJlcGxhY2VtZW50OgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bigpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudDoKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmluc3BlY3QocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50
LmgJKHJldmlzaW9uIDQyODI1KQorKysgV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTQgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWwgewogICAg
IFN0cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCitlbnVtIFRleHRDaGVja2luZ1R5cGUgeyBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPSAxIDw8IDEsIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
ID0gMSA8PCAyLCBUZXh0Q2hlY2tpbmdUeXBlTGluayA9IDEgPDwgNSwgVGV4dENoZWNraW5nVHlw
ZVF1b3RlID0gMSA8PCA2LCBUZXh0Q2hlY2tpbmdUeXBlRGFzaCA9IDEgPDwgNywgVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LCBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9
IDEgPDwgOSB9OworCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKLSAgICBpbnQgcmVzdWx0
VHlwZTsgLy8gMSBmb3Igc3BlbGxpbmcsIDIgZm9yIGdyYW1tYXIKKyAgICBUZXh0Q2hlY2tpbmdU
eXBlIHR5cGU7CiAgICAgaW50IGxvY2F0aW9uOwogICAgIGludCBsZW5ndGg7CiAgICAgVmVjdG9y
PEdyYW1tYXJEZXRhaWw+IGRldGFpbHM7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50OwogfTsKICAK
IGNsYXNzIEVkaXRvckNsaWVudCB7CkBAIC0xMzMsMTIgKzEzNiwzMSBAQCBwdWJsaWM6CiAjZW5k
aWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICB2aXJ0dWFsIHZvaWQg
dXBwZXJjYXNlV29yZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG93ZXJjYXNlV29yZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgPSAwOworI2VuZGlmCisKICAg
ICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5n
dGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQot
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nQW5kR3JhbW1hck9mUGFyYWdyYXBoKGNvbnN0
IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBib29sIGNoZWNrR3JhbW1hciwgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNr
aW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CiAjZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNv
bnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYp
ID0gMDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaAkocmV2aXNpb24g
NDI4MjUpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw2ICs4MywxOCBAQAogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdEZWZhdWx0RGlyZWN0aW9uOwogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodDsKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ7Cist
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2Fs
bHk7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51Owor
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczooYm9vbClz
aG93OworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZTsKKy0g
KE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM7CistIChOU1N0cmluZyAq
KWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVu
dUl0ZW1UYWdTbWFydExpbmtzOworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdUZXh0
UmVwbGFjZW1lbnQ7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0
aW9uc01lbnU7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2U7
CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U7CistIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemU7CiAtIChOU1N0cmluZyAqKWNvbnRl
eHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OwogCiAtIChOU1N0cmluZyAqKXNlYXJjaE1lbnVO
b1JlY2VudFNlYXJjaGVzVGV4dDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCShyZXZp
c2lvbiA0MjgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsMTEgKzExMiwyMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRT
cGVsbGluZ0FuZEdyCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGls
ZVR5cGluZygpKTsKICAgICBDb250ZXh0TWVudUl0ZW0gZ3JhbW1hcldpdGhTcGVsbGluZyhDaGVj
a2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxp
bmcsIAogICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmco
KSk7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBDb250ZXh0TWVudUl0ZW0gY29ycmVj
dFNwZWxsaW5nKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RT
cGVsbGluZ0F1dG9tYXRpY2FsbHksIAorICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0
U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkpOworI2VuZGlmCiAKICAgICBzcGVsbGluZ0FuZEdyYW1t
YXJNZW51LmFwcGVuZEl0ZW0oc2hvd1NwZWxsaW5nUGFuZWwpOwogICAgIHNwZWxsaW5nQW5kR3Jh
bW1hck1lbnUuYXBwZW5kSXRlbShjaGVja1NwZWxsaW5nKTsKKyNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRl
bSgpKTsKKyNlbmRpZgogICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbShjaGVj
a0FzWW91VHlwZSk7CiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGdyYW1t
YXJXaXRoU3BlbGxpbmcpOworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgc3BlbGxpbmdB
bmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGNvcnJlY3RTcGVsbGluZyk7CisjZW5kaWYKIAogICAg
IHNwZWxsaW5nQW5kR3JhbW1hck1lbnVJdGVtLnNldFN1Yk1lbnUoJnNwZWxsaW5nQW5kR3JhbW1h
ck1lbnUpOwogfQpAQCAtMTg5LDYgKzE5OSw0NSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBl
bmRUZXh0RGlyZWN0aW9uCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCitz
dGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRTdWJzdGl0dXRpb25zU3ViTWVudShjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIENvbnRleHRNZW51SXRlbSYgc3Vic3RpdHV0aW9uc01lbnVJdGVt
KQoreworICAgIENvbnRleHRNZW51IHN1YnN0aXR1dGlvbnNNZW51KHJlc3VsdCk7CisKKyAgICBD
b250ZXh0TWVudUl0ZW0gc2hvd1N1YnN0aXR1dGlvbnMoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMsIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRp
b25zKHRydWUpKTsKKyAgICBDb250ZXh0TWVudUl0ZW0gc21hcnRDb3B5UGFzdGUoQ2hlY2thYmxl
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsIGNvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkpOworICAgIENvbnRleHRNZW51SXRlbSBzbWFydFF1b3Rl
cyhDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcywgY29u
dGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKSk7CisgICAgQ29udGV4dE1lbnVJdGVtIHNtYXJ0
RGFzaGVzKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVz
LCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpKTsKKyAgICBDb250ZXh0TWVudUl0ZW0g
c21hcnRMaW5rcyhDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExp
bmtzLCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCkpOworICAgIENvbnRleHRNZW51SXRl
bSB0ZXh0UmVwbGFjZW1lbnQoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFn
VGV4dFJlcGxhY2VtZW50LCBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQoKSk7CisK
KyAgICBzdWJzdGl0dXRpb25zTWVudS5hcHBlbmRJdGVtKHNob3dTdWJzdGl0dXRpb25zKTsKKyAg
ICBzdWJzdGl0dXRpb25zTWVudS5hcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOworICAgIHN1
YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0ZW0oc21hcnRDb3B5UGFzdGUpOworICAgIHN1YnN0aXR1
dGlvbnNNZW51LmFwcGVuZEl0ZW0oc21hcnRRdW90ZXMpOworICAgIHN1YnN0aXR1dGlvbnNNZW51
LmFwcGVuZEl0ZW0oc21hcnREYXNoZXMpOworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0
ZW0oc21hcnRMaW5rcyk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbSh0ZXh0UmVw
bGFjZW1lbnQpOworCisgICAgc3Vic3RpdHV0aW9uc01lbnVJdGVtLnNldFN1Yk1lbnUoJnN1YnN0
aXR1dGlvbnNNZW51KTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlQW5kQXBwZW5kVHJhbnNmb3Jt
YXRpb25zU3ViTWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIENvbnRleHRNZW51SXRl
bSYgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0pCit7CisgICAgQ29udGV4dE1lbnUgdHJhbnNmb3Jt
YXRpb25zTWVudShyZXN1bHQpOworCisgICAgQ29udGV4dE1lbnVJdGVtIG1ha2VVcHBlckNhc2Uo
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSwgY29udGV4dE1lbnVJ
dGVtVGFnTWFrZVVwcGVyQ2FzZSgpKTsKKyAgICBDb250ZXh0TWVudUl0ZW0gbWFrZUxvd2VyQ2Fz
ZShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlLCBjb250ZXh0TWVu
dUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkpOworICAgIENvbnRleHRNZW51SXRlbSBjYXBpdGFsaXpl
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUsIGNvbnRleHRNZW51SXRl
bVRhZ0NhcGl0YWxpemUoKSk7CisKKyAgICB0cmFuc2Zvcm1hdGlvbnNNZW51LmFwcGVuZEl0ZW0o
bWFrZVVwcGVyQ2FzZSk7CisgICAgdHJhbnNmb3JtYXRpb25zTWVudS5hcHBlbmRJdGVtKG1ha2VM
b3dlckNhc2UpOworICAgIHRyYW5zZm9ybWF0aW9uc01lbnUuYXBwZW5kSXRlbShjYXBpdGFsaXpl
KTsKKworICAgIHRyYW5zZm9ybWF0aW9uc01lbnVJdGVtLnNldFN1Yk1lbnUoJnRyYW5zZm9ybWF0
aW9uc01lbnUpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9z
c2libGVXb3JkKEZyYW1lKiBmcmFtZSkKIHsKICAgICAvLyBDdXJyZW50IGFsZ29yaXRobTogbG9v
ayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgpAQCAtNDA3LDYg
KzQ1NiwxNiBAQCB2b2lkIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBjcmVh
dGVBbmRBcHBlbmRTcGVsbGluZ1N1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBTcGVsbGluZ01lbnVJ
dGVtKTsKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3BlbGxpbmdNZW51SXRlbSk7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIHN1
YnN0aXR1dGlvbnNNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU3Vic3Rp
dHV0aW9uc01lbnUsIAorICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1
dGlvbnNNZW51KCkpOworICAgICAgICAgICAgY3JlYXRlQW5kQXBwZW5kU3Vic3RpdHV0aW9uc1N1
Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBzdWJzdGl0dXRpb25zTWVudUl0ZW0pOworICAgICAgICAg
ICAgYXBwZW5kSXRlbShzdWJzdGl0dXRpb25zTWVudUl0ZW0pOworICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtIHRyYW5zZm9ybWF0aW9uc01lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51LCAKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVu
dUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkpOworICAgICAgICAgICAgY3JlYXRlQW5kQXBw
ZW5kVHJhbnNmb3JtYXRpb25zU3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIHRyYW5zZm9ybWF0aW9u
c01lbnVJdGVtKTsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW0odHJhbnNmb3JtYXRpb25zTWVudUl0
ZW0pOworI2VuZGlmCiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gIEZvbnRNZW51SXRlbShT
dWJtZW51VHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUsIAogICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkpOwogICAgICAgICAgICAgY3JlYXRlQW5kQXBw
ZW5kRm9udFN1Yk1lbnUobV9oaXRUZXN0UmVzdWx0LCBGb250TWVudUl0ZW0pOwpAQCAtNTg0LDYg
KzY0Myw1MyBAQCB2b2lkIENvbnRleHRNZW51OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoCiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOgogICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CisgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRp
b25zOgorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVs
SXNTaG93aW5nKCkpCisgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhmYWxzZSkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlv
bnModHJ1ZSkpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdNYWtlVXBwZXJDYXNlOgorICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VM
b3dlckNhc2U6CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZToKKyAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseToKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0g
ZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsK
KyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU21hcnRDb3B5UGFzdGU6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZy
YW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisjZW5kaWYKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVz
OgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisjZW5kaWYKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOgorI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rczoKKyNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkKCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNl
bWVudEVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICNpZiBQ
TEFURk9STShHVEspCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgogICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmxvYWRlcigpLT5jYW5Hb0JhY2tPckZvcndh
cmQoLTEpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiA0Mjgy
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKICAgICAgICAgQ29udGV4dE1lbnVJdGVt
VGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdU
ZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQsCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBDb250
ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5LAorICAgICAgICBDb250
ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwKKyAgICAgICAgQ29udGV4dE1lbnVJdGVt
VGFnU2hvd1N1YnN0aXR1dGlvbnMsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29w
eVBhc3RlLAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcywKKyAgICAgICAg
Q29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRh
Z1NtYXJ0TGlua3MsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCwK
KyAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSwKKyAgICAgICAg
Q29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSwKKyAgICAgICAgQ29udGV4dE1lbnVJdGVt
VGFnTWFrZUxvd2VyQ2FzZSwKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSwK
KyNlbmRpZgogICAgICAgICBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcgPSAxMDAw
MAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lv
biA0MjgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw2ICs4OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU3RhcnRTcGVha2luZygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmcoKTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRp
b25zTWVudSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9u
cyhib29sIHNob3cpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOworICAgIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOworICAgIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Rl
eHRSZXBsYWNlbWVudCgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1h
dGlvbnNNZW51KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2Uo
KTsKKyAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOworICAgIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CiAjZW5kaWYKICAgICBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCShyZXZpc2lvbiA0MjgyNSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQzMyw2ICs0MzMsMTAyIEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVm
dCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5
XSBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5XTsKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51XTsKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25z
OnNob3ddOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKQorewor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGVd
OworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKQoreworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkg
c2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXNdOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9y
eV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU21hcnRMaW5rcygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwor
ICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydExpbmtzXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBs
YWNlbWVudCgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdU
ZXh0UmVwbGFjZW1lbnRdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRp
b25zTWVudSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdU
cmFuc2Zvcm1hdGlvbnNNZW51XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2UoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4g
W1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnTWFr
ZVVwcGVyQ2FzZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29y
ZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNh
c2VdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpCit7CisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9y
eSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplXTsKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA0LTI0ICBEb3VnbGFzIFIuIERhdmlk
c29uICA8ZGRhdmlkc29AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2NhbGl6YWJsZSBzdHJp
bmdzIGZvciAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3MjQxMDY+IFdlYlZpZXdzIG5lZWQg
dG8gaW1wbGVtZW50IHRleHQgY2hlY2tpbmcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoK
KwogMjAwOS0wNC0yMyAgS2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5nbGlzaC5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYktpdC9FbmdsaXNo
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDkg
QEAKIAAvACoAIABCAG8AbABkACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAA
KgAvAAogACIAQgBvAGwAZAAiACAAPQAgACIAQgBvAGwAZAAiADsACiAACisALwAqACAAQwBhAHAA
aQB0AGEAbABpAHoAZQAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAK
KwAiAEMAYQBwAGkAdABhAGwAaQB6AGUAIgAgAD0AIAAiAEMAYQBwAGkAdABhAGwAaQB6AGUAIgA7
AAorAAogAC8AKgAgAFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAIAAqAC8ACiAAIgBD
AGUAbgB0AGUAcgAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQApACIAIAA9ACAA
IgBDAGUAbgB0AGUAcgAiADsACiAACkBAIC02Nyw2ICs3MCw5IEBACiAALwAqACAAQwBvAHAAeQAg
AEwAaQBuAGsAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBD
AG8AcAB5ACAATABpAG4AawAiACAAPQAgACIAQwBvAHAAeQAgAEwAaQBuAGsAIgA7AAogAAorAC8A
KgAgAEMAbwByAHIAZQBjAHQAIABTAHAAZQBsAGwAaQBuAGcAIABBAHUAdABvAG0AYQB0AGkAYwBh
AGwAbAB5ACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAQwBv
AHIAcgBlAGMAdAAgAFMAcABlAGwAbABpAG4AZwAgAEEAdQB0AG8AbQBhAHQAaQBjAGEAbABsAHkA
IgAgAD0AIAAiAEMAbwByAHIAZQBjAHQAIABTAHAAZQBsAGwAaQBuAGcAIABBAHUAdABvAG0AYQB0
AGkAYwBhAGwAbAB5ACIAOwAKKwAKIAAvACoAIABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEA
bQBlACAAKgAvAAogACIAQwByAGUAYQB0AGUAIABMAGkAbgBrACAAKABVAG4AZABvACAAYQBjAHQA
aQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAEMAcgBlAGEAdABlACAATABpAG4AawAiADsACiAA
CkBAIC0xMDksNiArMTE1LDkgQEAKIAAvACoAIABtAGUAbgB1ACAAaQB0AGUAbQAgAHQAaQB0AGwA
ZQAgACoALwAKIAAiAEgAaQBkAGUAIABTAHAAZQBsAGwAaQBuAGcAIABhAG4AZAAgAEcAcgBhAG0A
bQBhAHIAIgAgAD0AIAAiAEgAaQBkAGUAIABTAHAAZQBsAGwAaQBuAGcAIABhAG4AZAAgAEcAcgBh
AG0AbQBhAHIAIgA7AAogAAorAC8AKgAgAG0AZQBuAHUAIABpAHQAZQBtACAAdABpAHQAbABlACAA
KgAvAAorACIASABpAGQAZQAgAFMAdQBiAHMAdABpAHQAdQB0AGkAbwBuAHMAIgAgAD0AIAAiAEgA
aQBkAGUAIABTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACIAOwAKKwAKIAAvACoAIABUAGgAZQAg
AGQAZQBmAGEAdQBsAHQALAAgAGQAZQBmAGEAdQBsAHQAIABjAGgAYQByAGEAYwB0AGUAcgAgAGUA
bgBjAG8AZABpAG4AZwAgACoALwAKIAAiAEkAUwBPAC0AOAA4ADUAOQAtADEAIgAgAD0AIAAiAEkA
UwBPAC0AOAA4ADUAOQAtADEAIgA7AAogAApAQCAtMTU0LDYgKzE2MywxMiBAQAogAC8AKgAgAFUA
bgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAIAAqAC8ACiAAIgBMAG8AdwBlAHIAIABCAGEA
cwBlAGwAaQBuAGUAIAAoAFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAKQAiACAAPQAg
ACIATABvAHcAZQByACAAQgBhAHMAZQBsAGkAbgBlACIAOwAKIAAKKwAvACoAIABNAGEAawBlACAA
TABvAHcAZQByACAAQwBhAHMAZQAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAg
ACoALwAKKwAiAE0AYQBrAGUAIABMAG8AdwBlAHIAIABDAGEAcwBlACIAIAA9ACAAIgBNAGEAawBl
ACAATABvAHcAZQByACAAQwBhAHMAZQAiADsACisACisALwAqACAATQBhAGsAZQAgAFUAcABwAGUA
cgAgAEMAYQBzAGUAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisA
IgBNAGEAawBlACAAVQBwAHAAZQByACAAQwBhAHMAZQAiACAAPQAgACIATQBhAGsAZQAgAFUAcABw
AGUAcgAgAEMAYQBzAGUAIgA7AAorAAogAC8AKgAgAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABGAG8A
dQBuAGQAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBOAG8A
IABHAHUAZQBzAHMAZQBzACAARgBvAHUAbgBkACIAIAA9ACAAIgBOAG8AIABHAHUAZQBzAHMAZQBz
ACAARgBvAHUAbgBkACIAOwAKIAAKQEAgLTI1MCwxNCArMjY1LDI5IEBACiAALwAqACAAVQBuAGQA
bwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAFMAZQB0ACAAVwByAGkAdABpAG4A
ZwAgAEQAaQByAGUAYwB0AGkAbwBuACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBl
ACkAIgAgAD0AIAAiAFMAZQB0ACAAVwByAGkAdABpAG4AZwAgAEQAaQByAGUAYwB0AGkAbwBuACIA
OwAKIAAKKwAvACoAIABTAGgAbwB3ACAAYwBvAGwAbwByAHMAIABjAG8AbgB0AGUAeAB0ACAAbQBl
AG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBTAGgAbwB3ACAAQwBvAGwAbwByAHMAIgAgAD0AIAAi
AFMAaABvAHcAIABDAG8AbABvAHIAcwAiADsACisACiAALwAqACAAUwBoAG8AdwAgAGYAbwBuAHQA
cwAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAFMAaABvAHcA
IABGAG8AbgB0AHMAIgAgAD0AIAAiAFMAaABvAHcAIABGAG8AbgB0AHMAIgA7AAogAAogAC8AKgAg
AG0AZQBuAHUAIABpAHQAZQBtACAAdABpAHQAbABlACAAKgAvAAogACIAUwBoAG8AdwAgAFMAcABl
AGwAbABpAG4AZwAgAGEAbgBkACAARwByAGEAbQBtAGEAcgAiACAAPQAgACIAUwBoAG8AdwAgAFMA
cABlAGwAbABpAG4AZwAgAGEAbgBkACAARwByAGEAbQBtAGEAcgAiADsACiAACi0ALwAqACAAUwBo
AG8AdwAgAGMAbwBsAG8AcgBzACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAA
KgAvAAotACIAUwBoAG8AdwAgAGMAbwBsAG8AcgBzACIAIAA9ACAAIgBTAGgAbwB3ACAAYwBvAGwA
bwByAHMAIgA7AAorAC8AKgAgAG0AZQBuAHUAIABpAHQAZQBtACAAdABpAHQAbABlACAAKgAvAAor
ACIAUwBoAG8AdwAgAFMAdQBiAHMAdABpAHQAdQB0AGkAbwBuAHMAIgAgAD0AIAAiAFMAaABvAHcA
IABTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACIAOwAKKwAKKwAvACoAIABTAG0AYQByAHQAIABD
AG8AcAB5AC8AUABhAHMAdABlACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAA
KgAvAAorACIAUwBtAGEAcgB0ACAAQwBvAHAAeQAvAFAAYQBzAHQAZQAiACAAPQAgACIAUwBtAGEA
cgB0ACAAQwBvAHAAeQAvAFAAYQBzAHQAZQAiADsACisACisALwAqACAAUwBtAGEAcgB0ACAARABh
AHMAaABlAHMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBT
AG0AYQByAHQAIABEAGEAcwBoAGUAcwAiACAAPQAgACIAUwBtAGEAcgB0ACAARABhAHMAaABlAHMA
IgA7AAorAAorAC8AKgAgAFMAbQBhAHIAdAAgAEwAaQBuAGsAcwAgAGMAbwBuAHQAZQB4AHQAIABt
AGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFMAbQBhAHIAdAAgAEwAaQBuAGsAcwAiACAAPQAg
ACIAUwBtAGEAcgB0ACAATABpAG4AawBzACIAOwAKKwAKKwAvACoAIABTAG0AYQByAHQAIABRAHUA
bwB0AGUAcwAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFMA
bQBhAHIAdAAgAFEAdQBvAHQAZQBzACIAIAA9ACAAIgBTAG0AYQByAHQAIABRAHUAbwB0AGUAcwAi
ADsACiAACiAALwAqACAAUwBwAGUAZQBjAGgAIABjAG8AbgB0AGUAeAB0ACAAcwB1AGIALQBtAGUA
bgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAFMAcABlAGUAYwBoACIAIAA9ACAAIgBTAHAAZQBlAGMA
aAAiADsACkBAIC0zMDQsOSArMzM0LDE1IEBACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBu
ACAAbgBhAG0AZQAgACoALwAKIAAiAFMAdQBiAHMAYwByAGkAcAB0ACAAKABVAG4AZABvACAAYQBj
AHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFMAdQBiAHMAYwByAGkAcAB0ACIAOwAKIAAK
KwAvACoAIABTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACAAYwBvAG4AdABlAHgAdAAgAHMAdQBi
AC0AbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBz
ACIAIAA9ACAAIgBTAHUAYgBzAHQAaQB0AHUAdABpAG8AbgBzACIAOwAKKwAKIAAvACoAIABVAG4A
ZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAvAAogACIAUwB1AHAAZQByAHMAYwByAGkA
cAB0ACAAKABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAFMAdQBw
AGUAcgBzAGMAcgBpAHAAdAAiADsACiAACisALwAqACAAVABlAHgAdAAgAFIAZQBwAGwAYQBjAGUA
bQBlAG4AdAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFQA
ZQB4AHQAIABSAGUAcABsAGEAYwBlAG0AZQBuAHQAIgAgAD0AIAAiAFQAZQB4AHQAIABSAGUAcABs
AGEAYwBlAG0AZQBuAHQAIgA7AAorAAogAC8AKgAgAFcAZQBiAEsAaQB0AEUAcgByAG8AcgBDAGEA
bgBuAG8AdABTAGgAbwB3AFUAUgBMACAAZABlAHMAYwByAGkAcAB0AGkAbwBuACAAKgAvAAogACIA
VABoAGUAIABVAFIATAAgAGMAYQBuIBkAdAAgAGIAZQAgAHMAaABvAHcAbgAiACAAPQAgACIAVABo
AGUAIABVAFIATAAgAGMAYQBuIBkAdAAgAGIAZQAgAHMAaABvAHcAbgAiADsACiAACkBAIC0zNDAs
NiArMzc2LDkgQEAKIAAvACoAIABwAHIAbwBtAHAAdAAgAHMAdAByAGkAbgBnACAAaQBuACAAYQB1
AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuACAAcABhAG4AZQBsACAAKgAvAAogACIAVABvACAAdgBp
AGUAdwAgAHQAaABpAHMAIABwAGEAZwBlACwAIAB5AG8AdQAgAG0AdQBzAHQAIABsAG8AZwAgAGkA
bgAgAHQAbwAgAHQAaABpAHMAIABhAHIAZQBhACAAbwBuACAAJQBAADoAIgAgAD0AIAAiAFQAbwAg
AHYAaQBlAHcAIAB0AGgAaQBzACAAcABhAGcAZQAsACAAeQBvAHUAIABtAHUAcwB0ACAAbABvAGcA
IABpAG4AIAB0AG8AIAB0AGgAaQBzACAAYQByAGUAYQAgAG8AbgAgACUAQAA6ACIAOwAKIAAKKwAv
ACoAIABUAHIAYQBuAHMAZgBvAHIAbQBhAHQAaQBvAG4AcwAgAGMAbwBuAHQAZQB4AHQAIABzAHUA
YgAtAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAVAByAGEAbgBzAGYAbwByAG0AYQB0AGkA
bwBuAHMAIgAgAD0AIAAiAFQAcgBhAG4AcwBmAG8AcgBtAGEAdABpAG8AbgBzACIAOwAKKwAKIAAv
ACoAIABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAvAAogACIAVAB1AHIAbgAg
AE8AZgBmACAASwBlAHIAbgBpAG4AZwAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0A
ZQApACIAIAA9ACAAIgBUAHUAcgBuACAATwBmAGYAIABLAGUAcgBuAGkAbgBnACIAOwAKIAAKQEAg
LTU2Nyw0ICs2MDYsMyBAQAogAAogAC8AKgAgAGEAYwBjAGUAcwBzAGkAYgBpAGwAaQB0AHkAIABy
AG8AbABlACAAZABlAHMAYwByAGkAcAB0AGkAbwBuACAAZgBvAHIAIAB3AGUAYgAgAGEAcgBlAGEA
IAAqAC8ACiAAIgB3AGUAYgAgAGEAcgBlAGEAIgAgAD0AIAAiAHcAZQBiACAAYQByAGUAYQAiADsA
Ci0ACkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDA5LTA0LTI0ICBEb3VnbGFzIFIuIERhdmlk
c29uICA8ZGRhdmlkc29AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgdmFyaW91cyBzd2l0
Y2hlcyBhbmQgY29udGV4dCBtZW51IGl0ZW1zIG5lZWRlZCBmb3IKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY3MjQxMDY+IFdlYlZpZXdzIG5lZWQgdG8gaW1wbGVtZW50IHRleHQgY2hlY2tpbmcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoZml4TWVudXNSZWNl
aXZlZEZyb21PbGRDbGllbnRzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnVwcGVyY2FzZVdvcmQpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojpsb3dlcmNhc2VXb3JkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2Fw
aXRhbGl6ZVdvcmQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG93U3Vic3RpdHV0aW9u
c1BhbmVsKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c3Vic3RpdHV0aW9uc1BhbmVsSXNT
aG93aW5nKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlU21hcnRJbnNlcnREZWxl
dGUpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1
dG9tYXRpY0xpbmtEZXRlY3Rpb24pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbik6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk6CisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbik6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbToKKyAgICAgICAgKC1bV2ViVmll
d0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9yc10pOgorICAgICAgICAoLVtXZWJW
aWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5
XSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1
dGlvbnNNZW51XSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRh
Z1Nob3dTdWJzdGl0dXRpb25zOl0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0
TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rlc10pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9y
eSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlc10pOgorICAgICAgICAoLVtXZWJWaWV3RmFj
dG9yeSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzXSk6CisgICAgICAgICgtW1dlYlZpZXdG
YWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudF0pOgorICAgICAgICAoLVtX
ZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51XSk6Cisg
ICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2Vd
KToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2Vy
Q2FzZV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1UYWdDYXBp
dGFsaXplXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTpdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRp
b25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaXNBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdG9nZ2xlQXV0
b21hdGljTGlua0RldGVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRB
dXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6XSk6CisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVu
YWJsZWQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKC1bV2Vi
VmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1b
V2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dl
YlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZF0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IHNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDA5LTA0LTI0ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVy
bnN0ZWluCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0JKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIx
NiwzMSBAQCBzdGF0aWMgdm9pZCBmaXhNZW51c1JlY2VpdmVkRnJvbU9sZENsaWVuCiAgICAgICAg
ICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdMZWZ0VG9SaWdodDsKICAgICAgICAg
ICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdF1dKQogICAgICAgICAgICAg
ICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICBl
bHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseV1dKQor
ICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJp
bmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTdWJz
dGl0dXRpb25zTWVudV1dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnU3Vic3RpdHV0aW9uc01lbnU7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVh
bFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVt
VGFnU2hvd1N1YnN0aXR1dGlvbnM6dHJ1ZV1dCisgICAgICAgICAgICAgICAgICAgICB8fCBbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6ZmFsc2VdXSkKKyAgICAgICAgICAgICAgICBt
b2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOworICAgICAgICAgICAg
ZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZh
Y3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlXV0pCisgICAgICAgICAgICAg
ICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rlc11dKQorICAgICAgICAgICAgICAg
IG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRRdW90ZXM7CisgICAgICAgICAgICBlbHNl
IGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9y
eV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdXSkKKyAgICAgICAgICAgICAgICBtb2Rl
cm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOworICAgICAgICAgICAgZWxzZSBpZiAo
W3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNv
bnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3NdXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcg
PSBXZWJNZW51SXRlbVRhZ1NtYXJ0TGlua3M7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUg
aXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1l
bnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50XV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0g
V2ViTWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudV1dKQorICAgICAgICAgICAgICAgIG1vZGVy
blRhZyA9IFdlYk1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0
b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlXV0pCisgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlOworICAgICAgICAgICAgZWxz
ZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rv
cnldIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2VdXSkKKyAgICAgICAgICAgICAgICBt
b2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U7CisgICAgICAgICAgICBlbHNl
IGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9y
eV0gY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZV1dKQorICAgICAgICAgICAgICAgIG1vZGVy
blRhZyA9IFdlYk1lbnVJdGVtVGFnQ2FwaXRhbGl6ZTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IFdlYk1lbnVJdGVtVGFnT3RoZXIgZm9yIGFueSBp
dGVtcyBvdGhlciB0aGFuIHRoZSBvbmVzIHdlIGV4cGxpY2l0bHkgaGFuZGxlLgogICAgICAgICAg
ICAgLy8gVGhlcmUncyBub3RoaW5nIHRvIHByZXZlbnQgYW4gYXBwIGZyb20gYXBwbHlpbmcgdGhp
cyB0YWcsIGJ1dCB0aGV5IGFyZSBzdXBwb3NlZCB0byBvbmx5CkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDQyODI1KQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsMjUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNBcnJheSogcGFzdGVib2Fy
ZFR5cGVzRm9yU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CiAjZW5kaWYKICAgICAKKyNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNlV29yZCgpOworICAgIHZpcnR1YWwgdm9pZCBs
b3dlcmNhc2VXb3JkKCk7CisgICAgdmlydHVhbCB2b2lkIGNhcGl0YWxpemVXb3JkKCk7CisgICAg
dmlydHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KTsKKyAgICB2aXJ0
dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCk7CisgICAgdmlydHVhbCB2b2lk
IHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlu
a0RldGVjdGlvbigpOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgp
OworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpOwogCkBAIC0xMDEs
NyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhj
b25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBt
aXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRl
dGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ0FuZEdyYW1tYXJPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgYm9vbCBjaGVja0dyYW1tYXIsIFdURjo6VmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1YWwgdm9p
ZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWlu
dDY0X3QgY2hlY2tpbmdUeXBlcywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVz
dWx0PiYgcmVzdWx0cyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFy
RGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVs
bGluZ1VJKGJvb2wgc2hvdyk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE5LDYgKzMxOSw5
MiBAQCBOU0FycmF5KiBXZWJFZGl0b3JDbGllbnQ6OnBhc3RlYm9hcmRUeXBlCiB9CiAjZW5kaWYK
IAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwcGVyY2FzZVdvcmQoKQoreworICAg
IFttX3dlYlZpZXcgdXBwZXJjYXNlV29yZDpuaWxdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6bG93ZXJjYXNlV29yZCgpCit7CisgICAgW21fd2ViVmlldyBsb3dlcmNhc2VXb3JkOm5pbF07
Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjYXBpdGFsaXplV29yZCgpCit7CisgICAgW21f
d2ViVmlldyBjYXBpdGFsaXplV29yZDpuaWxdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
c2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cpCit7CisgICAgTlNQYW5lbCAqc3BlbGxp
bmdQYW5lbCA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzdWJzdGl0dXRp
b25zUGFuZWxdOworICAgIGlmIChzaG93KQorICAgICAgICBbc3BlbGxpbmdQYW5lbCBvcmRlckZy
b250Om5pbF07CisgICAgZWxzZQorICAgICAgICBbc3BlbGxpbmdQYW5lbCBvcmRlck91dDpuaWxd
OworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5n
KCkKK3sKKyAgICByZXR1cm4gW1tbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBz
dWJzdGl0dXRpb25zUGFuZWxdIGlzVmlzaWJsZV07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAgW21fd2ViVmlldyB0b2dnbGVTbWFy
dEluc2VydERlbGV0ZTpuaWxdOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkXTsKK30KKwordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkKK3sKKyAgICBbbV93ZWJW
aWV3IHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOm5pbF07Cit9CisKK2Jvb2wgV2Vi
RWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKK3sKKyAgICBy
ZXR1cm4gW21fd2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXTsKK30KKwor
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKQorewor
ICAgIFttX3dlYlZpZXcgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjpuaWxdOworfQorCiti
b29sIFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
Cit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb246bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpCit7CisgICAgW21fd2ViVmlldyB0b2dnbGVBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnQ6bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6Omlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dl
YlZpZXcgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsKK30KKwordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpCit7Cisg
ICAgW21fd2ViVmlldyB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246bmlsXTsKK30K
KyNlbmRpZgorCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlICpu
b2RlLCBSYW5nZSogcmVwbGFjaW5nUmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBnaXZlbkFjdGlv
bikKIHsgCiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6bV93ZWJWaWV3IHNob3VsZEluc2VydE5vZGU6a2l0KG5vZGUpIHJlcGxhY2luZ0RP
TVJhbmdlOmtpdChyZXBsYWNpbmdSYW5nZSkgZ2l2ZW5BY3Rpb246KFdlYlZpZXdJbnNlcnRBY3Rp
b24pZ2l2ZW5BY3Rpb25dOwpAQCAtNTk1LDI3ICs2ODEsMjYgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrR3JhbW1hck9mU3RyaQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja1NwZWxsaW5nQW5kR3JhbW1hck9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLCBib29sIGNoZWNrR3JhbW1hciwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29u
c3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogI2lmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TU3RyaW5n
ICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5
OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107
Ci0gICAgTlNUZXh0Q2hlY2tpbmdUeXBlcyBjaGVja2luZ1R5cGVzID0gY2hlY2tHcmFtbWFyID8g
KE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IHwgTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcgfCBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IChOU1RleHRDaGVja2luZ1R5cGVPcnRo
b2dyYXBoeSB8IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKTsKLSAgICBOU0FycmF5ICppbmNv
bWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tT
dHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhd
KSB0eXBlczpjaGVja2luZ1R5cGVzIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxM
XTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgw
LCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2lu
Z1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOwog
ICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQg
KmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewogICAgICAgICBOU1JhbmdlIHJl
c3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tp
bmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07CiAgICAgICAg
IEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIHJlc3VsdFJhbmdl
Lmxlbmd0aCA+IDApOwotICAgICAgICBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0g
cmVzdWx0VHlwZSkgeworICAgICAgICBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgPT0g
cmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LnJlc3VsdFR5cGUgPSAxOworICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNoZWNrR3JhbW1hciAmJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyID09
IHJlc3VsdFR5cGUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVHcmFt
bWFyID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0Owog
ICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0
YWlsc107Ci0gICAgICAgICAgICByZXN1bHQucmVzdWx0VHlwZSA9IDI7CisgICAgICAgICAgICBy
ZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwogICAgICAgICAgICAgcmVzdWx0
LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVu
Z3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkg
KmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKQEAgLTYzNCw2ICs3MTksNDEgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdBbmRHcgogICAgICAgICAgICAgICAgIHJlc3Vs
dC5kZXRhaWxzLmFwcGVuZChkZXRhaWwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5
cGVMaW5rID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNr
aW5nVHlwZUxpbmspKSB7CisgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CisgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4
dENoZWNraW5nVHlwZVF1b3RlID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAm
IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlKSkgeworICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVF1
b3RlOworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3Ry
aW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CisgICAgICAgIH0gZWxz
ZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNoZWNr
aW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVEYXNoKSkgeworICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZURhc2g7CisgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAg
ICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9PSByZXN1bHRUeXBl
ICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkp
IHsKKyAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBy
ZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CisgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb24gPT0gcmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikpIHsKKyAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVD
b3JyZWN0aW9uOworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9j
YXRpb247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwor
ICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2Vt
ZW50U3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAg
IH0KICAgICB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0ZhY3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3RmFjdG9yeS5tbQkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNyArMzIxLDcgQEAK
IAogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzCiB7Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiU2hvdyBjb2xvcnMiLCAiU2hvdyBjb2xvcnMgY29udGV4dCBtZW51IGl0
ZW0iKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IENvbG9ycyIsICJTaG93IGNvbG9ycyBj
b250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiAtIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRh
Z1NwZWVjaE1lbnUKQEAgLTM2OCw2ICszNjgsNjggQEAKICAgICByZXR1cm4gVUlfU1RSSU5HKCJS
aWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAor
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNh
bGx5Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNh
bGx5IiwgIkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGljYWxseSBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU3Vic3RpdHV0aW9ucyIsICJTdWJzdGl0dXRpb25z
IGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51
SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOihib29sKXNob3cKK3sKKyAgICBpZiAoc2hvdykgCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0ZW0g
dGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIaWRlIFN1YnN0aXR1dGlvbnMiLCAibWVu
dSBpdGVtIHRpdGxlIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21h
cnRDb3B5UGFzdGUKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBDb3B5L1Bhc3RlIiwg
IlNtYXJ0IENvcHkvUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcworeworICAgIHJldHVybiBVSV9TVFJJTkco
IlNtYXJ0IFF1b3RlcyIsICJTbWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKwor
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcworeworICAgIHJldHVy
biBVSV9TVFJJTkcoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgTGlua3MiLCAiU21hcnQgTGlua3MgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdUZXh0
UmVwbGFjZW1lbnQKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50Iiwg
IlRleHQgUmVwbGFjZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51Cit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiVHJhbnNmb3JtYXRpb25zIiwgIlRyYW5zZm9ybWF0aW9ucyBjb250ZXh0IHN1Yi1t
ZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBw
ZXJDYXNlCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTWFrZSBVcHBlciBDYXNlIiwgIk1ha2Ug
VXBwZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRl
eHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtl
IExvd2VyIENhc2UiLCAiTWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
Ky0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCiAtIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50CiB7
CiAgICAgcmV0dXJuIFVJX1NUUklORygiSW5zcGVjdCBFbGVtZW50IiwgIkluc3BlY3QgRWxlbWVu
dCBjb250ZXh0IG1lbnUgaXRlbSIpOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQko
cmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2NDAsNiArMjY0MCw0MiBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0Fu
ZFNlbGVjdCkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9CiAjZW5kaWYKKworI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
ICAgIC8vIEZJWE1FIDQ3OTkxMzQ6IFdlYlZpZXcgaXMgdGhlIGJvdHRsZW5lY2sgZm9yIHRoaXMg
bG9naWMsIGJ1dCB3ZSBtdXN0IHZhbGlkYXRlIAorICAgIC8vIHRoZSBzZWxlY3RvciBoZXJlIGJl
Y2F1c2Ugd2UgaW1wbGVtZW50IGl0IGhlcmUsIGFuZCB3ZSBtdXN0IGltcGxlbWVudCBpdCBoZXJl
IGJlY2F1c2UgdGhlIEFwcEtpdCAKKyAgICAvLyBjb2RlIGNoZWNrcyB0aGUgZmlyc3QgcmVzcG9u
ZGVyLgorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uOikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRl
bSAqKWl0ZW07CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRl
bSBjbGFzc11dKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwor
ICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0
b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVu
dUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5k
T2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOltzZWxmIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdID8gTlNPblN0YXRlIDog
TlNPZmZTdGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfQorICAgIGlmIChhY3Rpb24g
PT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246KSkgeworICAgICAg
ICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgaWYg
KFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pCisgICAgICAgICAg
ICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZF0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAg
ICB9CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50OikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAq
KWl0ZW07CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBj
bGFzc11dKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZF0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAg
ICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xl
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOikpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVu
dUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CisgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5k
T2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOltzZWxmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF0gPyBOU09uU3Rh
dGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisjZW5kaWYKICAg
ICAKICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IFtzZWxmIGNvcmVDb21tYW5kQnlTZWxl
Y3RvcjphY3Rpb25dOwogICAgIGlmIChjb21tYW5kLmlzU3VwcG9ydGVkKCkpIHsKQEAgLTQ5Mzcs
NiArNDk3Myw4OCBAQCBzdGF0aWMgQ0dQb2ludCBjb3JlR3JhcGhpY3NTY3JlZW5Qb2ludEZvCiAK
ICNlbmRpZgogCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisKKy8vIEZJWE1FIDQ3OTkxMzQ6IFdlYlZpZXcgaXMgdGhlIGJv
dHRsZW5lY2sgZm9yIHRoaXMgbG9naWMsIGJ1dCB3ZSBtdXN0IGltcGxlbWVudCB0aGVzZSBtZXRo
b2RzIGhlcmUgYmVjYXVzZQorLy8gdGhlIEFwcEtpdCBjb2RlIGNoZWNrcyB0aGUgZmlyc3QgcmVz
cG9uZGVyLgorCistIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCit7
CisgICAgcmV0dXJuIFtbc2VsZiBfd2ViVmlld10gaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWRdOworfQorCistICh2b2lkKXNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YmxlZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSBzZXRBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb246KGlkKXNlbmRlcgoreworICAgIFtbc2VsZiBfd2ViVmlld10gdG9n
Z2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246c2VuZGVyXTsKK30KKworLSAoQk9PTClpc0F1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCit7CisgICAgcmV0dXJuIFtbc2VsZiBfd2ViVmll
d10gaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07Cit9CisKKy0gKHZvaWQpc2V0QXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBfd2Vi
Vmlld10gc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZv
aWQpdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjooaWQpc2VuZGVyCit7CisgICAgW1tzZWxm
IF93ZWJWaWV3XSB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOnNlbmRlcl07Cit9CisKKy0g
KEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBb
W3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdOworfQor
CistICh2b2lkKXNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWcK
K3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkOmZsYWddOworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246
KGlkKXNlbmRlcgoreworICAgIFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbjpzZW5kZXJdOworfQorCistIChCT09MKWlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZAoreworICAgIHJldHVybiBbW3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50RW5hYmxlZF07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSBzZXRBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOmZsYWddOworfQorCistICh2b2lkKXRvZ2dsZUF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2VuZGVyCit7CisgICAgW1tzZWxmIF93ZWJWaWV3
XSB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6c2VuZGVyXTsKK30KKworLSAoQk9PTClp
c0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQKK3sKKyAgICByZXR1cm4gW1tzZWxm
IF93ZWJWaWV3XSBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdOworfQorCist
ICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZwor
eworICAgIFtbc2VsZiBfd2ViVmlld10gc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZDpmbGFnXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b246KGlkKXNlbmRlcgoreworICAgIFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uOnNlbmRlcl07Cit9CisKKyNlbmRpZgorCiAtICh2b2lkKV9sb29rVXBJ
bkRpY3Rpb25hcnlGcm9tTWVudTooaWQpc2VuZGVyCiB7CiAgICAgLy8gRGljdGlvbmFyeSBBUEkg
d2lsbCBhY2NlcHQgYSB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlm
IGl0IHdlcmUgcmVhbCB0ZXh0LApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJ
bnRlcm5hbC5oCShyZXZpc2lvbiA0MjgyNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDIzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC0gKHZvaWQpc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZDooQk9PTClmbGFn
OwogLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcjsKICNlbmRpZgorI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorLSAoQk9PTClpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKKy0gKHZv
aWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2
b2lkKXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CistIChCT09M
KWlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ7CistICh2b2lkKXNldEF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb246KGlkKXNlbmRlcjsKKy0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZDsKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6
KEJPT0wpZmxhZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQp
c2VuZGVyOworLSAoQk9PTClpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ7CistICh2
b2lkKXNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKHZv
aWQpdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50OihpZClzZW5kZXI7CistIChCT09MKWlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKKy0gKHZvaWQpc2V0QXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKKyNlbmRpZgogLSAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2UqKXByb21pc2VkRHJhZ1RJRkZEYXRhU291cmNlOwogLSAodm9pZClzZXRQcm9t
aXNlZERyYWdUSUZGRGF0YVNvdXJjZTooV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqKXNvdXJjZTsKIC0g
KHZvaWQpX3dlYl9sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDQyODI1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw2ICs2MywxMSBAQAogI2RlZmluZSBXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWQiCiAjZGVmaW5l
IFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCBAIldlYkNvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZCBAIldlYkdy
YW1tYXJDaGVja2luZ0VuYWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uRW5hYmxlZCBAIldlYkF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCIKKyNkZWZp
bmUgV2ViQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQgQCJXZWJBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZCIKKyNkZWZpbmUgV2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQgQCJXZWJBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCIKKyNkZWZpbmUgV2ViQXV0
b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCBAIldlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQiCisjZGVmaW5lIFdlYkF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQg
QCJXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkIgogI2RlZmluZSBXZWJLaXRE
T01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVy
ZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkgQCJXZWJL
aXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0RlRQRGlyZWN0b3J5
VGVtcGxhdGVQYXRoIEAiV2ViS2l0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoIgpJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDQyODI1KQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDYgKzcyLDE4IEBAIGVudW0geyAKICAgICBXZWJNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25EZWZhdWx0LAogICAgIFdlYk1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0
LAogICAgIFdlYk1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAorICAgIFdlYk1l
bnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSwKKyAgICBXZWJNZW51SXRlbVRh
Z1N1YnN0aXR1dGlvbnNNZW51LAorICAgIFdlYk1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMs
CisgICAgV2ViTWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSwKKyAgICBXZWJNZW51SXRlbVRhZ1Nt
YXJ0UXVvdGVzLAorICAgIFdlYk1lbnVJdGVtVGFnU21hcnREYXNoZXMsCisgICAgV2ViTWVudUl0
ZW1UYWdTbWFydExpbmtzLAorICAgIFdlYk1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50LAorICAg
IFdlYk1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSwKKyAgICBXZWJNZW51SXRlbVRhZ01h
a2VVcHBlckNhc2UsCisgICAgV2ViTWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlLAorICAgIFdlYk1l
bnVJdGVtVGFnQ2FwaXRhbGl6ZSwKICAgICBXZWJNZW51SXRlbVRhZ0Jhc2VBcHBsaWNhdGlvbiA9
IDEwMDAwCiB9OwogQGNsYXNzIFdlYkdlb2xvY2F0aW9uOwpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDQyODI1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUwNyw2ICs1MDcsMTMgQEAgc3RhdGljIEJPT0wgY29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibAogI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgogc3RhdGljIEJPT0wg
Z3JhbW1hckNoZWNraW5nRW5hYmxlZDsKICNlbmRpZgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorc3RhdGljIEJPT0wgYXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOworc3RhdGljIEJPT0wgYXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQ7CitzdGF0aWMgQk9PTCBhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
RW5hYmxlZDsKK3N0YXRpYyBCT09MIGF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ7Citz
dGF0aWMgQk9PTCBhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOworI2VuZGlmCiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3UHJpdmF0ZQogCkBAIC01MzUsNiArNTQyLDEzIEBAIHN0
YXRpYyBCT09MIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7CiAjaWZuZGVmIEJVSUxESU5HX09OX1RJ
R0VSCiAgICAgZ3JhbW1hckNoZWNraW5nRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZF07CiAj
ZW5kaWYKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF07CisgICAgYXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9y
S2V5OldlYkF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXTsKKyAgICBhdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAg
IGF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVu
YWJsZWRdOworICAgIGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkF1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdOworI2VuZGlmCiAgICAgCiAgICAgdXNlc1BhZ2VDYWNo
ZSA9IFlFUzsKICAgICAKQEAgLTM3NDEsNiArMzc1NSw0MyBAQCBzdGF0aWMgV2ViRnJhbWUgKmlu
Y3JlbWVudEZyYW1lKFdlYkZyYW1lCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFlFUzsKICNl
bmRpZgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQorICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVB
dXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0g
W3NlbGYgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOworICAgICAgICBpZiAo
WyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7Cisg
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAg
ICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09m
ZlN0YXRlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWUVTOworICAgIH0gZWxzZSBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOikpIHsKKyAg
ICAgICAgQk9PTCBjaGVja01hcmsgPSBbc2VsZiBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkXTsKKyAgICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVu
dUl0ZW0gY2xhc3NdXSkgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNN
ZW51SXRlbSAqKWl0ZW07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJr
ID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlF
UzsKKyAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbjopKSB7CisgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICop
aXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5T
TWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21l
bnVJdGVtIHNldFN0YXRlOmNoZWNrTWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDopKSB7CisgICAgICAgIEJPT0wg
Y2hlY2tNYXJrID0gW3NlbGYgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKKyAg
ICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xh
c3NdXSkgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAq
KWl0ZW07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0
YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9
IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uOikpIHsKKyAgICAgICAgQk9PTCBjaGVja01hcmsgPSBbc2VsZiBpc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdOworICAgICAgICBpZiAoWyhOU09iamVjdCAqKWl0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CisgICAgICAgICAgICBOU01lbnVJ
dGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgICAgIFttZW51SXRl
bSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gWUVTOworI2VuZGlmCiAgICAgfQogICAgIEZPUl9FQUNIX1JFU1BP
TkRFUl9TRUxFQ1RPUihWQUxJREFURSkKIApAQCAtNDQ5OCwxMCArNDU0OSwxMyBAQCBzdGF0aWMg
TlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvCiAgICAgZ3JhbW1hckNoZWNraW5nRW5h
YmxlZCA9IGZsYWc7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
c2V0Qm9vbDpncmFtbWFyQ2hlY2tpbmdFbmFibGVkIGZvcktleTpXZWJHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkXTsgICAgCiAgICAgCi0gICAgLy8gRklYTUUgNDgxMTQ0Nzogd29ya2Fyb3VuZCBmb3Ig
bGFjayBvZiBBUEkKKyNpZm5kZWYgQlVJTERJTkdfT05fTEVPUEFSRAorICAgIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVQYW5lbHNdOworI2Vsc2UKICAgICBOU1Nw
ZWxsQ2hlY2tlciAqc3BlbGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl07CiAgICAgaWYgKFtzcGVsbENoZWNrZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfdXBkYXRlR3JhbW1hcildKQogICAgICAgICBbc3BlbGxDaGVja2VyIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoX3VwZGF0ZUdyYW1tYXIpXTsKKyNlbmRpZgogICAgIAogICAgIC8vIFdlIGNh
bGwgX3ByZWZsaWdodFNwZWxsQ2hlY2tlciB3aGVuIHR1cm5pbmcgY29udGludW91cyBzcGVsbCBj
aGVja2luZyBvbiwgYnV0IHdlIGRvbid0IG5lZWQgdG8gZG8gdGhhdCBoZXJlCiAgICAgLy8gYmVj
YXVzZSBncmFtbWFyIGNoZWNraW5nIG9ubHkgb2NjdXJzIG9uIGNvZGUgcGF0aHMgdGhhdCBhbHJl
YWR5IHByZWZsaWdodCBzcGVsbCBjaGVja2luZyBhcHByb3ByaWF0ZWx5LgpAQCAtNDUxOSw2ICs0
NTczLDEyOSBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvCiAKIEBl
bmQKIAorQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdUZXh0Q2hlY2tpbmcpCisKKy0g
KEJPT0wpaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAg
cmV0dXJuIE5POworI2Vsc2UKKyAgICByZXR1cm4gYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkOworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZAoreworI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBhdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKKyNlbmRpZgorfQorCistIChCT09MKWlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgcmV0dXJuIE5POworI2Vsc2UK
KyAgICByZXR1cm4gYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CisjZW5kaWYKK30K
KworLSAoQk9PTClpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQKK3sKKyNpZiBkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisg
ICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICByZXR1cm4gYXV0b21hdGljVGV4dFJlcGxhY2VtZW50
RW5hYmxlZDsKKyNlbmRpZgorfQorCistIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uRW5hYmxlZAoreworI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBh
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOworI2VuZGlmCit9CisKKyNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
KworLSAodm9pZClzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZworeworICAgIGlmIChhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPT0gZmxhZykK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9
IGZsYWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9v
bDphdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgZm9yS2V5OldlYkF1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSB1cGRhdGVQYW5lbHNdOworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXRBdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRp
b25FbmFibGVkXV07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJs
ZWQ6KEJPT0wpZmxhZworeworICAgIGlmIChhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9
PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAgYXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJs
ZWQgPSBmbGFnOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNl
dEJvb2w6YXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQgZm9yS2V5OldlYkF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkXTsgICAgCisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljTGlu
a0RldGVjdGlvbjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0QXV0b21hdGljTGlua0RldGVj
dGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdXTsKK30K
KworLSAodm9pZClzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFn
Cit7CisgICAgaWYgKGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID09IGZsYWcpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCA9IGZs
YWc7CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDph
dXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWRdOyAgICAKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxs
Q2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXRBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uRW5hYmxlZDohW3NlbGYgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZF1dOworfQorCistICh2b2lkKXNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJP
T0wpZmxhZworeworICAgIGlmIChhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkID09IGZs
YWcpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
ID0gZmxhZzsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRC
b29sOmF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgZm9yS2V5OldlYkF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudEVuYWJsZWRdOyAgICAKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIHNldEF1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZF1dOworfQorCistICh2b2lkKXNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6
KEJPT0wpZmxhZworeworICAgIGlmIChhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
ID09IGZsYWcpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkID0gZmxhZzsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzZXRCb29sOmF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQgZm9yS2V5Oldl
YkF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdOyAgICAKKyAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKK30KKworLSAodm9pZCl0
b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcgoreworICAgIFtzZWxm
IHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF1dOworfQorCisjZW5kaWYKKworQGVuZAorCiBAaW1w
bGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKIAogLSAodm9pZCly
ZXBsYWNlU2VsZWN0aW9uV2l0aE5vZGU6KERPTU5vZGUgKilub2RlCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNDI4MjUpCisrKyBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDY0LDYgKzQ2NCwyOSBAQCBD
b3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBz
aG91bGQgYmUgbWVyZ2VkIGludG8gV2ViSUJBY3Rpb25zIHdoZW4gd2UncmUgbm90IGluIEFQSSBm
cmVlemUKIC0gKHZvaWQpdG9nZ2xlR3JhbW1hckNoZWNraW5nOihpZClzZW5kZXI7CiAjZW5kaWYK
KworQGVuZAorCitAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdUZXh0Q2hlY2tpbmcpCisKKy0g
KEJPT0wpaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ7CistIChCT09MKWlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ7CistIChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQ7CistIChCT09MKWlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZDsKKy0gKEJPT0wpaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOworI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQorLSAodm9pZClzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246KGlkKXNlbmRlcjsK
Ky0gKHZvaWQpc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjooaWQpc2VuZGVyOworLSAodm9pZClz
ZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0
b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CistICh2b2lkKXNldEF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKHZvaWQpdG9nZ2xl
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50OihpZClzZW5kZXI7CistICh2b2lkKXNldEF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKHZvaWQpdG9nZ2xlQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CisjZW5kaWYKKwogQGVuZAogCiBA
aW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsKQo=
</data>
<flag name="review"
          id="14889"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29779</attachid>
            <date>2009-04-24 18:47:27 -0700</date>
            <delta_ts>2009-04-24 19:07:34 -0700</delta_ts>
            <desc>new patch taking into account suggestions from Justin</desc>
            <filename>textchecking.0424.2.patch</filename>
            <type>text/plain</type>
            <size>86260</size>
            <attacher name="Douglas Davidson">ddavidso</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjg1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjQgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBlZGl0aW5nIG1lY2hhbmlzbXMg
YW5kIGFkZCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGltcGxlbWVudCB0ZXh0IGNoZWNraW5nCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSnVzdGluIEdhcmNpYS4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250
ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW06CisKIDIwMDktMDQt
MjQgIFNlcmdpbyBHYXJjw4PCrWEtQ3VldmFzICA8c2VyZ2lvX2djZ0B0ZWxlZm9uaWNhLm5ldD4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAkocmV2aXNpb24gNDI4NTgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgog
I2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCisjaW5jbHVkZSAiQ3JlYXRlTGlua0NvbW1h
bmQuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKQEAgLTExMjIs
NiArMTEyMywxMTAgQEAgaW50IEVkaXRvcjo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKQogICAg
IHJldHVybiBjbGllbnQoKSA/IGNsaWVudCgpLT5zcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIDog
MDsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisKK3ZvaWQgRWRpdG9yOjp1cHBlcmNh
c2VXb3JkKCkKK3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT51cHBlcmNh
c2VXb3JkKCk7Cit9CisKK3ZvaWQgRWRpdG9yOjpsb3dlcmNhc2VXb3JkKCkKK3sKKyAgICBpZiAo
Y2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5sb3dlcmNhc2VXb3JkKCk7Cit9CisKK3ZvaWQg
RWRpdG9yOjpjYXBpdGFsaXplV29yZCgpCit7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBj
bGllbnQoKS0+Y2FwaXRhbGl6ZVdvcmQoKTsKK30KKwordm9pZCBFZGl0b3I6OnNob3dTdWJzdGl0
dXRpb25zUGFuZWwoKQoreworICAgIGlmICghY2xpZW50KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJObyBOU1NwZWxsQ2hlY2tlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGNsaWVudCgpLT5zdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSkgeworICAgICAgICBjbGll
bnQoKS0+c2hvd1N1YnN0aXR1dGlvbnNQYW5lbChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY2xpZW50KCktPnNob3dTdWJzdGl0dXRpb25zUGFuZWwodHJ1ZSk7Cit9CisKK2Jv
b2wgRWRpdG9yOjpzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKQoreworICAgIGlmICghY2xp
ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2xpZW50KCktPnN1YnN0
aXR1dGlvbnNQYW5lbElzU2hvd2luZygpOworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlU21hcnRJ
bnNlcnREZWxldGUoKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRv
Z2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7Cit9CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVu
dCgpLT5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworfQorCit2b2lkIEVk
aXRvcjo6dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKQoreworICAgIGlmIChjbGll
bnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9u
KCk7Cit9CisKK2Jvb2wgRWRpdG9yOjppc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkK
K3sKKyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljTGlua0RldGVj
dGlvbkVuYWJsZWQoKTsKK30KKwordm9pZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRl
Y3Rpb24oKQoreworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnRvZ2dsZUF1
dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKK30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQo
KS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRv
cjo6dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpCit7CisgICAgaWYgKGNsaWVudCgp
KQorICAgICAgICBjbGllbnQoKS0+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwor
fQorCitib29sIEVkaXRvcjo6aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKK3sK
KyAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRvcjo6dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50KCkKK3sKKyAgICBpZiAoY2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT50b2dnbGVB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKK30KKworYm9vbCBFZGl0b3I6OmlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKK30KKwordm9p
ZCBFZGl0b3I6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpCit7CisgICAgaWYg
KGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uKCk7Cit9CisKKyNlbmRpZgorCiBib29sIEVkaXRvcjo6c2hvdWxkRW5kRWRpdGluZyhS
YW5nZSogcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zaG91bGRF
bmRFZGl0aW5nKHJhbmdlKTsKQEAgLTE1OTIsMTcgKzE2OTcsMTggQEAgc3RhdGljIFN0cmluZyBm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkRwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1t
YXJEZXRhaWxJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICAgICAgICAgICAgICBjbGllbnQt
PmNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJh
Y3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBjaGVja0dyYW1tYXIsIHJlc3VsdHMp
OworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIg
PyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDog
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAgICAgICAgICAgIGNsaWVudC0+Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3Ry
aW5nLmxlbmd0aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJl
c3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT5yZXN1
bHRUeXBlID09IDEgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYg
cmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVz
dWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0
LT5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRp
b24gPSByZXN1bHQtPmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxl
ZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC0+bG9jYXRpb24sIHJlc3Vs
dC0+bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29y
ZC5sZW5ndGgoKSAhPSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnJlc3VsdFR5
cGUgPT0gMiAmJiByZXN1bHQtPmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQt
PmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09
IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPCBjdXJyZW50RW5k
T2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1cnJlbnRTdGFy
dE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3Ro
ID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNlIHRo
ZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGluIGl0
LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4KQEAg
LTE5NjEsMTEgKzIwNjcsMTIgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JNaXNz
cGVsbAogICAgICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7Ci0gICAgY2xpZW50LT5jaGVja1NwZWxsaW5nQW5kR3JhbW1hck9mUGFy
YWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5n
dGgoKSwgY2hlY2tHcmFtbWFyLCByZXN1bHRzKTsKKyAgICB1aW50NjRfdCBjaGVja2luZ1R5cGVz
ID0gY2hlY2tHcmFtbWFyID8gKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyKSA6IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBjbGllbnQtPmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFw
aFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29u
c3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKLSAgICAgICAgaWYg
KHJlc3VsdC0+cmVzdWx0VHlwZSA9PSAxICYmIHJlc3VsdC0+bG9jYXRpb24gPT0gcmFuZ2VTdGFy
dE9mZnNldCAmJiByZXN1bHQtPmxlbmd0aCA9PSByYW5nZUxlbmd0aCkgeworICAgICAgICBpZiAo
cmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHQtPmxvY2F0
aW9uID09IHJhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sZW5ndGggPT0gcmFuZ2VMZW5ndGgp
IHsKICAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmFuZ2VTdGFydE9mZnNldCwgcmFuZ2VMZW5ndGgpOwogICAgICAgICAgICAgQVNT
RVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpICE9IDApOwogICAgICAgICAgICAgY2xpZW50LT5n
ZXRHdWVzc2VzRm9yV29yZChtaXNzcGVsbGVkV29yZCwgZ3Vlc3Nlcyk7CkBAIC0xOTgwLDcgKzIw
ODcsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsCiAgICAgICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07Ci0g
ICAgICAgIGlmIChyZXN1bHQtPnJlc3VsdFR5cGUgPT0gMiAmJiByZXN1bHQtPmxvY2F0aW9uIDw9
IHJhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID49
IHJhbmdlU3RhcnRPZmZzZXQgKyByYW5nZUxlbmd0aCkgeworICAgICAgICBpZiAocmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPD0gcmFu
Z2VTdGFydE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGggPj0gcmFu
Z2VTdGFydE9mZnNldCArIHJhbmdlTGVuZ3RoKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgcmVzdWx0LT5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC0+ZGV0YWlsc1tqXTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwICYmIGRldGFpbC0+bG9jYXRp
b24gPj0gMCk7CkBAIC0yMDU2LDkgKzIxNjMsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlz
aWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9m
V29yZChwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3RlZFNlbnRlbmNl
ID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2UocCksIGVuZE9mU2VudGVuY2UocCkp
OwotICAgICAgICBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihhZGphY2VudFdvcmRzLCB0
cnVlLCBzZWxlY3RlZFNlbnRlbmNlKTsKKyAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyhhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCks
IHRydWUsIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgdHJ1ZSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoYWRq
YWNlbnRXb3JkcywgZmFsc2UsIGFkamFjZW50V29yZHMpOworICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSwgZmFsc2UsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgdHJ1ZSk7CiAgICAgfQogI2Vsc2UKICAgICAvLyBDaGVjayBzcGVsbGluZyBvZiBvbmUgd29y
ZApAQCAtMjE0MiwxMSArMjI0OSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1tYXIoY29u
c3QgVmlzaWJsCiAKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogCi1zdGF0aWMgdm9pZCBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKEVkaXRvckNsaWVudCogY2xpZW50
LCBSYW5nZSAqc3BlbGxpbmdSYW5nZSwgYm9vbCBtYXJrR3JhbW1hciwgUmFuZ2UgKmdyYW1tYXJS
YW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBib29sIG1hcmtHcmFtbWFyLCBSYW5nZSogZ3JhbW1h
clJhbmdlLCBib29sIHBlcmZvcm1UZXh0Q2hlY2tpbmdSZXBsYWNlbWVudHMpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBzZWxlY3Rpb25zIGFscmVhZHkgZXhwYW5kZWQg
dG8gd29yZCBib3VuZGFyaWVzLgotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgaWYgKCFjbGll
bnQgfHwgIXNwZWxsaW5nUmFuZ2UgfHwgKG1hcmtHcmFtbWFyICYmICFncmFtbWFyUmFuZ2UpKQor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmICghY2xpZW50KCkgfHwgIXNwZWxsaW5n
UmFuZ2UgfHwgKG1hcmtHcmFtbWFyICYmICFncmFtbWFyUmFuZ2UpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgLy8gSWYgd2UncmUgbm90IGluIGFuIGVkaXRhYmxlIG5vZGUsIGJhaWwuCkBA
IC0yMTU5LDQwICsyMjY2LDEyNSBAQCBzdGF0aWMgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5k
QmFkR3JhCiAgICAgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSAwOwogICAgIGludCBncmFt
bWFyUmFuZ2VTdGFydE9mZnNldCA9IDA7CiAgICAgaW50IGdyYW1tYXJSYW5nZUVuZE9mZnNldCA9
IDA7CisgICAgaW50IG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPSAwOworICAgIGludCBwYXJhZ3Jh
cGhMZW5ndGggPSAwOworICAgIGludCBzZWxlY3Rpb25PZmZzZXQgPSAwOworICAgIGJvb2wgc2Vs
ZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hh
bmdlID0gZmFsc2U7CisgICAgYm9vbCBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFy
aWVzID0gZmFsc2U7CiAgICAgU3RyaW5nIHBhcmFncmFwaFN0cmluZzsKKyAgICBSZWZQdHI8UmFu
Z2U+IHBhcmFncmFwaFJhbmdlOwogICAgIAogICAgIGlmIChtYXJrR3JhbW1hcikgewogICAgICAg
ICAvLyBUaGUgc3BlbGxpbmcgcmFuZ2Ugc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiB0aGUgcGFyYWdy
YXBoLWFsaWduZWQgZXh0ZW5zaW9uIG9mIHRoZSBncmFtbWFyIHJhbmdlLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9yUmFuZ2Uo
Z3JhbW1hclJhbmdlLCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCwgcGFyYWdyYXBoU3RyaW5nKTsK
KyAgICAgICAgcGFyYWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhBbGlnbmVkUmFuZ2VGb3JSYW5nZShn
cmFtbWFyUmFuZ2UsIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwog
ICAgICAgICBSZWZQdHI8UmFuZ2U+IG9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHNwZWxsaW5nUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiAgICAg
ICAgIHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
b2Zmc2V0QXNSYW5nZS5nZXQoKSk7CiAgICAgICAgIGdyYW1tYXJSYW5nZUVuZE9mZnNldCA9IGdy
YW1tYXJSYW5nZVN0YXJ0T2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChncmFtbWFy
UmFuZ2UpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFu
Z2UgPSBwYXJhZ3JhcGhBbGlnbmVkUmFuZ2VGb3JSYW5nZShzcGVsbGluZ1JhbmdlLCBzcGVsbGlu
Z1JhbmdlU3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0cmluZyk7CisgICAgICAgIHBhcmFncmFwaFJh
bmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9yUmFuZ2Uoc3BlbGxpbmdSYW5nZSwgc3BlbGxp
bmdSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwogICAgIH0KICAgICBzcGVsbGlu
Z1JhbmdlRW5kT2Zmc2V0ID0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0ICsgVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChzcGVsbGluZ1JhbmdlKTsKLSAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxl
bmd0aCgpID09IDAgfHwgKHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA+PSBzcGVsbGluZ1Jhbmdl
RW5kT2Zmc2V0ICYmICghbWFya0dyYW1tYXIgfHwgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQgPj0g
Z3JhbW1hclJhbmdlRW5kT2Zmc2V0KSkpCisgICAgcGFyYWdyYXBoTGVuZ3RoID0gcGFyYWdyYXBo
U3RyaW5nLmxlbmd0aCgpOworICAgIGlmIChwYXJhZ3JhcGhMZW5ndGggPD0gMCB8fCAoc3BlbGxp
bmdSYW5nZVN0YXJ0T2Zmc2V0ID49IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgKCFtYXJrR3Jh
bW1hciB8fCBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCA+PSBncmFtbWFyUmFuZ2VFbmRPZmZzZXQp
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIGlmIChwZXJmb3JtVGV4dENoZWNraW5nUmVw
bGFjZW1lbnRzKSB7CisgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
VHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uKSB7CisgICAgICAgICAg
ICAvLyBBdHRlbXB0IHRvIHNhdmUgdGhlIGNhcmV0IHBvc2l0aW9uIHNvIHdlIGNhbiByZXN0b3Jl
IGl0IGxhdGVyIGlmIG5lZWRlZAorICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBvZmZzZXRBc1Jh
bmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5k
b2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24g
PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCk7CisgICAgICAgICAgICBvZmZzZXRBc1Jhbmdl
LT5zZXRFbmQoY2FyZXRQb3NpdGlvbi5jb250YWluZXJOb2RlKCksIGNhcmV0UG9zaXRpb24uY29t
cHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlYyk7CisgICAgICAgICAgICBpZiAoIWVjKSB7
CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChvZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXN0b3JlU2VsZWN0
aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVlOyAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkanVzdFNl
bGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMgPSAoc2VsZWN0aW9uT2Zmc2V0ID49IHBhcmFn
cmFwaExlbmd0aCkgPyB0cnVlIDogZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBj
bGllbnQtPmNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RyaW5n
LmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpLCBtYXJrR3JhbW1hciwgcmVz
dWx0cyk7CisgICAgdWludDY0X3QgY2hlY2tpbmdUeXBlcyA9IG1hcmtHcmFtbWFyID8gKFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSA6IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAocGVyZm9ybVRleHRDaGVja2luZ1JlcGxhY2VtZW50
cykgeworICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAg
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAg
aWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBj
aGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0
b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENo
ZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoaXNBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uOworICAgIH0KKyAgICBjbGllbnQoKS0+Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgocGFyYWdyYXBoU3RyaW5nLmNoYXJhY3RlcnMoKSwgcGFyYWdyYXBoTGVuZ3RoLCBjaGVj
a2luZ1R5cGVzLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQq
IHJlc3VsdCA9ICZyZXN1bHRzW2ldOwotICAgICAgICBpZiAocmVzdWx0LT5yZXN1bHRUeXBlID09
IDEgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVz
dWx0LT5sb2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQp
IHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2Nh
dGlvbiA+PSAwKTsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdSYW5nZSwgcmVzdWx0LT5sb2NhdGlvbiAt
IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCwgcmVzdWx0LT5sZW5ndGgpOworICAgICAgICBpbnQg
cmVzdWx0TG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVu
dDsKKyAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdC0+bGVuZ3RoOworICAgICAgICBp
ZiAocmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2Nh
dGlvbiA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1
bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCkgeworICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNw
ZWxsaW5nUmFuZ2UsIHJlc3VsdExvY2F0aW9uIC0gc3BlbGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCBy
ZXN1bHRMZW5ndGgpOwogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWlu
ZXIoZWMpLT5kb2N1bWVudCgpLT5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKLSAgICAgICAgfSBlbHNlIGlmIChtYXJrR3JhbW1hciAm
JiByZXN1bHQtPnJlc3VsdFR5cGUgPT0gMiAmJiByZXN1bHQtPmxvY2F0aW9uIDwgZ3JhbW1hclJh
bmdlRW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGdyYW1t
YXJSYW5nZVN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgg
PiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CisgICAgICAgIH0gZWxzZSBpZiAobWFya0dy
YW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3Vs
dExvY2F0aW9uIDwgZ3JhbW1hclJhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVz
dWx0TGVuZ3RoID4gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgIEFTU0VS
VChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC0+ZGV0YWlscy5zaXplKCk7IGorKykgewog
ICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQtPmRl
dGFpbHNbal07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBk
ZXRhaWwtPmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPmxvY2F0
aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1
bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGdyYW1t
YXJSYW5nZUVuZE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGJh
ZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoZ3JhbW1hclJhbmdlLCByZXN1
bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiAtIGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0
LCBkZXRhaWwtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9uICsg
ZGV0YWlsLT5sb2NhdGlvbiA+PSBncmFtbWFyUmFuZ2VTdGFydE9mZnNldCAmJiByZXN1bHRMb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBncmFtbWFyUmFuZ2VF
bmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBiYWRHcmFtbWFy
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGdyYW1tYXJSYW5nZSwgcmVzdWx0TG9jYXRp
b24gKyBkZXRhaWwtPmxvY2F0aW9uIC0gZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQsIGRldGFpbC0+
bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5l
cihlYyktPmRvY3VtZW50KCktPmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCksIERvY3Vt
ZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHBlcmZvcm1UZXh0Q2hl
Y2tpbmdSZXBsYWNlbWVudHMgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3Bl
bGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA+PSBz
cGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYKKyAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC0+
dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluaworICAgICAgICAgICAgICAgICAgICB8fCByZXN1
bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3RlCisgICAgICAgICAgICAgICAgICAgIHx8
IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaAorICAgICAgICAgICAgICAgICAg
ICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50CisgICAgICAg
ICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bikpIHsKKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGUgcmVzdWx0IHJhbmdlIGp1c3Qg
aGFzIHRvIHRvdWNoIHRoZSBzcGVsbGluZyByYW5nZSwgc28gd2UgY2FuIGhhbmRsZSByZXBsYWNp
bmcgbm9uLXdvcmQgdGV4dCBzdWNoIGFzIHB1bmN0dWF0aW9uLgorICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICBp
bnQgcmVwbGFjZW1lbnRMZW5ndGggPSByZXN1bHQtPnJlcGxhY2VtZW50Lmxlbmd0aCgpOworICAg
ICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gKHJlcGxhY2VtZW50TGVuZ3RoID4gMCk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9SZXBsYWNlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCk7CisgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZShyYW5n
ZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBpZiAoZG9SZXBsYWNl
bWVudCAmJiBzZWxlY3Rpb25Ub1JlcGxhY2UgIT0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVj
dGlvbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVj
dGlvbihzZWxlY3Rpb25Ub1JlcGxhY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uVG9SZXBsYWNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZG9SZXBsYWNlbWVudCA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkb1JlcGxhY2VtZW50
KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
TGluaykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FuRWRpdFJpY2hseSgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUo
bV9mcmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0LT5yZXBsYWNlbWVudCkpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2FuRWRpdCgpICYmIHNob3VsZEluc2VydFRleHQocmVzdWx0LT5yZXBs
YWNlbWVudCwgcmFuZ2VUb1JlcGxhY2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVkKSkg
eworICAgICAgICAgICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVzdWx0LT5y
ZXBsYWNlbWVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdS
YW5nZUVuZE9mZnNldCArPSByZXBsYWNlbWVudExlbmd0aCAtIHJlc3VsdExlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCArPSByZXBsYWNlbWVudExlbmd0
aCAtIHJlc3VsdExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExvY2F0aW9u
IDwgc2VsZWN0aW9uT2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zm
c2V0ICs9IHJlcGxhY2VtZW50TGVuZ3RoIC0gcmVzdWx0TGVuZ3RoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoc2VsZWN0
aW9uQ2hhbmdlZCkgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBwb3NpdGlvbiBpZiB3
ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cworICAgICAgICBzZXRFbmQocGFyYWdyYXBoUmFu
Z2UuZ2V0KCksIGVuZE9mUGFyYWdyYXBoKHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKHBhcmFncmFwaFJh
bmdlLT5zdGFydFBvc2l0aW9uKCkpKSk7CisgICAgICAgIGludCBuZXdMZW5ndGggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICAgICAgaWYgKHJl
c3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPj0gMCAmJiBzZWxl
Y3Rpb25PZmZzZXQgPD0gbmV3TGVuZ3RoKSB7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNl
bGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQo
KSwgMCwgc2VsZWN0aW9uT2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOworICAg
ICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCisgICAg
ICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxzIGZv
ciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sgaXMgdG8gZ28gb25lIHBvc2l0aW9uIGJleW9uZCB0
aGUgbGFzdCByZXBsYWNlbWVudAorICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1v
dmVUbyhtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOworICAgICAgICAgICAgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0yMjA0LDcgKzIzOTYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBpZiAoIWlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGNsaWVudCgpLCBzcGVsbGluZ1NlbGVj
dGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpKTsKKyAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHNwZWxs
aW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIG1hcmtHcmFtbWFyICYmIGlz
R3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCksIGZhbHNlKTsKICNlbHNlCiAgICAgbWFya01pc3NwZWxsaW5ncyhzcGVsbGlu
Z1NlbGVjdGlvbik7CiAgICAgaWYgKG1hcmtHcmFtbWFyKQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNp
b24gNDI4NTgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwMCw2ICsyMDAsMjUgQEAgcHVibGljOgogICAgIHZvaWQgbWFya01pc3NwZWxsaW5ncyhjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1h
ciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKKyAgICB2b2lkIGxvd2Vy
Y2FzZVdvcmQoKTsKKyAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCk7CisgICAgdm9pZCBzaG93U3Vi
c3RpdHV0aW9uc1BhbmVsKCk7CisgICAgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmco
KTsKKyAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CisgICAgYm9vbCBpc0F1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb24oKTsKKyAgICBib29sIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWQoKTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBi
b29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBib29sIGlzQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RW5hYmxlZCgpOworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50KCk7CisgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsK
KyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOworICAgIHZvaWQg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhSYW5nZSogc3BlbGxpbmdS
YW5nZSwgYm9vbCBtYXJrR3JhbW1hciwgUmFuZ2UqIGdyYW1tYXJSYW5nZSwgYm9vbCBwZXJmb3Jt
VGV4dENoZWNraW5nUmVwbGFjZW1lbnRzKTsKKyNlbmRpZgogICAgIHZvaWQgYWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAgICAgdm9p
ZCBzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBzcGVsbGluZ1BhbmVsSXNTaG93
aW5nKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lvbiA0Mjg1OCkK
KysrIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDggKzI5OSw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGUK
IAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoKQogewotICAg
IG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZygpOwogICAgIGRvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICAvLyBTaW5jZSB0aGUgc3BlbGxj
aGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90aGVyIHJlcGxh
Y2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5nZXMuCisgICAg
bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDQyODU4KQorKysgV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MSwxMiArMzQxLDMwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIE5TQXJyYXkqIHBhc3RlYm9hcmRUeXBlc0ZvclNlbGVjdGlvbihG
cmFtZSopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNlV29yZCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBsb3dlcmNhc2VXb3JkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhcGl0YWxpemVXb3Jk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCkgeyB9
CisgICAgdmlydHVhbCBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgeyB9
CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1
dG9tYXRpY0xpbmtEZXRlY3Rpb24oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgeyB9Cisg
ICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbigpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNw
ZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29y
ZChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3Ry
aW5nKGNvbnN0IFVDaGFyKiwgaW50LCBpbnQqLCBpbnQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0
YWlsPiYsIGludCosIGludCopIHsgfQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmly
dHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdBbmRHcmFtbWFyT2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIq
LCBpbnQsIGJvb2wsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgdWludDY0X3Qs
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgeyB9OwogI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25z
dCBHcmFtbWFyRGV0YWlsJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgeyB9CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNDI4NTgpCisrKyBXZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwz
OCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7CiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnTWFrZVVwcGVyQ2FzZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dXBw
ZXJjYXNlV29yZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+bG93
ZXJjYXNlV29yZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnQ2FwaXRhbGl6ZToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FwaXRh
bGl6ZVdvcmQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5z
aG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOgorICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNo
ZXM6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb24oKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0TGlua3M6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1
dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRv
bWF0aWNhbGx5OgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5pbnNwZWN0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiA0Mjg1OCkKKysrIFdlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDIyIEBAIHN0cnVjdCBHcmFt
bWFyRGV0YWlsIHsKICAgICBTdHJpbmcgdXNlckRlc2NyaXB0aW9uOwogfTsKIAorZW51bSBUZXh0
Q2hlY2tpbmdUeXBlIHsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgICAgPSAxIDw8IDEs
CisgICAgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgICAgID0gMSA8PCAyLAorICAgIFRleHRDaGVj
a2luZ1R5cGVMaW5rICAgICAgICA9IDEgPDwgNSwKKyAgICBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUg
ICAgICAgPSAxIDw8IDYsCisgICAgVGV4dENoZWNraW5nVHlwZURhc2ggICAgICAgID0gMSA8PCA3
LAorICAgIFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9IDEgPDwgOCwKKyAgICBUZXh0Q2hl
Y2tpbmdUeXBlQ29ycmVjdGlvbiAgPSAxIDw8IDkKK307CisKIHN0cnVjdCBUZXh0Q2hlY2tpbmdS
ZXN1bHQgewotICAgIGludCByZXN1bHRUeXBlOyAvLyAxIGZvciBzcGVsbGluZywgMiBmb3IgZ3Jh
bW1hcgorICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKICAgICBpbnQgbG9jYXRpb247CiAgICAg
aW50IGxlbmd0aDsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsKKyAgICBTdHJp
bmcgcmVwbGFjZW1lbnQ7CiB9OwogIAogY2xhc3MgRWRpdG9yQ2xpZW50IHsKQEAgLTEzMywxMiAr
MTQ0LDMxIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBsb3dlcmNhc2VXb3JkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYXBpdGFsaXplV29y
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNo
b3cpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQq
IG1pc3NwZWxsaW5nTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9m
U3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+Jiwg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwogI2lm
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdBbmRH
cmFtbWFyT2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGJvb2wgY2hl
Y2tHcmFtbWFyLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGlu
Z1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYg
ZGV0YWlsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3Bl
bGxlZFdvcmQoY29uc3QgU3RyaW5nJikgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJD
b3JlVmlld0ZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVW
aWV3RmFjdG9yeS5oCShyZXZpc2lvbiA0Mjg1OCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29y
ZVZpZXdGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDE4IEBACiAtIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb247CiAtIChOU1N0cmluZyAq
KWNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OwogLSAoTlNTdHJpbmcgKiljb250ZXh0TWVu
dUl0ZW1UYWdSaWdodFRvTGVmdDsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ29y
cmVjdFNwZWxsaW5nQXV0b21hdGljYWxseTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVt
VGFnU3Vic3RpdHV0aW9uc01lbnU7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1No
b3dTdWJzdGl0dXRpb25zOihib29sKXNob3c7CistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0Q29weVBhc3RlOworLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFy
dFF1b3RlczsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXM7Cist
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3M7CistIChOU1N0cmluZyAq
KWNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDsKKy0gKE5TU3RyaW5nICopY29udGV4
dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnTWFrZVVwcGVyQ2FzZTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFn
TWFrZUxvd2VyQ2FzZTsKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6
ZTsKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CiAKIC0g
KE5TU3RyaW5nICopc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0OwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDQyODU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZXh0TWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMSArMTEyLDIxIEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFNwZWxsaW5nQW5kR3IKICAgICAgICAgY29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkpOwogICAgIENvbnRleHRNZW51SXRlbSBn
cmFtbWFyV2l0aFNwZWxsaW5nKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRh
Z0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZywgCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0No
ZWNrR3JhbW1hcldpdGhTcGVsbGluZygpKTsKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAg
IENvbnRleHRNZW51SXRlbSBjb3JyZWN0U3BlbGxpbmcoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29u
dGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSwgCisgICAgICAgIGNv
bnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKSk7CisjZW5kaWYK
IAogICAgIHNwZWxsaW5nQW5kR3JhbW1hck1lbnUuYXBwZW5kSXRlbShzaG93U3BlbGxpbmdQYW5l
bCk7CiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudS5hcHBlbmRJdGVtKGNoZWNrU3BlbGxpbmcp
OworI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudS5h
cHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCkpOworI2VuZGlmCiAgICAgc3BlbGxpbmdBbmRHcmFt
bWFyTWVudS5hcHBlbmRJdGVtKGNoZWNrQXNZb3VUeXBlKTsKICAgICBzcGVsbGluZ0FuZEdyYW1t
YXJNZW51LmFwcGVuZEl0ZW0oZ3JhbW1hcldpdGhTcGVsbGluZyk7CisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkKKyAgICBzcGVsbGluZ0FuZEdyYW1tYXJNZW51LmFwcGVuZEl0ZW0oY29ycmVjdFNw
ZWxsaW5nKTsKKyNlbmRpZgogCiAgICAgc3BlbGxpbmdBbmRHcmFtbWFyTWVudUl0ZW0uc2V0U3Vi
TWVudSgmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7CiB9CkBAIC0xODksNiArMTk5LDQ1IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRleHREaXJlY3Rpb24KIH0KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKK3N0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFN1YnN0aXR1
dGlvbnNTdWJNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgQ29udGV4dE1lbnVJdGVt
JiBzdWJzdGl0dXRpb25zTWVudUl0ZW0pCit7CisgICAgQ29udGV4dE1lbnUgc3Vic3RpdHV0aW9u
c01lbnUocmVzdWx0KTsKKworICAgIENvbnRleHRNZW51SXRlbSBzaG93U3Vic3RpdHV0aW9ucyhB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucywgY29udGV4dE1l
bnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnModHJ1ZSkpOworICAgIENvbnRleHRNZW51SXRlbSBz
bWFydENvcHlQYXN0ZShDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTbWFy
dENvcHlQYXN0ZSwgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKSk7CisgICAgQ29u
dGV4dE1lbnVJdGVtIHNtYXJ0UXVvdGVzKENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0UXVvdGVzLCBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpKTsKKyAg
ICBDb250ZXh0TWVudUl0ZW0gc21hcnREYXNoZXMoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29udGV4
dE1lbnVJdGVtVGFnU21hcnREYXNoZXMsIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCkp
OworICAgIENvbnRleHRNZW51SXRlbSBzbWFydExpbmtzKENoZWNrYWJsZUFjdGlvblR5cGUsIENv
bnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MsIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3Mo
KSk7CisgICAgQ29udGV4dE1lbnVJdGVtIHRleHRSZXBsYWNlbWVudChDaGVja2FibGVBY3Rpb25U
eXBlLCBDb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQsIGNvbnRleHRNZW51SXRlbVRh
Z1RleHRSZXBsYWNlbWVudCgpKTsKKworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0ZW0o
c2hvd1N1YnN0aXR1dGlvbnMpOworICAgIHN1YnN0aXR1dGlvbnNNZW51LmFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydENv
cHlQYXN0ZSk7CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydFF1b3Rlcyk7
CisgICAgc3Vic3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydERhc2hlcyk7CisgICAgc3Vi
c3RpdHV0aW9uc01lbnUuYXBwZW5kSXRlbShzbWFydExpbmtzKTsKKyAgICBzdWJzdGl0dXRpb25z
TWVudS5hcHBlbmRJdGVtKHRleHRSZXBsYWNlbWVudCk7CisKKyAgICBzdWJzdGl0dXRpb25zTWVu
dUl0ZW0uc2V0U3ViTWVudSgmc3Vic3RpdHV0aW9uc01lbnUpOworfQorCitzdGF0aWMgdm9pZCBj
cmVhdGVBbmRBcHBlbmRUcmFuc2Zvcm1hdGlvbnNTdWJNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgQ29udGV4dE1lbnVJdGVtJiB0cmFuc2Zvcm1hdGlvbnNNZW51SXRlbSkKK3sKKyAg
ICBDb250ZXh0TWVudSB0cmFuc2Zvcm1hdGlvbnNNZW51KHJlc3VsdCk7CisKKyAgICBDb250ZXh0
TWVudUl0ZW0gbWFrZVVwcGVyQ2FzZShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdNYWtl
VXBwZXJDYXNlLCBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCkpOworICAgIENvbnRl
eHRNZW51SXRlbSBtYWtlTG93ZXJDYXNlKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ01h
a2VMb3dlckNhc2UsIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKSk7CisgICAgQ29u
dGV4dE1lbnVJdGVtIGNhcGl0YWxpemUoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ2Fw
aXRhbGl6ZSwgY29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpKTsKKworICAgIHRyYW5zZm9y
bWF0aW9uc01lbnUuYXBwZW5kSXRlbShtYWtlVXBwZXJDYXNlKTsKKyAgICB0cmFuc2Zvcm1hdGlv
bnNNZW51LmFwcGVuZEl0ZW0obWFrZUxvd2VyQ2FzZSk7CisgICAgdHJhbnNmb3JtYXRpb25zTWVu
dS5hcHBlbmRJdGVtKGNhcGl0YWxpemUpOworCisgICAgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0u
c2V0U3ViTWVudSgmdHJhbnNmb3JtYXRpb25zTWVudSk7Cit9CisjZW5kaWYKKwogc3RhdGljIGJv
b2wgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoRnJhbWUqIGZyYW1lKQogewogICAgIC8v
IEN1cnJlbnQgYWxnb3JpdGhtOiBsb29rIGZvciBhIGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3Qg
YSBzZXBhcmF0b3IuCkBAIC00MDcsNiArNDU2LDE2IEBAIHZvaWQgQ29udGV4dE1lbnU6OnBvcHVs
YXRlKCkKICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFNwZWxsaW5nU3ViTWVudShtX2hpdFRl
c3RSZXN1bHQsIFNwZWxsaW5nTWVudUl0ZW0pOwogICAgICAgICAgICAgYXBwZW5kSXRlbShTcGVs
bGluZ01lbnVJdGVtKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAg
ICAgICBDb250ZXh0TWVudUl0ZW0gc3Vic3RpdHV0aW9uc01lbnVJdGVtKFN1Ym1lbnVUeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSwgCisgICAgICAgICAgICAgICAgY29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKSk7CisgICAgICAgICAgICBjcmVhdGVB
bmRBcHBlbmRTdWJzdGl0dXRpb25zU3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIHN1YnN0aXR1dGlv
bnNNZW51SXRlbSk7CisgICAgICAgICAgICBhcHBlbmRJdGVtKHN1YnN0aXR1dGlvbnNNZW51SXRl
bSk7CisgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0o
U3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUsIAorICAg
ICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKSk7Cisg
ICAgICAgICAgICBjcmVhdGVBbmRBcHBlbmRUcmFuc2Zvcm1hdGlvbnNTdWJNZW51KG1faGl0VGVz
dFJlc3VsdCwgdHJhbnNmb3JtYXRpb25zTWVudUl0ZW0pOworICAgICAgICAgICAgYXBwZW5kSXRl
bSh0cmFuc2Zvcm1hdGlvbnNNZW51SXRlbSk7CisjZW5kaWYKICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbSAgRm9udE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSwgCiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSk7CiAg
ICAgICAgICAgICBjcmVhdGVBbmRBcHBlbmRGb250U3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIEZv
bnRNZW51SXRlbSk7CkBAIC01ODQsNiArNjQzLDUzIEBAIHZvaWQgQ29udGV4dE1lbnU6OmNoZWNr
T3JFbmFibGVJZk5lZWRlZCgKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmc6CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0
b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJy
ZWFrOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdT
dWJzdGl0dXRpb25zTWVudToKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zv
cm1hdGlvbnNNZW51OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6CisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRv
cigpLT5zdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSkKKyAgICAgICAgICAgICAgICBpdGVt
LnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGZhbHNlKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyh0cnVlKSk7CisgICAgICAgICAgICBzaG91bGRFbmFi
bGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2U6CisgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKKyAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdDYXBpdGFsaXplOgorICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgorI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZCgpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToKKyNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQo
KTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU21hcnREYXNoZXM6CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZy
YW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworI2Vu
ZGlmCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdT
bWFydExpbmtzOgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKTsKKyNlbmRpZgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2Vt
ZW50OgorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQorICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkt
PmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOworI2VuZGlmCisgICAgICAgICAg
ICBicmVhazsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdHb0JhY2s6CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+bG9h
ZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZCgtMSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Nv
bnRleHRNZW51SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmgJKHJldmlzaW9uIDQyODU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwyMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0LAog
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCwKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHksCisgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51LAor
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucywKKyAgICAgICAgQ29u
dGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUsCisgICAgICAgIENvbnRleHRNZW51SXRlbVRh
Z1NtYXJ0UXVvdGVzLAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcywKKyAg
ICAgICAgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcywKKyAgICAgICAgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dFJlcGxhY2VtZW50LAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zv
cm1hdGlvbnNNZW51LAorICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlLAor
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlLAorICAgICAgICBDb250ZXh0
TWVudUl0ZW1UYWdDYXBpdGFsaXplLAorI2VuZGlmCiAgICAgICAgIENvbnRleHRNZW51SXRlbUJh
c2VBcHBsaWNhdGlvblRhZyA9IDEwMDAwCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDQyODU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpOwog
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCk7CiAgICAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZygpOworICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCk7CisgICAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7CisgICAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1NtYXJ0UXVvdGVzKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVz
KCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsKKyAgICBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CisgICAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKTsKKyAgICBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpOworICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdN
YWtlTG93ZXJDYXNlKCk7CisgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUo
KTsKICNlbmRpZgogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgp
OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW0J
KHJldmlzaW9uIDQyODU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5n
c01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMywxMDIgQEAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKK3sK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZp
ZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGlu
Z0F1dG9tYXRpY2FsbHldOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9u
c01lbnUoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4g
W1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU3Vi
c3RpdHV0aW9uc01lbnVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1
dGlvbnMoYm9vbCBzaG93KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAg
ICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJ
dGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6c2hvd107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTbWFydENvcHlQYXN0ZSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwor
ICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydENvcHlQYXN0ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFy
dFF1b3RlcygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdT
bWFydFF1b3Rlc107CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpCit7
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlc107
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCkKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3NdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rv
cnldIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudF07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rv
cnldIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnVdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5
XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01ha2VMb3dlckNhc2UoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdD
YXBpdGFsaXplKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0
dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRh
Z0NhcGl0YWxpemVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQo
KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFdlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gNDI4NTgpCisr
KyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDkt
MDQtMjQgIERvdWdsYXMgUi4gRGF2aWRzb24gIDxkZGF2aWRzb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGxvY2FsaXphYmxlIHN0cmluZ3MgZm9yIAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjcyNDEwNj4gV2ViVmlld3MgbmVlZCB0byBpbXBsZW1lbnQgdGV4dCBjaGVja2luZworCisgICAg
ICAgIFJldmlld2VkIGJ5IEp1c3RpbiBHYXJjaWEuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3M6CisKIDIwMDktMDQtMjMgIEtldmluIERlY2tlciAgPGtkZWNr
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5k
ZXg6IFdlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gNDI4
NTgpCisrKyBXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAALwAqACAAQgBvAGwAZAAgAGMAbwBuAHQAZQB4AHQA
IABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAEIAbwBsAGQAIgAgAD0AIAAiAEIAbwBsAGQA
IgA7AAogAAorAC8AKgAgAEMAYQBwAGkAdABhAGwAaQB6AGUAIABjAG8AbgB0AGUAeAB0ACAAbQBl
AG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBDAGEAcABpAHQAYQBsAGkAegBlACIAIAA9ACAAIgBD
AGEAcABpAHQAYQBsAGkAegBlACIAOwAKKwAKIAAvACoAIABVAG4AZABvACAAYQBjAHQAaQBvAG4A
IABuAGEAbQBlACAAKgAvAAogACIAQwBlAG4AdABlAHIAIAAoAFUAbgBkAG8AIABhAGMAdABpAG8A
bgAgAG4AYQBtAGUAKQAiACAAPQAgACIAQwBlAG4AdABlAHIAIgA7AAogAApAQCAtNjcsNiArNzAs
OSBAQAogAC8AKgAgAEMAbwBwAHkAIABMAGkAbgBrACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUA
IABpAHQAZQBtACAAKgAvAAogACIAQwBvAHAAeQAgAEwAaQBuAGsAIgAgAD0AIAAiAEMAbwBwAHkA
IABMAGkAbgBrACIAOwAKIAAKKwAvACoAIABDAG8AcgByAGUAYwB0ACAAUwBwAGUAbABsAGkAbgBn
ACAAQQB1AHQAbwBtAGEAdABpAGMAYQBsAGwAeQAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAA
aQB0AGUAbQAgACoALwAKKwAiAEMAbwByAHIAZQBjAHQAIABTAHAAZQBsAGwAaQBuAGcAIABBAHUA
dABvAG0AYQB0AGkAYwBhAGwAbAB5ACIAIAA9ACAAIgBDAG8AcgByAGUAYwB0ACAAUwBwAGUAbABs
AGkAbgBnACAAQQB1AHQAbwBtAGEAdABpAGMAYQBsAGwAeQAiADsACisACiAALwAqACAAVQBuAGQA
bwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAKIAAiAEMAcgBlAGEAdABlACAATABpAG4A
awAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQApACIAIAA9ACAAIgBDAHIAZQBh
AHQAZQAgAEwAaQBuAGsAIgA7AAogAApAQCAtMTA5LDYgKzExNSw5IEBACiAALwAqACAAbQBlAG4A
dQAgAGkAdABlAG0AIAB0AGkAdABsAGUAIAAqAC8ACiAAIgBIAGkAZABlACAAUwBwAGUAbABsAGkA
bgBnACAAYQBuAGQAIABHAHIAYQBtAG0AYQByACIAIAA9ACAAIgBIAGkAZABlACAAUwBwAGUAbABs
AGkAbgBnACAAYQBuAGQAIABHAHIAYQBtAG0AYQByACIAOwAKIAAKKwAvACoAIABtAGUAbgB1ACAA
aQB0AGUAbQAgAHQAaQB0AGwAZQAgACoALwAKKwAiAEgAaQBkAGUAIABTAHUAYgBzAHQAaQB0AHUA
dABpAG8AbgBzACIAIAA9ACAAIgBIAGkAZABlACAAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAi
ADsACisACiAALwAqACAAVABoAGUAIABkAGUAZgBhAHUAbAB0ACwAIABkAGUAZgBhAHUAbAB0ACAA
YwBoAGEAcgBhAGMAdABlAHIAIABlAG4AYwBvAGQAaQBuAGcAIAAqAC8ACiAAIgBJAFMATwAtADgA
OAA1ADkALQAxACIAIAA9ACAAIgBJAFMATwAtADgAOAA1ADkALQAxACIAOwAKIAAKQEAgLTE1NCw2
ICsxNjMsMTIgQEAKIAAvACoAIABVAG4AZABvACAAYQBjAHQAaQBvAG4AIABuAGEAbQBlACAAKgAv
AAogACIATABvAHcAZQByACAAQgBhAHMAZQBsAGkAbgBlACAAKABVAG4AZABvACAAYQBjAHQAaQBv
AG4AIABuAGEAbQBlACkAIgAgAD0AIAAiAEwAbwB3AGUAcgAgAEIAYQBzAGUAbABpAG4AZQAiADsA
CiAACisALwAqACAATQBhAGsAZQAgAEwAbwB3AGUAcgAgAEMAYQBzAGUAIABjAG8AbgB0AGUAeAB0
ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBNAGEAawBlACAATABvAHcAZQByACAAQwBh
AHMAZQAiACAAPQAgACIATQBhAGsAZQAgAEwAbwB3AGUAcgAgAEMAYQBzAGUAIgA7AAorAAorAC8A
KgAgAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACAAYwBvAG4AdABlAHgAdAAgAG0AZQBu
AHUAIABpAHQAZQBtACAAKgAvAAorACIATQBhAGsAZQAgAFUAcABwAGUAcgAgAEMAYQBzAGUAIgAg
AD0AIAAiAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACIAOwAKKwAKIAAvACoAIABOAG8A
IABHAHUAZQBzAHMAZQBzACAARgBvAHUAbgBkACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABp
AHQAZQBtACAAKgAvAAogACIATgBvACAARwB1AGUAcwBzAGUAcwAgAEYAbwB1AG4AZAAiACAAPQAg
ACIATgBvACAARwB1AGUAcwBzAGUAcwAgAEYAbwB1AG4AZAAiADsACiAACkBAIC0yNTAsMTQgKzI2
NSwyOSBAQAogAC8AKgAgAFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAIAAqAC8ACiAA
IgBTAGUAdAAgAFcAcgBpAHQAaQBuAGcAIABEAGkAcgBlAGMAdABpAG8AbgAgACgAVQBuAGQAbwAg
AGEAYwB0AGkAbwBuACAAbgBhAG0AZQApACIAIAA9ACAAIgBTAGUAdAAgAFcAcgBpAHQAaQBuAGcA
IABEAGkAcgBlAGMAdABpAG8AbgAiADsACiAACisALwAqACAAUwBoAG8AdwAgAGMAbwBsAG8AcgBz
ACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAUwBoAG8AdwAg
AEMAbwBsAG8AcgBzACIAIAA9ACAAIgBTAGgAbwB3ACAAQwBvAGwAbwByAHMAIgA7AAorAAogAC8A
KgAgAFMAaABvAHcAIABmAG8AbgB0AHMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABl
AG0AIAAqAC8ACiAAIgBTAGgAbwB3ACAARgBvAG4AdABzACIAIAA9ACAAIgBTAGgAbwB3ACAARgBv
AG4AdABzACIAOwAKIAAKIAAvACoAIABtAGUAbgB1ACAAaQB0AGUAbQAgAHQAaQB0AGwAZQAgACoA
LwAKIAAiAFMAaABvAHcAIABTAHAAZQBsAGwAaQBuAGcAIABhAG4AZAAgAEcAcgBhAG0AbQBhAHIA
IgAgAD0AIAAiAFMAaABvAHcAIABTAHAAZQBsAGwAaQBuAGcAIABhAG4AZAAgAEcAcgBhAG0AbQBh
AHIAIgA7AAogAAotAC8AKgAgAFMAaABvAHcAIABjAG8AbABvAHIAcwAgAGMAbwBuAHQAZQB4AHQA
IABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKLQAiAFMAaABvAHcAIABjAG8AbABvAHIAcwAiACAA
PQAgACIAUwBoAG8AdwAgAGMAbwBsAG8AcgBzACIAOwAKKwAvACoAIABtAGUAbgB1ACAAaQB0AGUA
bQAgAHQAaQB0AGwAZQAgACoALwAKKwAiAFMAaABvAHcAIABTAHUAYgBzAHQAaQB0AHUAdABpAG8A
bgBzACIAIAA9ACAAIgBTAGgAbwB3ACAAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAiADsACisA
CisALwAqACAAUwBtAGEAcgB0ACAAQwBvAHAAeQAvAFAAYQBzAHQAZQAgAGMAbwBuAHQAZQB4AHQA
IABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFMAbQBhAHIAdAAgAEMAbwBwAHkALwBQAGEA
cwB0AGUAIgAgAD0AIAAiAFMAbQBhAHIAdAAgAEMAbwBwAHkALwBQAGEAcwB0AGUAIgA7AAorAAor
AC8AKgAgAFMAbQBhAHIAdAAgAEQAYQBzAGgAZQBzACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUA
IABpAHQAZQBtACAAKgAvAAorACIAUwBtAGEAcgB0ACAARABhAHMAaABlAHMAIgAgAD0AIAAiAFMA
bQBhAHIAdAAgAEQAYQBzAGgAZQBzACIAOwAKKwAKKwAvACoAIABTAG0AYQByAHQAIABMAGkAbgBr
AHMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBTAG0AYQBy
AHQAIABMAGkAbgBrAHMAIgAgAD0AIAAiAFMAbQBhAHIAdAAgAEwAaQBuAGsAcwAiADsACisACisA
LwAqACAAUwBtAGEAcgB0ACAAUQB1AG8AdABlAHMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAg
AGkAdABlAG0AIAAqAC8ACisAIgBTAG0AYQByAHQAIABRAHUAbwB0AGUAcwAiACAAPQAgACIAUwBt
AGEAcgB0ACAAUQB1AG8AdABlAHMAIgA7AAogAAogAC8AKgAgAFMAcABlAGUAYwBoACAAYwBvAG4A
dABlAHgAdAAgAHMAdQBiAC0AbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBTAHAAZQBlAGMA
aAAiACAAPQAgACIAUwBwAGUAZQBjAGgAIgA7AApAQCAtMzA0LDkgKzMzNCwxNSBAQAogAC8AKgAg
AFUAbgBkAG8AIABhAGMAdABpAG8AbgAgAG4AYQBtAGUAIAAqAC8ACiAAIgBTAHUAYgBzAGMAcgBp
AHAAdAAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQApACIAIAA9ACAAIgBTAHUA
YgBzAGMAcgBpAHAAdAAiADsACiAACisALwAqACAAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAg
AGMAbwBuAHQAZQB4AHQAIABzAHUAYgAtAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAUwB1
AGIAcwB0AGkAdAB1AHQAaQBvAG4AcwAiACAAPQAgACIAUwB1AGIAcwB0AGkAdAB1AHQAaQBvAG4A
cwAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0AZQAgACoALwAK
IAAiAFMAdQBwAGUAcgBzAGMAcgBpAHAAdAAgACgAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBh
AG0AZQApACIAIAA9ACAAIgBTAHUAcABlAHIAcwBjAHIAaQBwAHQAIgA7AAogAAorAC8AKgAgAFQA
ZQB4AHQAIABSAGUAcABsAGEAYwBlAG0AZQBuAHQAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAg
AGkAdABlAG0AIAAqAC8ACisAIgBUAGUAeAB0ACAAUgBlAHAAbABhAGMAZQBtAGUAbgB0ACIAIAA9
ACAAIgBUAGUAeAB0ACAAUgBlAHAAbABhAGMAZQBtAGUAbgB0ACIAOwAKKwAKIAAvACoAIABXAGUA
YgBLAGkAdABFAHIAcgBvAHIAQwBhAG4AbgBvAHQAUwBoAG8AdwBVAFIATAAgAGQAZQBzAGMAcgBp
AHAAdABpAG8AbgAgACoALwAKIAAiAFQAaABlACAAVQBSAEwAIABjAGEAbiAZAHQAIABiAGUAIABz
AGgAbwB3AG4AIgAgAD0AIAAiAFQAaABlACAAVQBSAEwAIABjAGEAbiAZAHQAIABiAGUAIABzAGgA
bwB3AG4AIgA7AAogAApAQCAtMzQwLDYgKzM3Niw5IEBACiAALwAqACAAcAByAG8AbQBwAHQAIABz
AHQAcgBpAG4AZwAgAGkAbgAgAGEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgAgAHAAYQBuAGUA
bAAgACoALwAKIAAiAFQAbwAgAHYAaQBlAHcAIAB0AGgAaQBzACAAcABhAGcAZQAsACAAeQBvAHUA
IABtAHUAcwB0ACAAbABvAGcAIABpAG4AIAB0AG8AIAB0AGgAaQBzACAAYQByAGUAYQAgAG8AbgAg
ACUAQAA6ACIAIAA9ACAAIgBUAG8AIAB2AGkAZQB3ACAAdABoAGkAcwAgAHAAYQBnAGUALAAgAHkA
bwB1ACAAbQB1AHMAdAAgAGwAbwBnACAAaQBuACAAdABvACAAdABoAGkAcwAgAGEAcgBlAGEAIABv
AG4AIAAlAEAAOgAiADsACiAACisALwAqACAAVAByAGEAbgBzAGYAbwByAG0AYQB0AGkAbwBuAHMA
IABjAG8AbgB0AGUAeAB0ACAAcwB1AGIALQBtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFQA
cgBhAG4AcwBmAG8AcgBtAGEAdABpAG8AbgBzACIAIAA9ACAAIgBUAHIAYQBuAHMAZgBvAHIAbQBh
AHQAaQBvAG4AcwAiADsACisACiAALwAqACAAVQBuAGQAbwAgAGEAYwB0AGkAbwBuACAAbgBhAG0A
ZQAgACoALwAKIAAiAFQAdQByAG4AIABPAGYAZgAgAEsAZQByAG4AaQBuAGcAIAAoAFUAbgBkAG8A
IABhAGMAdABpAG8AbgAgAG4AYQBtAGUAKQAiACAAPQAgACIAVAB1AHIAbgAgAE8AZgBmACAASwBl
AHIAbgBpAG4AZwAiADsACiAACkBAIC01NjcsNCArNjA2LDMgQEAKIAAKIAAvACoAIABhAGMAYwBl
AHMAcwBpAGIAaQBsAGkAdAB5ACAAcgBvAGwAZQAgAGQAZQBzAGMAcgBpAHAAdABpAG8AbgAgAGYA
bwByACAAdwBlAGIAIABhAHIAZQBhACAAKgAvAAogACIAdwBlAGIAIABhAHIAZQBhACIAIAA9ACAA
IgB3AGUAYgAgAGEAcgBlAGEAIgA7AAotAApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyODU4KQorKysgV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NyBAQAorMjAwOS0w
NC0yNCAgRG91Z2xhcyBSLiBEYXZpZHNvbiAgPGRkYXZpZHNvQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgdGhlIHZhcmlvdXMgc3dpdGNoZXMgYW5kIGNvbnRleHQgbWVudSBpdGVtcyBuZWVkZWQg
Zm9yCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NzI0MTA2PiBXZWJWaWV3cyBuZWVkIHRvIGlt
cGxlbWVudCB0ZXh0IGNoZWNraW5nCisgICAgICAgIGFuZCBhZG9wdCB1cGRhdGVQYW5lbHMgaW4g
cGxhY2Ugb2Ygb2xkIFNQSSBfdXBkYXRlR3JhbW1hci4KKworICAgICAgICBSZXZpZXdlZCBieSBK
dXN0aW4gR2FyY2lhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW06CisgICAgICAgIChmaXhNZW51c1JlY2VpdmVkRnJvbU9sZENsaWVudHMpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6Omxvd2VyY2FzZVdvcmQp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjYXBpdGFsaXplV29yZCk6CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OnNob3dTdWJzdGl0dXRpb25zUGFuZWwpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSk6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24pOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbik6Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6dG9n
Z2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZp
ZXdGYWN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBjb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzXSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRl
bVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHldKToKKyAgICAgICAgKC1bV2ViVmlld0Zh
Y3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnVdKToKKyAgICAgICAgKC1b
V2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3Rl
XSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVv
dGVzXSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
RGFzaGVzXSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0TGlua3NdKToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgY29udGV4dE1lbnVJdGVtVGFn
VGV4dFJlcGxhY2VtZW50XSk6CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IGNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnVdKToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3Rvcnkg
Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZV0pOgorICAgICAgICAoLVtXZWJWaWV3RmFj
dG9yeSBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlXSk6CisgICAgICAgICgtW1dlYlZp
ZXdGYWN0b3J5IGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemVdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBp
c0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyBzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25F
bmFibGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpc0F1dG9tYXRpY1RleHRSZXBs
YWNlbWVudEVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0QXV0b21hdGljVGV4
dFJlcGxhY2VtZW50RW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdG9nZ2xlQXV0
b21hdGljVGV4dFJlcGxhY2VtZW50Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpc0F1dG9t
YXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
c2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
d1ByaXZhdGUgaW5pdF0pOgorICAgICAgICAoLVtXZWJWaWV3IHZhbGlkYXRlVXNlckludGVyZmFj
ZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0R3JhbW1hckNo
ZWNraW5nRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHRvZ2dsZUF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHRvZ2dsZUF1dG9t
YXRpY0xpbmtEZXRlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdG9nZ2xlQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHRvZ2dsZUF1dG9t
YXRpY1RleHRSZXBsYWNlbWVudDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHRvZ2dsZUF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmg6CisKIDIwMDktMDQtMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkocmV2aXNp
b24gNDI4NTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDMxIEBAIHN0YXRpYyB2b2lkIGZp
eE1lbnVzUmVjZWl2ZWRGcm9tT2xkQ2xpZW4KICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBX
ZWJNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OwogICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlz
RXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51
SXRlbVRhZ1JpZ2h0VG9MZWZ0XV0pCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVu
dUl0ZW1UYWdSaWdodFRvTGVmdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFs
VG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1U
YWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5XV0pCisgICAgICAgICAgICAgICAgbW9kZXJu
VGFnID0gV2ViTWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OworICAgICAg
ICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51XV0pCisgICAg
ICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFj
dG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczp0
cnVlXV0KKyAgICAgICAgICAgICAgICAgICAgIHx8IFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tX
ZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3Rp
dHV0aW9uczpmYWxzZV1dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnU2hvd1N1YnN0aXR1dGlvbnM7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVh
bFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVt
VGFnU21hcnRDb3B5UGFzdGVdXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51
SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1
YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0UXVvdGVzXV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0
ZW1UYWdTbWFydFF1b3RlczsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9T
dHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdT
bWFydERhc2hlc11dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFn
U21hcnREYXNoZXM7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5n
OltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRM
aW5rc11dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRM
aW5rczsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1l
bnRdXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1RleHRSZXBs
YWNlbWVudDsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tX
ZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1h
dGlvbnNNZW51XV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdU
cmFuc2Zvcm1hdGlvbnNNZW51OworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxU
b1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRh
Z01ha2VVcHBlckNhc2VdXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRl
bVRhZ01ha2VVcHBlckNhc2U7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRv
U3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFn
TWFrZUxvd2VyQ2FzZV1dKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnTWFrZUxvd2VyQ2FzZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9T
dHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdD
YXBpdGFsaXplXV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdD
YXBpdGFsaXplOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBl
eHBlY3QgV2ViTWVudUl0ZW1UYWdPdGhlciBmb3IgYW55IGl0ZW1zIG90aGVyIHRoYW4gdGhlIG9u
ZXMgd2UgZXhwbGljaXRseSBoYW5kbGUuCiAgICAgICAgICAgICAvLyBUaGVyZSdzIG5vdGhpbmcg
dG8gcHJldmVudCBhbiBhcHAgZnJvbSBhcHBseWluZyB0aGlzIHRhZywgYnV0IHRoZXkgYXJlIHN1
cHBvc2VkIHRvIG9ubHkKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gNDI4NTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwyNSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBOU0FycmF5KiBwYXN0ZWJvYXJkVHlwZXNGb3JTZWxlY3Rpb24oV2Vi
Q29yZTo6RnJhbWUqKTsKICNlbmRpZgogICAgIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIHZpcnR1YWwgdm9pZCB1
cHBlcmNhc2VXb3JkKCk7CisgICAgdmlydHVhbCB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0
aXR1dGlvbnNQYW5lbChib29sIHNob3cpOworICAgIHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25z
UGFuZWxJc1Nob3dpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxl
dGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7CisgICAgdmly
dHVhbCBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworICAgIHZpcnR1YWwg
Ym9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CisgICAgdmlydHVhbCBib29sIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0
b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyNlbmRpZgorCiAgICAgdmlydHVh
bCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKCk7CiAKQEAgLTEwMSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVu
Z3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1h
ckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a1NwZWxsaW5nQW5kR3JhbW1hck9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCBib29sIGNoZWNrR3JhbW1hciwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBX
VEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KTsKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZp
c2lvbiA0Mjg1OCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNiArMzE5LDkyIEBAIE5TQXJyYXkqIFdlYkVkaXRv
ckNsaWVudDo6cGFzdGVib2FyZFR5cGUKIH0KICNlbmRpZgogCisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6dXBwZXJjYXNlV29yZCgpCit7CisgICAgW21fd2ViVmlldyB1cHBlcmNhc2VX
b3JkOm5pbF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpsb3dlcmNhc2VXb3JkKCkKK3sK
KyAgICBbbV93ZWJWaWV3IGxvd2VyY2FzZVdvcmQ6bmlsXTsKK30KKwordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNhcGl0YWxpemVXb3JkKCkKK3sKKyAgICBbbV93ZWJWaWV3IGNhcGl0YWxpemVXb3Jk
Om5pbF07Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93U3Vic3RpdHV0aW9uc1BhbmVs
KGJvb2wgc2hvdykKK3sKKyAgICBOU1BhbmVsICpzcGVsbGluZ1BhbmVsID0gW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHN1YnN0aXR1dGlvbnNQYW5lbF07CisgICAgaWYgKHNo
b3cpCisgICAgICAgIFtzcGVsbGluZ1BhbmVsIG9yZGVyRnJvbnQ6bmlsXTsKKyAgICBlbHNlCisg
ICAgICAgIFtzcGVsbGluZ1BhbmVsIG9yZGVyT3V0Om5pbF07Cit9CisKK2Jvb2wgV2ViRWRpdG9y
Q2xpZW50OjpzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKQoreworICAgIHJldHVybiBbW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHN1YnN0aXR1dGlvbnNQYW5lbF0gaXNW
aXNpYmxlXTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVs
ZXRlKCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlOm5pbF07Cit9
CisKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YmxlZCgpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbkVuYWJsZWRdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb24oKQoreworICAgIFttX3dlYlZpZXcgdG9nZ2xlQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb246bmlsXTsKK30KKworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzQXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IGlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpCit7CisgICAgW21fd2ViVmlldyB0b2dnbGVB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uOm5pbF07Cit9CisKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojpp
c0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKK3sKKyAgICByZXR1cm4gW21fd2Vi
VmlldyBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkXTsKK30KKwordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKQoreworICAgIFtt
X3dlYlZpZXcgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjpuaWxdOworfQorCitib29s
IFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKK3sK
KyAgICByZXR1cm4gW21fd2ViVmlldyBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRd
OworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50KCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDpu
aWxdOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb25FbmFibGVkKCkKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBpc0F1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWRdOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xl
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHRvZ2dsZUF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjpuaWxdOworfQorI2VuZGlmCisKIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUgKm5vZGUsIFJhbmdlKiByZXBsYWNpbmdS
YW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogeyAKICAgICByZXR1cm4gW1tt
X3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgc2hv
dWxkSW5zZXJ0Tm9kZTpraXQobm9kZSkgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0KHJlcGxhY2luZ1Jh
bmdlKSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilnaXZlbkFjdGlvbl07CkBAIC01
OTUsMjcgKzY4MSwyNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdBbmRHcmFt
bWFyT2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIGJvb2wgY2hlY2tH
cmFtbWFyLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRl
eHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU1RleHRDaGVja2luZ1R5
cGVzIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoTlNUZXh0Q2hlY2tpbmdUeXBlT3J0
aG9ncmFwaHkgfCBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IE5TVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXIpIDogKE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5IHwgTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcpOwotICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nIHJhbmdl
Ok5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOmNoZWNraW5nVHlwZXMg
b3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOworICAgIE5TQXJyYXkgKmluY29t
aW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0
cmluZzp0ZXh0U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0p
IHR5cGVzOihjaGVja2luZ1R5cGVzfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRp
b25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkg
b3J0aG9ncmFwaHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07CiAgICAgW3RleHRTdHJpbmcgcmVsZWFz
ZV07CiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5j
b21pbmdSZXN1bHRzKSB7CiAgICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdS
ZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtp
bmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQgJiYgcmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAg
IGlmIChOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlKSB7CisgICAgICAg
IGlmIChOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyA9PSByZXN1bHRUeXBlICYmIDAgIT0gKGNo
ZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzdWx0VHlw
ZSA9IDE7CisgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZzsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwog
ICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hlY2tHcmFt
bWFyICYmIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVzdWx0VHlwZSkgeworICAgICAg
ICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgPT0gcmVzdWx0VHlwZSAmJiAw
ICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpk
ZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKLSAgICAgICAgICAgIHJl
c3VsdC5yZXN1bHRUeXBlID0gMjsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXI7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0
YWlscykgewpAQCAtNjM0LDYgKzcxOSw0MSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tT
cGVsbGluZ0FuZEdyCiAgICAgICAgICAgICAgICAgcmVzdWx0LmRldGFpbHMuYXBwZW5kKGRldGFp
bCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwor
ICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENoZWNraW5nVHlwZUxpbmsgPT0gcmVzdWx0VHlwZSAm
JiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlTGluaykpIHsKKyAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGVMaW5rOworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0g
cmVzdWx0UmFuZ2UubG9jYXRpb247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWlu
Z1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgPT0g
cmVzdWx0VHlwZSAmJiAwICE9IChjaGVja2luZ1R5cGVzICYgTlNUZXh0Q2hlY2tpbmdUeXBlUXVv
dGUpKSB7CisgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OworICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1l
bnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOworICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIGlmIChOU1RleHRDaGVja2luZ1R5
cGVEYXNoID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBlcyAmIE5TVGV4dENoZWNr
aW5nVHlwZURhc2gpKSB7CisgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlRGFzaDsKKyAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOworICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CisgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICB9IGVsc2UgaWYgKE5TVGV4dENo
ZWNraW5nVHlwZVJlcGxhY2VtZW50ID09IHJlc3VsdFR5cGUgJiYgMCAhPSAoY2hlY2tpbmdUeXBl
cyAmIE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkgeworICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50OworICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247CisgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0
IHJlcGxhY2VtZW50U3RyaW5nXTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7
CisgICAgICAgIH0gZWxzZSBpZiAoTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9PSByZXN1
bHRUeXBlICYmIDAgIT0gKGNoZWNraW5nVHlwZXMgJiBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0
aW9uKSkgeworICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICAgICAg
ICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgICAgICAg
ICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgICAgIHJl
c3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOworICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCShyZXZpc2lv
biA0Mjg1OCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyMSw3ICszMjEsNyBAQAogCiAtIChOU1N0cmluZyAqKWNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMKIHsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IGNv
bG9ycyIsICJTaG93IGNvbG9ycyBjb250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBVSV9T
VFJJTkcoIlNob3cgQ29sb3JzIiwgIlNob3cgY29sb3JzIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKIC0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudQpAQCAtMzY4LDYg
KzM2OCw2OCBAQAogICAgIHJldHVybiBVSV9TVFJJTkcoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQg
dG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCistIChOU1N0cmluZyAqKWNvbnRleHRN
ZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiLCAiQ29ycmVjdCBTcGVsbGlu
ZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICop
Y29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVt
Iik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlv
bnM6KGJvb2wpc2hvdworeworICAgIGlmIChzaG93KSAKKyAgICAgICAgcmV0dXJuIFVJX1NUUklO
RygiU2hvdyBTdWJzdGl0dXRpb25zIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworICAgIHJldHVybiBV
SV9TVFJJTkcoIkhpZGUgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0ZW0gdGl0bGUiKTsKK30KKwor
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlNtYXJ0IENvcHkvUGFzdGUiLCAiU21hcnQgQ29weS9QYXN0ZSBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0UXVvdGVzCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgUXVvdGVzIiwgIlNtYXJ0
IFF1b3RlcyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0RGFzaGVzCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgRGFz
aGVzIiwgIlNtYXJ0IERhc2hlcyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJTbWFydCBMaW5rcyIsICJTbWFydCBMaW5rcyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCist
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudAoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlRleHQgUmVwbGFjZW1lbnQiLCAiVGV4dCBSZXBsYWNlbWVudCBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCistIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1Ry
YW5zZm9ybWF0aW9uc01lbnUKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJUcmFuc2Zvcm1hdGlv
bnMiLCAiVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCistIChO
U1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJNYWtlIFVwcGVyIENhc2UiLCAiTWFrZSBVcHBlciBDYXNlIGNvbnRleHQgbWVu
dSBpdGVtIik7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2Vy
Q2FzZQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk1ha2UgTG93ZXIgQ2FzZSIsICJNYWtlIExv
d2VyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250ZXh0
TWVudUl0ZW1UYWdDYXBpdGFsaXplCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2FwaXRhbGl6
ZSIsICJDYXBpdGFsaXplIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKIC0gKE5TU3RyaW5nICop
Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQKIHsKICAgICByZXR1cm4gVUlfU1RSSU5H
KCJJbnNwZWN0IEVsZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7
CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiA0Mjg1OCkKKysrIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjY0MCw2
ICsyNjQwLDQyIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgICAgICByZXR1
cm4gWUVTOwogICAgIH0KICNlbmRpZgorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgLy8gRklYTUUgNDc5OTEzNDog
V2ViVmlldyBpcyB0aGUgYm90dGxlbmVjayBmb3IgdGhpcyBsb2dpYywgYnV0IHdlIG11c3QgdmFs
aWRhdGUgCisgICAgLy8gdGhlIHNlbGVjdG9yIGhlcmUgYmVjYXVzZSB3ZSBpbXBsZW1lbnQgaXQg
aGVyZSwgYW5kIHdlIG11c3QgaW1wbGVtZW50IGl0IGhlcmUgYmVjYXVzZSB0aGUgQXBwS2l0IAor
ICAgIC8vIGNvZGUgY2hlY2tzIHRoZSBmaXJzdCByZXNwb25kZXIuCisgICAgaWYgKGFjdGlvbiA9
PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246KSkgeworICAgICAg
ICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgaWYg
KFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pCisgICAgICAgICAg
ICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIHJldHVybiBZRVM7Cisg
ICAgfQorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRl
Y3Rpb246KSkgeworICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICop
aXRlbTsKKyAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNs
YXNzXV0pCisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZF0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAg
cmV0dXJuIFlFUzsKKyAgICB9CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0
b21hdGljRGFzaFN1YnN0aXR1dGlvbjopKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVt
ID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xh
c3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpb
c2VsZiBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5T
T2ZmU3RhdGVdOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICBpZiAoYWN0aW9uID09
IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KSkgeworICAgICAgICBO
U01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgaWYgKFtt
ZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pCisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
XSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICByZXR1cm4gWUVTOworICAgIH0K
KyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb246KSkgeworICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICop
aXRlbTsKKyAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNs
YXNzXV0pCisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAg
ICAgICByZXR1cm4gWUVTOworICAgIH0KKyNlbmRpZgogICAgIAogICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gW3NlbGYgY29yZUNvbW1hbmRCeVNlbGVjdG9yOmFjdGlvbl07CiAgICAgaWYg
KGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSkgewpAQCAtNDkzNyw2ICs0OTczLDg4IEBAIHN0YXRpYyBD
R1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm8KIAogI2VuZGlmCiAKKyNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKwor
Ly8gRklYTUUgNDc5OTEzNDogV2ViVmlldyBpcyB0aGUgYm90dGxlbmVjayBmb3IgdGhpcyBsb2dp
YywgYnV0IHdlIG11c3QgaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMgaGVyZSBiZWNhdXNlCisvLyB0
aGUgQXBwS2l0IGNvZGUgY2hlY2tzIHRoZSBmaXJzdCByZXNwb25kZXIuCisKKy0gKEJPT0wpaXNB
dXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQKK3sKKyAgICByZXR1cm4gW1tzZWxmIF93
ZWJWaWV3XSBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZF07Cit9CisKKy0gKHZv
aWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAg
ICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDpm
bGFnXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQp
c2VuZGVyCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0
aXR1dGlvbjpzZW5kZXJdOworfQorCistIChCT09MKWlzQXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWQKK3sKKyAgICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3XSBpc0F1dG9tYXRpY0xpbmtEZXRl
Y3Rpb25FbmFibGVkXTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3XSBzZXRBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZDpmbGFnXTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2dsZUF1dG9t
YXRpY0xpbmtEZXRlY3Rpb246c2VuZGVyXTsKK30KKworLSAoQk9PTClpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkCit7CisgICAgcmV0dXJuIFtbc2VsZiBfd2ViVmlld10gaXNBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtbc2VsZiBfd2ViVmll
d10gc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZv
aWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCit7CisgICAgW1tz
ZWxmIF93ZWJWaWV3XSB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOnNlbmRlcl07Cit9
CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkCit7CisgICAgcmV0
dXJuIFtbc2VsZiBfd2ViVmlld10gaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsK
K30KKworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOihCT09MKWZs
YWcKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVu
YWJsZWQ6ZmxhZ107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50
OihpZClzZW5kZXIKK3sKKyAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2dsZUF1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudDpzZW5kZXJdOworfQorCistIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBbW3NlbGYgX3dlYlZpZXddIGlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF07Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW1tzZWxmIF93ZWJWaWV3
XSBzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkOmZsYWddOworfQorCistICh2
b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyCit7CisgICAg
W1tzZWxmIF93ZWJWaWV3XSB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246c2VuZGVy
XTsKK30KKworI2VuZGlmCisKIC0gKHZvaWQpX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Oihp
ZClzZW5kZXIKIHsKICAgICAvLyBEaWN0aW9uYXJ5IEFQSSB3aWxsIGFjY2VwdCBhIHdoaXRlc3Bh
Y2Utb25seSBzdHJpbmcgYW5kIGRpc3BsYXkgVUkgYXMgaWYgaXQgd2VyZSByZWFsIHRleHQsCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDQy
ODU4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNiArNTQsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAodm9pZClz
ZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOihCT09MKWZsYWc7CiAtICh2b2lkKXRvZ2dsZUdyYW1t
YXJDaGVja2luZzooaWQpc2VuZGVyOwogI2VuZGlmCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCistIChCT09MKWlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOworLSAodm9pZClzZXRBdXRvbWF0aWNRdW90ZVN1
YnN0aXR1dGlvbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb246KGlkKXNlbmRlcjsKKy0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZDsKKy0gKHZvaWQpc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQ6KEJP
T0wpZmxhZzsKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjooaWQpc2VuZGVy
OworLSAoQk9PTClpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOworLSAodm9pZClz
ZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0
b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CistIChCT09MKWlzQXV0
b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDsKKy0gKHZvaWQpc2V0QXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcjsKKy0gKEJPT0wpaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb25FbmFibGVkOworLSAodm9pZClzZXRBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bjooaWQpc2VuZGVyOworI2VuZGlmCiAtIChXZWJDb3JlOjpDYWNoZWRJbWFnZSopcHJvbWlzZWRE
cmFnVElGRkRhdGFTb3VyY2U7CiAtICh2b2lkKXNldFByb21pc2VkRHJhZ1RJRkZEYXRhU291cmNl
OihXZWJDb3JlOjpDYWNoZWRJbWFnZSopc291cmNlOwogLSAodm9pZClfd2ViX2xheW91dElmTmVl
ZGVkUmVjdXJzaXZlOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAkocmV2aXNpb24gNDI4NTgpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDExIEBA
CiAjZGVmaW5lIFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkIEAiV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIgogI2RlZmlu
ZSBXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkIEAiV2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZCIK
KyNkZWZpbmUgV2ViQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkIEAiV2ViQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZCBAIldlYkF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIgorI2RlZmlu
ZSBXZWJBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCBAIldlYkF1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkIgorI2RlZmluZSBXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRF
bmFibGVkIEAiV2ViQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCIKKyNkZWZpbmUgV2Vi
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCBAIldlYkF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJL
aXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSBAIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5IgogI2RlZmluZSBXZWJLaXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGggQCJXZWJLaXRG
VFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgiCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gNDI4NTgpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTggQEAg
ZW51bSB7IAogICAgIFdlYk1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQsCiAgICAgV2Vi
TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAgICAgV2ViTWVudUl0ZW1UYWdU
ZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQsCisgICAgV2ViTWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxp
bmdBdXRvbWF0aWNhbGx5LAorICAgIFdlYk1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUsCisg
ICAgV2ViTWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucywKKyAgICBXZWJNZW51SXRlbVRhZ1Nt
YXJ0Q29weVBhc3RlLAorICAgIFdlYk1lbnVJdGVtVGFnU21hcnRRdW90ZXMsCisgICAgV2ViTWVu
dUl0ZW1UYWdTbWFydERhc2hlcywKKyAgICBXZWJNZW51SXRlbVRhZ1NtYXJ0TGlua3MsCisgICAg
V2ViTWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQsCisgICAgV2ViTWVudUl0ZW1UYWdUcmFuc2Zv
cm1hdGlvbnNNZW51LAorICAgIFdlYk1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSwKKyAgICBXZWJN
ZW51SXRlbVRhZ01ha2VMb3dlckNhc2UsCisgICAgV2ViTWVudUl0ZW1UYWdDYXBpdGFsaXplLAog
ICAgIFdlYk1lbnVJdGVtVGFnQmFzZUFwcGxpY2F0aW9uID0gMTAwMDAKIH07CiBAY2xhc3MgV2Vi
R2VvbG9jYXRpb247CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNDI4NTgpCisr
KyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA3LDYg
KzUwNywxMyBAQCBzdGF0aWMgQk9PTCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsCiAjaWZu
ZGVmIEJVSUxESU5HX09OX1RJR0VSCiBzdGF0aWMgQk9PTCBncmFtbWFyQ2hlY2tpbmdFbmFibGVk
OwogI2VuZGlmCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCitzdGF0aWMgQk9PTCBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bkVuYWJsZWQ7CitzdGF0aWMgQk9PTCBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDsKK3N0
YXRpYyBCT09MIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOworc3RhdGljIEJPT0wg
YXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDsKK3N0YXRpYyBCT09MIGF1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7CisjZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdlYlZp
ZXdQcml2YXRlCiAKQEAgLTUzNSw2ICs1NDIsMTMgQEAgc3RhdGljIEJPT0wgZ3JhbW1hckNoZWNr
aW5nRW5hYmxlZDsKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKICAgICBncmFtbWFyQ2hlY2tp
bmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZv
cktleTpXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsKICNlbmRpZgorI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIGF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkXTsKKyAgICBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWRdOworICAgIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID0g
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07CisgICAgYXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xG
b3JLZXk6V2ViQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZF07CisgICAgYXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZF07CisjZW5kaWYKICAgICAKICAgICB1c2VzUGFnZUNhY2hlID0gWUVTOwogICAgIApAQCAtMzc0
MSw2ICszNzU1LDQzIEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJhbWUoV2ViRnJhbWUK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gWUVTOwogI2VuZGlmCisjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgfSBl
bHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uOikpIHsKKyAgICAgICAgQk9PTCBjaGVja01hcmsgPSBbc2VsZiBpc0F1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tp
bmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0g
Km1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNl
dFN0YXRlOmNoZWNrTWFyayA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBZRVM7CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRv
Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246KSkgeworICAgICAgICBCT09MIGNoZWNrTWFyayA9
IFtzZWxmIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOworICAgICAgICBpZiAoWyhO
U09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CisgICAg
ICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAg
ICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09mZlN0
YXRlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWUVTOworICAgIH0gZWxzZSBpZiAoYWN0
aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOikpIHsKKyAg
ICAgICAgQk9PTCBjaGVja01hcmsgPSBbc2VsZiBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25F
bmFibGVkXTsKKyAgICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlzS2luZE9mQ2xhc3M6W05T
TWVudUl0ZW0gY2xhc3NdXSkgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAo
TlNNZW51SXRlbSAqKWl0ZW07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tN
YXJrID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFlFUzsKKyAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50OikpIHsKKyAgICAgICAgQk9PTCBjaGVja01hcmsgPSBbc2VsZiBpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWRdOworICAgICAgICBpZiAoWyhOU09iamVjdCAq
KWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CisgICAgICAgICAgICBO
U01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gWUVTOworICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEBz
ZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KSkgeworICAgICAgICBC
T09MIGNoZWNrTWFyayA9IFtzZWxmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZF07CisgICAgICAgIGlmIChbKE5TT2JqZWN0ICopaXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJ
dGVtIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVu
dUl0ZW0gKilpdGVtOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmNoZWNrTWFyayA/
IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBZRVM7
CisjZW5kaWYKICAgICB9CiAgICAgRk9SX0VBQ0hfUkVTUE9OREVSX1NFTEVDVE9SKFZBTElEQVRF
KQogCkBAIC00NDk4LDEwICs0NTQ5LDEzIEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9y
KiBhZURlc2NGcm8KICAgICBncmFtbWFyQ2hlY2tpbmdFbmFibGVkID0gZmxhZzsKICAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmdyYW1tYXJDaGVja2lu
Z0VuYWJsZWQgZm9yS2V5OldlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWRdOyAgICAKICAgICAKLSAg
ICAvLyBGSVhNRSA0ODExNDQ3OiB3b3JrYXJvdW5kIGZvciBsYWNrIG9mIEFQSQorI2lmbmRlZiBC
VUlMRElOR19PTl9MRU9QQVJECisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIHVwZGF0ZVBhbmVsc107CisjZWxzZQogICAgIE5TU3BlbGxDaGVja2VyICpzcGVsbENoZWNr
ZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKICAgICBpZiAoW3NwZWxs
Q2hlY2tlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVHcmFtbWFyKV0pCiAg
ICAgICAgIFtzcGVsbENoZWNrZXIgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfdXBkYXRlR3Jh
bW1hcildOworI2VuZGlmCiAgICAgCiAgICAgLy8gV2UgY2FsbCBfcHJlZmxpZ2h0U3BlbGxDaGVj
a2VyIHdoZW4gdHVybmluZyBjb250aW51b3VzIHNwZWxsIGNoZWNraW5nIG9uLCBidXQgd2UgZG9u
J3QgbmVlZCB0byBkbyB0aGF0IGhlcmUKICAgICAvLyBiZWNhdXNlIGdyYW1tYXIgY2hlY2tpbmcg
b25seSBvY2N1cnMgb24gY29kZSBwYXRocyB0aGF0IGFscmVhZHkgcHJlZmxpZ2h0IHNwZWxsIGNo
ZWNraW5nIGFwcHJvcHJpYXRlbHkuCkBAIC00NTE5LDYgKzQ1NzMsMTI5IEBAIHN0YXRpYyBOU0Fw
cGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8KIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24g
V2ViVmlldyAoV2ViVmlld1RleHRDaGVja2luZykKKworLSAoQk9PTClpc0F1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZAoreworI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8
IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAg
IHJldHVybiBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQ7CisjZW5kaWYKK30KKwor
LSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCit7CisjaWYgZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIHJl
dHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
OworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZAoreworI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBhdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZDsKKyNlbmRpZgorfQorCistIChCT09MKWlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZAoreworI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
IHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICByZXR1cm4gTk87CisjZWxzZQor
ICAgIHJldHVybiBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOworI2VuZGlmCit9CisK
Ky0gKEJPT0wpaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkCit7CisjaWYgZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
ICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbkVuYWJsZWQ7CisjZW5kaWYKK30KKworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorCistICh2b2lkKXNldEF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgaWYgKGF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9PSBmbGFnKQorICAgICAgICByZXR1cm47CisgICAg
YXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkID0gZmxhZzsKKyAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmF1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uRW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
XTsgICAgCisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBh
bmVsc107Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb246KGlk
KXNlbmRlcgoreworICAgIFtzZWxmIHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxl
ZDohW3NlbGYgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdXTsKK30KKworLSAo
dm9pZClzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAg
aWYgKGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkID09IGZsYWcpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9IGZsYWc7CisgICAgW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOyAg
ICAKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxz
XTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZDohW3NlbGYgaXNB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF1dOworfQorCistICh2b2lkKXNldEF1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoYXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID0gZmxhZzsKKyAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07ICAg
IAorICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVQYW5lbHNd
OworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb246KGlkKXNlbmRl
cgoreworICAgIFtzZWxmIHNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOiFbc2Vs
ZiBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkXV07Cit9CisKKy0gKHZvaWQpc2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgaWYgKGF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPSBmbGFnOworICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6YXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZF07
ICAgIAorICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVQYW5l
bHNdOworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDooaWQpc2Vu
ZGVyCit7CisgICAgW3NlbGYgc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDohW3Nl
bGYgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXV07Cit9CisKKy0gKHZvaWQpc2V0
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgaWYg
KGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQgPT0gZmxhZykKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQgPSBmbGFnOworICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6YXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXSB1cGRhdGVQYW5lbHNdOworfQorCistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgc2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZDohW3NlbGYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkXV07Cit9CisKKyNlbmRpZgorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChX
ZWJWaWV3VW5kb2FibGVFZGl0aW5nKQogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoTm9k
ZTooRE9NTm9kZSAqKW5vZGUKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiA0Mjg1OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NjQsNiArNDY0LDI5IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0
byB0aGUgQVBJLgogLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtZXJnZWQgaW50byBX
ZWJJQkFjdGlvbnMgd2hlbiB3ZSdyZSBub3QgaW4gQVBJIGZyZWV6ZQogLSAodm9pZCl0b2dnbGVH
cmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcjsKICNlbmRpZgorCitAZW5kCisKK0BpbnRlcmZhY2Ug
V2ViVmlldyAoV2ViVmlld1RleHRDaGVja2luZykKKworLSAoQk9PTClpc0F1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZDsKKy0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZDsKKy0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZDsKKy0gKEJP
T0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOworLSAoQk9PTClpc0F1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElH
RVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCistICh2b2lkKXNldEF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVyOworLSAodm9pZClzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uOihpZClzZW5kZXI7CistICh2b2lkKXNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkOihCT09MKWZsYWc7CistICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb246KGlkKXNlbmRlcjsKKy0gKHZvaWQpc2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50
RW5hYmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnQ6KGlkKXNlbmRlcjsKKy0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZDooQk9PTClmbGFnOworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b246KGlkKXNlbmRlcjsKKyNlbmRpZgorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2Vi
Vmlld0VkaXRpbmdJbk1haWwpCg==
</data>
<flag name="review"
          id="14906"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>