<?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>232686</bug_id>
          
          <creation_ts>2021-11-03 15:21:06 -0700</creation_ts>
          <short_desc>Compiler should be able to check localized format strings for consistency</short_desc>
          <delta_ts>2021-11-24 17:39:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>232642</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811685</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-03 15:21:06 -0700</bug_when>
    <thetext>Make macros in LocalizableStrings.h check format strings for consistency.

Currently none of the macros or functions check localized format strings on either Gtk or on Apple platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811686</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 15:21:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/84994345&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811687</commentid>
    <comment_count>2</comment_count>
      <attachid>443248</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-03 15:23:42 -0700</bug_when>
    <thetext>Created attachment 443248
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811834</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-04 05:59:51 -0700</bug_when>
    <thetext>I think I can get rid of the CFAutorelease() (fixing Windows build and eliminating autoreleased objects in this code path) by using CF_RETURNS_RETAINED on localizedCFString() and CF_RELEASES_ARGUMENT on formatLocalizedString().

I may have to stop using localizedCFString() with WEB_UI_CFSTRING(), though.

And WEB_UI_NSSTRING() may also need an -autorelease call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812183</commentid>
    <comment_count>4</comment_count>
      <attachid>443417</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 10:56:22 -0700</bug_when>
    <thetext>Created attachment 443417
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812187</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 11:02:49 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Created attachment 443417 [details]
&gt; Patch v2

So much goodness here:
- Allows compiler to check format strings for consistency (types and counts of args vs. placeholders) on all platforms.
- Eliminates autoreleased NS/CFString objects, except when calling localizedNSString(), which is required based on how it&apos;s used.  These NSString objects will stop being autoreleased after switching to ARC.
- Eliminates runtime const char* -&gt; CFStringRef conversions (except in WebKitLegacy, which can be done in a follow-up if desired).
- Eliminates CFStringRef -&gt; WTF::String -&gt; CFStringRef conversions for format strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812210</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 12:27:43 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Created attachment 443417 [details]
&gt; Patch v2

The Apple Windows port is crashing a lot on this patch:

    &lt;https://ews-build.webkit.org/#/builders/10/builds/112721&gt;

It turns out that Source/WebKitLegacy/win/WebPreferences.cpp had one use of WEB_UI_STRING() in WebKit!WebPreferences::initializeDefaultSettings():

    String defaultDefaultEncoding(WEB_UI_STRING(&quot;ISO-8859-1&quot;, &quot;The default, default character encoding on Windows&quot;));
    CFDictionaryAddValue(defaults.get(), CFSTR(WebKitDefaultTextEncodingNamePreferenceKey), defaultDefaultEncoding.createCFString().get());

And due to the way WEB_UI_STRING() worked before this patch, this code was basically just using WEB_UI_STRING() to convert the const char* into a WTF::String, and then into a CFStringRef.  :|

The fix is to remove WEB_UI_STRING() and just use CFSTR(&quot;ISO-8859-1&quot;) directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812211</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 12:32:03 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; &gt; Created attachment 443417 [details]
&gt; &gt; Patch v2
&gt; 
&gt; The Apple Windows port is crashing a lot on this patch:
&gt; 
&gt;     &lt;https://ews-build.webkit.org/#/builders/10/builds/112721&gt;
&gt; 
&gt; It turns out that Source/WebKitLegacy/win/WebPreferences.cpp had one use of
&gt; WEB_UI_STRING() in WebKit!WebPreferences::initializeDefaultSettings():
&gt; 
&gt;     String defaultDefaultEncoding(WEB_UI_STRING(&quot;ISO-8859-1&quot;, &quot;The default,
&gt; default character encoding on Windows&quot;));
&gt;     CFDictionaryAddValue(defaults.get(),
&gt; CFSTR(WebKitDefaultTextEncodingNamePreferenceKey),
&gt; defaultDefaultEncoding.createCFString().get());
&gt; 
&gt; And due to the way WEB_UI_STRING() worked before this patch, this code was
&gt; basically just using WEB_UI_STRING() to convert the const char* into a
&gt; WTF::String, and then into a CFStringRef.  :|
&gt; 
&gt; The fix is to remove WEB_UI_STRING() and just use CFSTR(&quot;ISO-8859-1&quot;)
&gt; directly.

Actually, this could be changed in Localizable.strings!  So we just need to use WEB_UI_CFSTRING() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812215</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 12:47:49 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #7)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; (In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; &gt; &gt; Created attachment 443417 [details]
&gt; &gt; &gt; Patch v2
&gt; &gt; 
&gt; &gt; The Apple Windows port is crashing a lot on this patch:
&gt; &gt; 
&gt; &gt;     &lt;https://ews-build.webkit.org/#/builders/10/builds/112721&gt;
&gt; &gt; 
&gt; &gt; It turns out that Source/WebKitLegacy/win/WebPreferences.cpp had one use of
&gt; &gt; WEB_UI_STRING() in WebKit!WebPreferences::initializeDefaultSettings():
&gt; &gt; 
&gt; &gt;     String defaultDefaultEncoding(WEB_UI_STRING(&quot;ISO-8859-1&quot;, &quot;The default,
&gt; &gt; default character encoding on Windows&quot;));
&gt; &gt;     CFDictionaryAddValue(defaults.get(),
&gt; &gt; CFSTR(WebKitDefaultTextEncodingNamePreferenceKey),
&gt; &gt; defaultDefaultEncoding.createCFString().get());
&gt; &gt; 
&gt; &gt; And due to the way WEB_UI_STRING() worked before this patch, this code was
&gt; &gt; basically just using WEB_UI_STRING() to convert the const char* into a
&gt; &gt; WTF::String, and then into a CFStringRef.  :|
&gt; &gt; 
&gt; &gt; The fix is to remove WEB_UI_STRING() and just use CFSTR(&quot;ISO-8859-1&quot;)
&gt; &gt; directly.
&gt; 
&gt; Actually, this could be changed in Localizable.strings!  So we just need to
&gt; use WEB_UI_CFSTRING() here.

Actually, Windows had its own copy of WebCore::localizedString(const char*) in Source/WebCore/platform/win/LocalizedStringsWin.cpp, and that&apos;s no longer being used, and the new code in WebCore::localizedString(CFStringRef) won&apos;t work on Windows.

So that&apos;s the real bug here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812231</commentid>
    <comment_count>9</comment_count>
      <attachid>443432</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 13:40:55 -0700</bug_when>
    <thetext>Created attachment 443432
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812235</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 13:47:26 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #9)
&gt; Created attachment 443432 [details]
&gt; Patch v3

Try to fix Windows and WPE builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812236</commentid>
    <comment_count>11</comment_count>
      <attachid>443434</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 13:47:38 -0700</bug_when>
    <thetext>Created attachment 443434
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812237</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 13:47:54 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #11)
&gt; Created attachment 443434 [details]
&gt; Patch v4

Try to fix WPE build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812265</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 15:27:24 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #12)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #11)
&gt; &gt; Created attachment 443434 [details]
&gt; &gt; Patch v4
&gt; 
&gt; Try to fix WPE build.

Windows test failure looks related to the patch:

-PASS f.contentDocument.title is &quot;green-24x24.jpg 24Ã—24 pixels&quot;
-PASS f.contentDocument.head.getElementsByTagName(&apos;title&apos;)[0].textContent is &quot;green-24x24.jpg 24Ã—24 pixels&quot;
+FAIL f.contentDocument.title should be green-24x24.jpg 24Ã—24 pixels. Was localized string not found.
+FAIL f.contentDocument.head.getElementsByTagName(&apos;title&apos;)[0].textContent should be green-24x24.jpg 24Ã—24 pixels. Was localized string not found.

&lt;https://ews-build.webkit.org/#/builders/10/builds/112739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812279</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 15:47:15 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #13)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #12)
&gt; &gt; (In reply to David Kilzer (:ddkilzer) from comment #11)
&gt; &gt; &gt; Created attachment 443434 [details]
&gt; &gt; &gt; Patch v4
&gt; &gt; 
&gt; &gt; Try to fix WPE build.
&gt; 
&gt; Windows test failure looks related to the patch:
&gt; 
&gt; -PASS f.contentDocument.title is &quot;green-24x24.jpg 24Ã—24 pixels&quot;
&gt; -PASS f.contentDocument.head.getElementsByTagName(&apos;title&apos;)[0].textContent is
&gt; &quot;green-24x24.jpg 24Ã—24 pixels&quot;
&gt; +FAIL f.contentDocument.title should be green-24x24.jpg 24Ã—24 pixels. Was
&gt; localized string not found.
&gt; +FAIL f.contentDocument.head.getElementsByTagName(&apos;title&apos;)[0].textContent
&gt; should be green-24x24.jpg 24Ã—24 pixels. Was localized string not found.
&gt; 
&gt; &lt;https://ews-build.webkit.org/#/builders/10/builds/112739&gt;

And...I didn&apos;t faithfully merge WebCore::localizedString() from LocalizedStringsWin.cpp.

Patch v5 coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812286</commentid>
    <comment_count>15</comment_count>
      <attachid>443454</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 16:02:24 -0700</bug_when>
    <thetext>Created attachment 443454
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812288</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 16:02:55 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #15)
&gt; Created attachment 443454 [details]
&gt; Patch v5

Try to fix Windows layout test failure from Patch v4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812321</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 19:44:46 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #16)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #15)
&gt; &gt; Created attachment 443454 [details]
&gt; &gt; Patch v5
&gt; 
&gt; Try to fix Windows layout test failure from Patch v4.

So the same test is still failing on Windows:

    fast/images/imageDocument-title.html
    &lt;https://ews-build.webkit.org/#/builders/10/builds/112770&gt;

The last thing I can think of is that a CFStringRef of the key was built like this before the patch:

    const char* key = &quot;%@ %@×%@ pixels&quot;;
    CFStringRef cfKey = CFStringCreateWithCStringNoCopy(NULL, key, kCFStringEncodingUTF8, kCFAllocatorNull);

But after this patch, the code would create the same CFStringRef this way:

    CFStringRef cfKey = CFSTR(&quot;%@ %@×%@ pixels&quot;);

Could those result in different, unequal CFStringRef objects, but only on Windows?

This apparently only affects Windows since the same test works fine on iOS and macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812322</commentid>
    <comment_count>18</comment_count>
      <attachid>443465</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 19:49:29 -0700</bug_when>
    <thetext>Created attachment 443465
Patch v5 ALT

Same as Patch v5, but replaced multiplication sign (&quot;×&quot;) with lower-case &quot;x&quot; in the localized string to see if that made a difference on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812323</commentid>
    <comment_count>19</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 19:56:12 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #18)
&gt; Created attachment 443465 [details]
&gt; Patch v5 ALT
&gt; 
&gt; Same as Patch v5, but replaced multiplication sign (&quot;×&quot;) with lower-case &quot;x&quot;
&gt; in the localized string to see if that made a difference on Windows.

This test should fail on all platforms with Patch v5 AALT (because the expectation is wrong):

    fast/images/imageDocument-title.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812331</commentid>
    <comment_count>20</comment_count>
      <attachid>443468</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-05 20:24:14 -0700</bug_when>
    <thetext>Created attachment 443468
Patch v5 RELEASE ASSERT

Same as Patch v5, but changes debug assert to release assert when a localized string is not found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812364</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-06 01:44:02 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #20)
&gt; Created attachment 443468 [details]
&gt; Patch v5 RELEASE ASSERT
&gt; 
&gt; Same as Patch v5, but changes debug assert to release assert when a
&gt; localized string is not found.

This has to be some kind of text encoding issue with MSVC on Windows.  The layout test failures on this patch actually have this stderr output:

DumpRenderTree.exe[5844:142c] WARNING: CFSTR(&quot;%@ %@\37777777703\37777777627%@ pixels&quot;) has non-7 bit chars, interpreting using MacOS Roman encoding for now, but this will change. Please eliminate usages of non-7 bit chars (including escaped characters above \177 octal) in CFSTR().

Does the file need to be marked as using UTF-8 encoding for MSVC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812395</commentid>
    <comment_count>22</comment_count>
      <attachid>443486</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-06 09:13:30 -0700</bug_when>
    <thetext>Created attachment 443486
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812396</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-06 09:16:32 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #22)
&gt; Created attachment 443486 [details]
&gt; Patch v6

This patch attempts to fix Apple&apos;s Windows port by introducing separate macros that don&apos;t use CFSTR().

This may be more complex than it needs to be--might be better to make Apple&apos;s non-Windows ports use const char* arguments like Windows if there isn&apos;t a huge performance hit to create CFStringRef objects at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812429</commentid>
    <comment_count>24</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-06 16:02:02 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #23)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #22)
&gt; &gt; Created attachment 443486 [details]
&gt; &gt; Patch v6
&gt; 
&gt; This patch attempts to fix Apple&apos;s Windows port by introducing separate
&gt; macros that don&apos;t use CFSTR().
&gt; 
&gt; This may be more complex than it needs to be--might be better to make
&gt; Apple&apos;s non-Windows ports use const char* arguments like Windows if there
&gt; isn&apos;t a huge performance hit to create CFStringRef objects at runtime.

Yay!  This fixed the AppleWin issue.  Will clean up the patch and post a &quot;final&quot; one for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812446</commentid>
    <comment_count>25</comment_count>
      <attachid>443494</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-06 17:09:00 -0700</bug_when>
    <thetext>Created attachment 443494
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812466</commentid>
    <comment_count>26</comment_count>
      <attachid>443494</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-07 00:56:43 -0700</bug_when>
    <thetext>Comment on attachment 443494
Patch v7

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

Need to rebase this patch already.

&gt; Source/WebCore/ChangeLog:23
&gt; +        when using WEB_UI_NSString()/localizedNSString() directly (the

Fix capitalization of WEB_UI_NSSTRING() macro.

&gt; Source/WebCore/ChangeLog:110
&gt; +          localizedFormatString().

Should be localizedString().

&gt; Source/WebCore/Scripts/extract-localizable-strings.pl:248
&gt; +                if (($token =~ /(WEB_)?UI_(CF)?STRING(_KEY)?(_INTERNAL)?$/) || ($token =~ /WEB_UI_FORMAT_(CF)?STRING(_KEY)?$/) || ($token =~ /WEB_UI_NSSTRING$/) || ($token =~ /WEB_UI_STRING_WITH_MNEMONIC$/)) {

Combine new regex with existing regex as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812481</commentid>
    <comment_count>27</comment_count>
      <attachid>443511</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-07 08:12:48 -0800</bug_when>
    <thetext>Created attachment 443511
Patch v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812590</commentid>
    <comment_count>28</comment_count>
      <attachid>443511</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-08 07:14:47 -0800</bug_when>
    <thetext>Comment on attachment 443511
Patch v8

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

&gt; Source/WebCore/platform/LocalizedStrings.cpp:58
&gt; +    CFRelease(format);

Where is the corresponding CFRetain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812806</commentid>
    <comment_count>29</comment_count>
      <attachid>443511</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-08 13:36:24 -0800</bug_when>
    <thetext>Comment on attachment 443511
Patch v8

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

&gt;&gt; Source/WebCore/platform/LocalizedStrings.cpp:58
&gt;&gt; +    CFRelease(format);
&gt; 
&gt; Where is the corresponding CFRetain?

In the localizedString function. That’s why this does CF_RELEASES_ARGUMENT.

&gt; Source/WebCore/platform/LocalizedStrings.h:408
&gt; +    CFStringRef localizedFormatString(const char* key) CF_FORMAT_ARGUMENT(1) CF_RETURNS_RETAINED;
&gt; +    WEBCORE_EXPORT CFStringRef localizedString(CFStringRef key) CF_RETURNS_RETAINED;

Why not add &quot;copy&quot; to the names of these functions?

Why not have these return RetainPtr&lt;CFStringRef&gt;?

&gt; Source/WebCore/platform/LocalizedStrings.h:414
&gt; +    String formatLocalizedString(CFStringRef CF_RELEASES_ARGUMENT format, ...) CF_FORMAT_FUNCTION(1, 2);

This function is kind of tricky to use correctly because you have to pass a retained format string.

I guess we can’t make it take a RetainPtr&lt;CFStringRef&gt;&amp;&amp;, but maybe it could just take a normal CFStringRef and not release its argument, and maybe write .get() at the call sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812867</commentid>
    <comment_count>30</comment_count>
      <attachid>443511</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-08 15:06:53 -0800</bug_when>
    <thetext>Comment on attachment 443511
Patch v8

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

&gt;&gt;&gt; Source/WebCore/platform/LocalizedStrings.cpp:58
&gt;&gt;&gt; +    CFRelease(format);
&gt;&gt; 
&gt;&gt; Where is the corresponding CFRetain?
&gt; 
&gt; In the localizedString function. That’s why this does CF_RELEASES_ARGUMENT.

Correct.

&gt;&gt; Source/WebCore/platform/LocalizedStrings.h:408
&gt;&gt; +    WEBCORE_EXPORT CFStringRef localizedString(CFStringRef key) CF_RETURNS_RETAINED;
&gt; 
&gt; Why not add &quot;copy&quot; to the names of these functions?
&gt; 
&gt; Why not have these return RetainPtr&lt;CFStringRef&gt;?

&gt; Why not add &quot;copy&quot; to the names of these functions?

So we don&apos;t have to use CF_RETURNS_RETAINED?  I didn&apos;t think of &quot;looking up a localized string&quot; as a &quot;copy&quot; operation, but I&apos;m not opposed to changing the name to include &quot;copy&quot;.

&gt; Why not have these return RetainPtr&lt;CFStringRef&gt;?

I covered this in the ChangeLog, but (a) I know it was a lot to read, and (b) I&apos;m open to better ways to document it:

        * platform/LocalizedStrings.cpp:
        (WebCore::formatLocalizedString):
        [...]
        - Note that `format` is marked as CF_RELEASES_ARGUMENT on Apple
          platforms because localizedFormatString() can&apos;t use a return
          type of RetainPtr&lt;&gt; and also use CF_FORMAT_ARGUMENT(), and we
          want to avoid autoreleasing the CFStringRef returned.
        [...]

Basically, it&apos;s to avoid auto-releasing the CFStringRef and allowing the compiler to check the format string.

The compiler complains that `RetainPtr&lt;CFStringRef&gt;` isn&apos;t a &quot;string type&quot; when you change the function signature.  :(

&gt;&gt; Source/WebCore/platform/LocalizedStrings.h:414
&gt;&gt; +    String formatLocalizedString(CFStringRef CF_RELEASES_ARGUMENT format, ...) CF_FORMAT_FUNCTION(1, 2);
&gt; 
&gt; This function is kind of tricky to use correctly because you have to pass a retained format string.
&gt; 
&gt; I guess we can’t make it take a RetainPtr&lt;CFStringRef&gt;&amp;&amp;, but maybe it could just take a normal CFStringRef and not release its argument, and maybe write .get() at the call sites?

Nope.  You can&apos;t have the compiler check the format string and use RetainPtr&lt;&gt;, or you must autorelease the CFStringRef returned.

Oh, and `CFAutorelease()` apparently isn&apos;t available on AppleWin, so that port would have to go back to having a different code path.

Also, if you weren&apos;t reading my patch updates, CFSTR() on Windows uses MacRoman encoding (not UTF-8), so any C-string with an ASCII character over 127(?) would result in an incorrectly-encoded CFStringRef that would not match the Localized.strings entry.  (If Windows didn&apos;t have that bug, I could construct a CFStringRef at compile time using CFSTR() on the arguments, but instead we have localizedFormatString() and localizedString().)

As long as folks use the macros as intended, it all just works.  (If they don&apos;t use the macros, that breaks Tools/Scripts/update-webkit-localizable-strings, too.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812903</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-08 16:05:39 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #30)
&gt; &gt; Why not add &quot;copy&quot; to the names of these functions?
&gt; 
&gt; So we don&apos;t have to use CF_RETURNS_RETAINED?  I didn&apos;t think of &quot;looking up
&gt; a localized string&quot; as a &quot;copy&quot; operation, but I&apos;m not opposed to changing
&gt; the name to include &quot;copy&quot;.

Yes, I think the name copyLocalizedString would be pretty natural.

&gt; &gt; Why not have these return RetainPtr&lt;CFStringRef&gt;?

&gt; Basically, it&apos;s to avoid auto-releasing the CFStringRef and allowing the
&gt; compiler to check the format string.

That sounds like you are talking about the argument to formatLocalizedString, not the return value from localizedString. I was thinking the macros could have the &quot;get()&quot; inside them.

&gt; Also, if you weren&apos;t reading my patch updates, CFSTR() on Windows uses
&gt; MacRoman encoding (not UTF-8), so any C-string with an ASCII character over
&gt; 127(?) would result in an incorrectly-encoded CFStringRef that would not
&gt; match the Localized.strings entry.  (If Windows didn&apos;t have that bug, I
&gt; could construct a CFStringRef at compile time using CFSTR() on the
&gt; arguments, but instead we have localizedFormatString() and
&gt; localizedString().)

That’s really frustrating. But I think the days of the Windows/CF port are numbered, so this is not forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812948</commentid>
    <comment_count>32</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-08 17:34:26 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #31)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #30)
&gt; &gt; &gt; Why not add &quot;copy&quot; to the names of these functions?
&gt; &gt; 
&gt; &gt; So we don&apos;t have to use CF_RETURNS_RETAINED?  I didn&apos;t think of &quot;looking up
&gt; &gt; a localized string&quot; as a &quot;copy&quot; operation, but I&apos;m not opposed to changing
&gt; &gt; the name to include &quot;copy&quot;.
&gt; 
&gt; Yes, I think the name copyLocalizedString would be pretty natural.

Okay, will do.

&gt; &gt; &gt; Why not have these return RetainPtr&lt;CFStringRef&gt;?
&gt; 
&gt; &gt; Basically, it&apos;s to avoid auto-releasing the CFStringRef and allowing the
&gt; &gt; compiler to check the format string.
&gt; 
&gt; That sounds like you are talking about the argument to
&gt; formatLocalizedString, not the return value from localizedString. I was
&gt; thinking the macros could have the &quot;get()&quot; inside them.

I&apos;m not sure what you&apos;re saying here.  I can probably figure this out tomorrow, but a quick pseudo-code example would really help here.  (I can&apos;t visualize how having a .get() inside a function would not result in an over-release--or really where the .get() would even go.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813177</commentid>
    <comment_count>33</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-09 09:16:58 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #32)
&gt; (In reply to Darin Adler from comment #31)
&gt; &gt; (In reply to David Kilzer (:ddkilzer) from comment #30)
&gt; &gt; &gt; &gt; Why not have these return RetainPtr&lt;CFStringRef&gt;?
&gt; &gt; 
&gt; &gt; &gt; Basically, it&apos;s to avoid auto-releasing the CFStringRef and allowing the
&gt; &gt; &gt; compiler to check the format string.
&gt; &gt; 
&gt; &gt; That sounds like you are talking about the argument to
&gt; &gt; formatLocalizedString, not the return value from localizedString. I was
&gt; &gt; thinking the macros could have the &quot;get()&quot; inside them.
&gt; 
&gt; I&apos;m not sure what you&apos;re saying here.  I can probably figure this out
&gt; tomorrow, but a quick pseudo-code example would really help here.  (I can&apos;t
&gt; visualize how having a .get() inside a function would not result in an
&gt; over-release--or really where the .get() would even go.)

Was just tired last night.  I think you&apos;re suggesting this:

-#define WEB_UI_FORMAT_CFSTRING(string, description) WebCore::localizedFormatString(string)
+#define WEB_UI_FORMAT_CFSTRING(string, description) adoptCF(WebCore::localizedFormatString(string)).get()

But that results in a compiler error because the compiler can&apos;t reason about the format string to check its placeholder count/types:

In file included from WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource250.cpp:7:
./platform/LocalizedStrings.cpp:289:34: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
    return formatLocalizedString(WEB_UI_FORMAT_CFSTRING(&quot;Look Up “%@”&quot;, &quot;Look Up context menu item with selected word&quot;), selectedCFString.get());
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from WebKitBuild/Debug/DerivedSources/WebCore/unified-sources/UnifiedSource250.cpp:7:
In file included from ./platform/LocalizedStrings.cpp:28:
./platform/LocalizedStrings.h:405:53: note: expanded from macro &apos;WEB_UI_FORMAT_CFSTRING&apos;
#define WEB_UI_FORMAT_CFSTRING(string, description) adoptCF(WebCore::localizedFormatString(string)).get()
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813182</commentid>
    <comment_count>34</comment_count>
      <attachid>443511</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-09 09:29:06 -0800</bug_when>
    <thetext>Comment on attachment 443511
Patch v8

Seems fine as long as we get an error if I pass a CFStringRef that does not come from WEB_UI_FORMAT_CFSTRING to formatLocalizedString.

I’m also not sure why we name the macro WEB_UI_FORMAT_CFSTRING instead of just WEB_USE_FORMAT_STRING. It’s not like any one port supports both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817314</commentid>
    <comment_count>35</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-22 10:54:01 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #34)
&gt; Comment on attachment 443511 [details]
&gt; Patch v8
&gt; 
&gt; Seems fine as long as we get an error if I pass a CFStringRef that does not
&gt; come from WEB_UI_FORMAT_CFSTRING to formatLocalizedString.

I think I can invert the `formatLocalizedString(WEB_UI_FORMAT_CFSTRING(...))` pattern to just `WEB_UI_FORMAT_CFSTRING(...)` and make formatLocalizedString() an implementation detail of the macro.

Not sure how I would make this an error other than adding a check-webkit-style check for it.

&gt; I’m also not sure why we name the macro WEB_UI_FORMAT_CFSTRING instead of
&gt; just WEB_USE_FORMAT_STRING. It’s not like any one port supports both.

I created WEB_UI_FORMAT_CFSTRING() with WEB_UI_FORMAT_STRING() due to this comment that I removed from Source/WebCore/platform/LocalizedStrings.h about WEB_UI_CFSTRING():

-// This is exactly as WEB_UI_STRING, but renamed to ensure the string is not scanned by non-CF ports.

But as far as I can tell, it&apos;s actually Apple&apos;s ports that have extra localized strings because there is no WEB_UI_FORMAT_GLIB() to use in certain places.  I didn&apos;t know the history here, so I didn&apos;t want to make too many changes.  (This patch has already grown much bigger than I imagined it would originally.)

Whatever port was parsing the WEB_UI_STRING() macros at the time of the comment either doesn&apos;t have the tool in WebKit&apos;s source tree, or the port was removed years ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817318</commentid>
    <comment_count>36</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-22 11:03:02 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #35)
&gt; -// This is exactly as WEB_UI_STRING, but renamed to ensure the string is
&gt; not scanned by non-CF ports.

Added for Bug 169672 in r214244 by Carlos Garcia Campos (CCed here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817360</commentid>
    <comment_count>37</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-22 16:34:37 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #35)
&gt; (In reply to Darin Adler from comment #34)
&gt; &gt; Comment on attachment 443511 [details]
&gt; &gt; Patch v8
&gt; &gt; 
&gt; &gt; Seems fine as long as we get an error if I pass a CFStringRef that does not
&gt; &gt; come from WEB_UI_FORMAT_CFSTRING to formatLocalizedString.
&gt; 
&gt; I think I can invert the
&gt; `formatLocalizedString(WEB_UI_FORMAT_CFSTRING(...))` pattern to just
&gt; `WEB_UI_FORMAT_CFSTRING(...)` and make formatLocalizedString() an
&gt; implementation detail of the macro.

I remember why we can&apos;t do this now--CF_FORMAT_FUNCTION() won&apos;t work with a const char* parameter type:

Source/WebCore/platform/LocalizedStrings.h:413:59: error: format argument not a CFString
    String formatLocalizedString(const char* format, ...) CF_FORMAT_FUNCTION(1, 2);
                                 ~~~~~~~~~~~~~~~~~~       ^                  ~

We can do this once we can use CFSTR() in the macro because we&apos;re blocked by Windows defaulting to Mac Roman encoding for CFSTR() at compile time (unless I can find a way to work around this Windows behavior by getting the raw bytes and re-encoding them.)

&gt; Not sure how I would make this an error other than adding a
&gt; check-webkit-style check for it.

Will have to add a check-webkit-style check (unless I can work around the Windows behavior).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817422</commentid>
    <comment_count>38</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-23 01:52:45 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #35)
&gt; (In reply to Darin Adler from comment #34)
&gt; &gt; Comment on attachment 443511 [details]
&gt; &gt; Patch v8
&gt; &gt; 
&gt; &gt; Seems fine as long as we get an error if I pass a CFStringRef that does not
&gt; &gt; come from WEB_UI_FORMAT_CFSTRING to formatLocalizedString.
&gt; 
&gt; I think I can invert the
&gt; `formatLocalizedString(WEB_UI_FORMAT_CFSTRING(...))` pattern to just
&gt; `WEB_UI_FORMAT_CFSTRING(...)` and make formatLocalizedString() an
&gt; implementation detail of the macro.
&gt; 
&gt; Not sure how I would make this an error other than adding a
&gt; check-webkit-style check for it.
&gt; 
&gt; &gt; I’m also not sure why we name the macro WEB_UI_FORMAT_CFSTRING instead of
&gt; &gt; just WEB_USE_FORMAT_STRING. It’s not like any one port supports both.
&gt; 
&gt; I created WEB_UI_FORMAT_CFSTRING() with WEB_UI_FORMAT_STRING() due to this
&gt; comment that I removed from Source/WebCore/platform/LocalizedStrings.h about
&gt; WEB_UI_CFSTRING():
&gt; 
&gt; -// This is exactly as WEB_UI_STRING, but renamed to ensure the string is
&gt; not scanned by non-CF ports.
&gt; 
&gt; But as far as I can tell, it&apos;s actually Apple&apos;s ports that have extra
&gt; localized strings because there is no WEB_UI_FORMAT_GLIB() to use in certain
&gt; places.  I didn&apos;t know the history here, so I didn&apos;t want to make too many
&gt; changes.  (This patch has already grown much bigger than I imagined it would
&gt; originally.)
&gt; 
&gt; Whatever port was parsing the WEB_UI_STRING() macros at the time of the
&gt; comment either doesn&apos;t have the tool in WebKit&apos;s source tree, or the port
&gt; was removed years ago.

It&apos;s here https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/gtk/po/CMakeLists.txt#L28</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817689</commentid>
    <comment_count>39</comment_count>
      <attachid>445106</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-24 12:59:57 -0800</bug_when>
    <thetext>Created attachment 445106
Patch v9 for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817693</commentid>
    <comment_count>40</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-24 13:15:10 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #39)
&gt; Created attachment 445106 [details]
&gt; Patch v9 for landing

- Renames localizedString(CFStringRef) to copyLocalizedString() and changed return type to RetainPtr&lt;CFStringRef&gt;.  (A new localizedString(CFStringRef) helper function is added that calls copyLocalizedString().)
- Removes CF_RELEASES_ARGUMENT for formatLocalizedString(), and inverts the WEB_UI_FORMAT_[CF]STRING() macro so that formatLocalizedString() is an implementation detail.
- Attempts to fix GLIB localized string processing for new WEB_UI_FORMAT_STRING() macro.
- Adds back CFSTR() optimization for non-Apple-Windows USE(CF) ports so that a CFStringRef doesn&apos;t need to be created at runtime from a C-string.  The Apple Windows port still creates a no-copy CFStringRef at runtime from the C-string since its default encoding for CFSTR() is Mac Roman, which causes incorrect encoding. 


The only change this patch doesn&apos;t make (that I noticed while working on this) is to introduce a WEB_UI_GLIB_STRING() (and maybe WEB_UI_FORMAT_GLIB_STRING()) macro to avoid the need to localize strings for Apple ports that are never used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817701</commentid>
    <comment_count>41</comment_count>
      <attachid>445110</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-24 13:48:48 -0800</bug_when>
    <thetext>Created attachment 445110
Patch v10 for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817703</commentid>
    <comment_count>42</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-24 13:50:13 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #41)
&gt; Created attachment 445110 [details]
&gt; Patch v10 for landing

- Fix WEB_UI_FORMAT_STRING() macro definitions for gtk and wpe ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817724</commentid>
    <comment_count>43</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-24 17:39:19 -0800</bug_when>
    <thetext>Committed r286156 (244540@main): &lt;https://commits.webkit.org/244540@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445110.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443248</attachid>
            <date>2021-11-03 15:23:42 -0700</date>
            <delta_ts>2021-11-05 10:56:20 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-232686-20211103152341.patch</filename>
            <type>text/plain</type>
            <size>16322</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uMjVlNTcwMjM5NWUzZDUwYjYyZThmY2JlMjQ4ZTJk
YTFlNDQ0NzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTExLTAzICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBtYWNyb3MgaW4g
TG9jYWxpemFibGVTdHJpbmdzLmggY2hlY2sgZm9ybWF0IHN0cmluZ3MgZm9yIGNvbnNpc3RlbmN5
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzI2ODY+CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NDk5NDM0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgcHJpbWFyeSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgdG8gYWxsb3cgdGhl
IGNvbXBpbGVyIHRvIHBhcnNlCisgICAgICAgIGZvcm1hdCBzdHJpbmdzIHRvIGVuc3VyZSB0aGF0
IHRoZSBjb3JyZWN0IG51bWJlciBhbmQgdHlwZSBvZgorICAgICAgICBhcmd1bWVudHMgYXJlIHVz
ZWQuICBUaGUgZXBpcGhhbnkgdG8gbWFrZSB0aGlzIHdvcmsgd2FzIHRoYXQKKyAgICAgICAgQXBw
bGUgcGxhdGZvcm1zIG5lZWRlZCB0byB1c2UgQ0ZTdHJpbmdSZWYgb2JqZWN0cyB0byBhY2NvbXBs
aXNoCisgICAgICAgIHRoaXMsIHdoaWNoIGluY2x1ZGVzIHVzZSBvZiBDRlNUUigpIGluIG1hY3Jv
cyB0byBtYWtlIHRoaXMgd29yaworICAgICAgICBlZmZjaWVudGx5IHdpdGggY3Jvc3MtcGxhdGZv
cm0gY29kZS4KKworICAgICAgICBUbyB0aGF0IGVuZCwgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdl
cmUgbWFkZToKKyAgICAgICAgLSBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSB0YWtlcyBhIENGU3Ry
aW5nUmVmIGBmb3JtYXRgIGZvciBBcHBsZQorICAgICAgICAgIHBsYXRmb3JtcywgYnV0IGEgY29u
c3QgY2hhciogYGZvcm1hdGAgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAtIGxvY2FsaXpl
ZE5TU3RyaW5nKCkgaXMgcmVwbGFjZWQgYnkgbG9jYWxpemVkQ0ZTdHJpbmcoKS4KKyAgICAgICAg
LSBXRUJfVUlfTlNTU1RSSU5HKCkgdXNlcyBicmlkZ2VfY2FzdCgpIHRvIHVzZSB0aGUgQ0ZTdHJp
bmdSZWYKKyAgICAgICAgICBmdW5jdGlvbnMgYXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgor
ICAgICAgICAtIEEgbmV3IGNyb3NzLXBsYXRmb3JtIG1hY3JvIGNhbGxlZCBXRUJfVUlfRk9STUFU
X1NUUklORygpIGlzCisgICAgICAgICAgYWRkZWQgZm9yIHNoYXJlZCBVSSBmb3JtYXQgc3RyaW5n
cy4KKworICAgICAgICAqIFNjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsOgor
ICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIFdFQl9VSV9GT1JNQVRfU1RSSU5HKCkg
bWFjcm9zLgorCisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAtIEltcGxlbWVu
dCB1c2luZyBgQ0ZTdHJpbmdSZWYgZm9ybWF0YCBmb3IgQXBwbGUgcGxhdGZvcm1zLCBidXQKKyAg
ICAgICAgICBgY29uc3QgY2hhciogZm9ybWF0YCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorICAgICAg
ICAtIFVzZSBvZiB0aGVzZSB0eXBlcyBhbGxvd3MgZm9ybWF0IG1hY3JvcyB0byBiZSBhZGRlZCB0
bworICAgICAgICAgIGRlY2xhcmF0aW9ucyBpbiBMb2NhbGl6ZWRTdHJpbmdzLmguCisgICAgICAg
IChXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyk6IEFkZC4KKyAgICAgICAgLSBUaGlzIG1ldGhv
ZCB3YXMgY29udmVydGVkIGZyb20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgorICAgICAgICAgIExv
Y2FsaXplZFN0cmluZ3NDb2NvYS5tbS4KKyAgICAgICAgLSBUaGUgb25seSBkb3duc2lkZSBpcyB0
aGF0IHRoaXMgbWV0aG9kIG11c3QgcmV0dXJuIGFuCisgICAgICAgICAgYXV0b3JlbGVhc2VkIENG
U3RyaW5nUmVmIChzaW1pbGFyIHRvIGxvY2FsaXplZE5TU3RyaW5nKCkpIHNpbmNlCisgICAgICAg
ICAgQ0ZfRk9STUFUX0FSR1VNRU5UKCkgd29uJ3QgYWxsb3cgYSByZXR1cm4gdHlwZSBvZgorICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gTW92ZWQgZnJvbSBMb2NhbGl6ZWRTdHJpbmdzQ29j
b2EubW0uCisgICAgICAgIChXZWJDb3JlOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKToKKyAgICAgICAgLSBV
c2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9ybWF0Cisg
ICAgICAgICAgc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9v
U2hvcnRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1Rl
eHQpOgorICAgICAgICAtIFVzZSBXRUJfVUlfQ0ZTVFJJTkcoKSBmb3IgQXBwbGUgcGxhdGZvcm0g
VUkgZm9ybWF0IHN0cmluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg6CisgICAgICAgIChXRUJfVUlfRk9STUFUX1NUUklORyk6IEFkZC4KKyAgICAgICAgLSBDcm9z
cy1wbGF0Zm9ybSBtYWNybyBmb3IgVUkgZm9ybWF0IHN0cmluZ3MuCisgICAgICAgIChXRUJfVUlf
Q0ZTVFJJTkcpOgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HX0tFWSk6CisgICAgICAgIC0gUmVk
ZWZpbmUgdXNpbmcgbG9jYWxpemVkQ0ZTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OmZvcm1h
dExvY2FsaXplZFN0cmluZyk6CisgICAgICAgIC0gRGVjbGFyZSB1c2luZyBgQ0ZTdHJpbmdSZWYg
Zm9ybWF0YCBmb3IgQXBwbGUgcGxhdGZvcm1zLCBidXQKKyAgICAgICAgICBgY29uc3QgY2hhciog
Zm9ybWF0YCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
TlNTdHJpbmcpOgorICAgICAgICAtIFJlLWltcGxlbWVudCB1c2luZyBsb2NhbGl6ZWRDRlN0cmlu
ZygpLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOiBEZWxldGUuCisgICAgICAg
IC0gTW92ZWQgdG8gbG9jYWxpemVkQ0ZTdHJpbmcoKSBpbiBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBN
b3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0
ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAg
ICAgICAgLSBTd2l0Y2ggZnJvbSBXRUJfVUlfU1RSSU5HKCkgdG8gV0VCX1VJX0NGU1RSSU5HKCkg
Zm9yIFVJIGZvcm1hdAorICAgICAgICAgIHN0cmluZ3MgdXNlZCBvbmx5IG9uIEFwcGxlIHBsYXRm
b3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQpOgor
ICAgICAgICAtIFN3aXRjaCBmcm9tICtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpdIGFuZAor
ICAgICAgICAgIFdFQl9VSV9OU1NUUklORygpIHRvIFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZFN0
cmluZygpIGFuZAorICAgICAgICAgIFdFQl9VSV9DRlNUUklORygpIGZvciBjb25zaXN0ZW5jeS4K
KwogMjAyMS0xMS0wMyAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgYm9yZGVyLXJhZGl1cyBpbmxpbmUgc3R5bGUgc2hvdWxkIHNlcmlhbGl6ZSB3aXRo
IHZhbGlkIHN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0
LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbAppbmRleCBkOTMzOTAxYzVmYTBjZmM0YTFjOGNjZWUyYzVh
MDkwNWZjODFkOWE5Li5jZTllZTllMjhhMTBlYWRlZDBiYjNiNzQwNWM0YjFjMzQzODQwMmY3IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3Ry
aW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUt
c3RyaW5ncy5wbApAQCAtMjQ1LDcgKzI0NSw3IEBAIGhhbmRsZVN0cmluZzoKICAgICAgICAgICAg
ICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZvdW5kICR0b2tlbiBidXQgZXhwZWN0ZWQg
JGV4cGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhD
Rik/U1RSSU5HKF9LRVkpPyhfSU5URVJOQUwpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfTlNT
VFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDJC8pKSB7
CisgICAgICAgICAgICAgICAgaWYgKCgkdG9rZW4gPX4gLyhXRUJfKT9VSV8oQ0YpP1NUUklORyhf
S0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX0ZPUk1BVF9TVFJJTkck
LykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9V
SV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSkgewogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0
ZWQgPSAiKCI7CiAgICAgICAgICAgICAgICAgICAgICRtYWNybyA9ICR0b2tlbjsKICAgICAgICAg
ICAgICAgICAgICAgJFVJU3RyaW5nID0gdW5kZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDExNzNlZjZhMWIyODczOGYxMDExMGFiMGM3Mzg5
YWVhZjU4NDFjNjQuLmZhYzgwM2ZmMmM5YzgzMDk1ZjYzNTg0YzEwZmZlNmM3OTg0ODE0ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC00Mywy
NCArNDMsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBCZWNhdXNlIHxmb3JtYXR8
IGlzIHVzZWQgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQsIGl0IGNhbm5vdCBi
ZSBhIHJlZmVyZW5jZQotLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAxOC43LzMgb2YgdGhl
IEMrKyBOMTkwNSBzdGFuZGFyZC4KLVN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5n
IGZvcm1hdCwgLi4uKQotewogI2lmIFVTRShDRikKK1N0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoQ0ZTdHJpbmdSZWYgZm9ybWF0LCAuLi4pCit7CiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAg
ICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwogCi0gICAgQUxMT1dfTk9OTElURVJBTF9G
T1JNQVRfQkVHSU4KLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRo
Rm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBh
cmd1bWVudHMpKTsKLSAgICBBTExPV19OT05MSVRFUkFMX0ZPUk1BVF9FTkQKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAs
IGZvcm1hdCwgYXJndW1lbnRzKSk7CiAKICAgICB2YV9lbmQoYXJndW1lbnRzKTsKICAgICByZXR1
cm4gcmVzdWx0LmdldCgpOwotI2VsaWYgVVNFKEdMSUIpCit9CisjZWxzZQorLy8gQmVjYXVzZSB8
Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBj
YW5ub3QgYmUgYSByZWZlcmVuY2UKKy8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8z
IG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQuCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworI2lmIFVTRShHTElCKQogICAgIHZhX2xpc3Qg
YXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQudXRmOCgpLmRhdGEoKSwg
YXJndW1lbnRzKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVwX3Zwcmlu
dGYoZm9ybWF0LCBhcmd1bWVudHMpKTsKICAgICB2YV9lbmQoYXJndW1lbnRzKTsKICAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQuZ2V0KCkpOwogI2Vsc2UKQEAgLTY4LDE0ICs3MCwz
MSBAQCBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICAg
ICByZXR1cm4gZm9ybWF0OwogI2VuZGlmCiB9CisjZW5kaWYKIAotI2lmICFVU0UoQ0YpCisjaWYg
VVNFKENGKQorQ0ZTdHJpbmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQor
eworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBk
aXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KKyAgICAvLyBT
ZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4K
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlID0gQ0ZCdW5kbGVHZXRCdW5k
bGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29tLmFwcGxlLldlYkNvcmUiKSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5TG9jYWxpemVkU3RyaW5nKGJ1bmRsZS5nZXQoKS5nZXQoKSwg
a2V5LCBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKSwgbnVsbHB0cikpLmF1dG9y
ZWxlYXNlKCk7Cit9CiAKK1N0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQor
eworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgcmV0dXJuIGxvY2FsaXplZENGU3RyaW5nKGtleVN0cmlu
Zy5nZXQoKSk7Cit9CisjZWxzZQogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBr
ZXkpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CiB9
Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC04MjQsNyArODQzLDcg
QEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4dCgpCiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxv
YWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0
aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0
IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJl
bCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxv
YWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsK
IH0KIAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQpAQCAtOTcyLDEyICs5OTEsMTIgQEAg
U3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCiAgICAgc2Vj
b25kcyAlPSA2MDsKIAogICAgIGlmIChkYXlzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRl
cyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRy
b2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9T
VFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRlcyAlNCRkIHNlY29uZHMiLCAi
YWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+
PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CiAgICAgaWYgKGhvdXJz
KQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUx
JGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNl
Y29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGlt
ZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKICAgICBp
ZiAobWludXRlcykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0
ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51
dGVzLCBzZWNvbmRzKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9T
VFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzKTsKKyAgICAgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBt
aW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25kcyk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygi
JTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9s
bGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMpOwogfQogCiBTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKQEAgLTEwMzgsMTMgKzEwNTcsMTMgQEAg
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCiAjaWYgIVBMQVRG
T1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb1Nob3J0VGV4dChpbnQsIGludCBt
aW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9y
IGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1pbmltdW0g
YWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiVXNlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNo
b3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1pbkxlbmd0aCk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChp
bnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIg
dGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQg
Y2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50
cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4
TGVuZ3RoKTsKIH0KICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmgKaW5kZXggZDg1NmEwZDcwYmM5MGVkNGYwYTY0MTAzZDI3ODE2MmI0ZDIy
MmIxOC4uODY1YTNmNDQ3ZTdkNjM5YWFhYWJlNzFhYTBhZTZkMTAxNjAwYzcwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMjksNiArMjksMTAgQEAK
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUg
PHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgorI2VuZGlmCisKICNpZiBVU0UoR0xJQikgJiYg
ZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNl
bmRpZgpAQCAtMzg3LDE4ICszOTEsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2RlZmluZSBX
RUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25pYywgZGVzY3JpcHRpb24p
IFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCiAjZW5kaWYKIAorI2lmIFVTRShHTElC
KSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJ
Tkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKF8oc3RyaW5n
KSkKKyNlbGlmIFVTRShDRikKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBk
ZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNl
bHNlCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCisjZW5kaWYKKwogI2lmIFVTRShDRikKIC8v
IFRoaXMgaXMgZXhhY3RseSBhcyBXRUJfVUlfU1RSSU5HLCBidXQgcmVuYW1lZCB0byBlbnN1cmUg
dGhlIHN0cmluZyBpcyBub3Qgc2Nhbm5lZCBieSBub24tQ0YgcG9ydHMuCi0jZGVmaW5lIFdFQl9V
SV9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmco
c3RyaW5nKQotI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlw
dGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKGtleSkKKyNkZWZpbmUgV0VCX1VJX0NGU1RS
SU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nKENGU1RS
KHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2Ny
aXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNUUihrZXkpKQorICAgIFdFQkNP
UkVfRVhQT1JUIENGU3RyaW5nUmVmIGxvY2FsaXplZENGU3RyaW5nKENGU3RyaW5nUmVmIGtleSkg
Q0ZfRk9STUFUX0FSR1VNRU5UKDEpOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5nIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pOworCisjaWYgVVNFKENGKQorICAgIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgZm9ybWF0LCAuLi4pIENGX0ZP
Uk1BVF9GVU5DVElPTigxLCAyKTsKKyNlbHNlCisgICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0
cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7
CisjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCiAjZGVmaW5lIFdFQl9VSV9OU1NUUklORyhzdHJp
bmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyhzdHJpbmcpCi0gICAg
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5nICprZXkp
IE5TX0ZPUk1BVF9BUkdVTUVOVCgxKTsKKyAgICBpbmxpbmUgTlNfRk9STUFUX0FSR1VNRU5UKDEp
IE5TU3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyaWRnZV9jYXN0KGxvY2FsaXplZENGU3RyaW5nKGJyaWRnZV9jYXN0KGtleSkp
KTsKKyAgICB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmlu
ZGV4IGZjMzZiZmNhMjVmMDMwYjlmODI5YzI0YjViOTVlZjI2ZDJhNGEwZjMuLmVmODdjMGIwNTkw
YTU4NjNlNmExOWQxYmE4MzEwNGZiMDQyODEyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTM1LDI0ICsz
NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTlNTdHJpbmcgKmxvY2FsaXplZE5TU3Ry
aW5nKE5TU3RyaW5nICprZXkpCi17Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8g
Q2FuIGJlIGNhbGxlZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmlu
Z3Mgb24gaU9TLgotICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6
Ly9wcm9ibGVtLzc5MDI0NzM+LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jZW5kaWYK
LQotICAgIHN0YXRpYyBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVu
dGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKLSAgICByZXR1cm4gW2J1bmRsZSBsb2NhbGl6
ZWRTdHJpbmdGb3JLZXk6a2V5IHZhbHVlOkAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiIHRh
YmxlOm51bGxwdHJdOwotfQotCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtl
eSkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZygoX19i
cmlkZ2UgTlNTdHJpbmcgKilrZXlTdHJpbmcuZ2V0KCkpOwotfQotCiBTdHJpbmcgY29weUltYWdl
VW5rbm93bkZpbGVMYWJlbCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInVua25vd24i
LCAiVW5rbm93biBmaWxlbmFtZSIpOwpAQCAtNzksNyArNjEsNyBAQCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nl
YXJjaFdlYigpCiB7CiAgICAgYXV0byBzZWFyY2hQcm92aWRlck5hbWUgPSBQQUw6OmRlZmF1bHRT
ZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2gg
cHJvdmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiks
IHNlYXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJj
aCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQi
KSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1Nob3dGb250cygpCkBAIC0yMzMsNyArMjE1LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVt
MjA0OCgpCiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9z
dCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktl
eSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VO
IHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtl
eWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNDUsNyAr
MjI3LDcgQEAgU3RyaW5nIGh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKHNpemVfdCBjb3VudCkKICAg
ICBjYXNlIDE6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCIxIEl0ZW0iLCAiUHJlc2Vu
dCB0aGUgZWxlbWVudCA8c2VsZWN0IG11bHRpcGxlPiB3aGVuIGEgc2luZ2xlIDxvcHRpb24+IGlz
IHNlbGVjdGVkIChpT1Mgb25seSkiKTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiV6dSBJdGVtcyIsICJQcmVzZW50IHRo
ZSBudW1iZXIgb2Ygc2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8c2VsZWN0IG11bHRpcGxl
PiBlbGVtZW50IChpT1Mgb25seSkiKSwgY291bnQpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiJXp1IEl0ZW1zIiwgIlByZXNlbnQgdGhlIG51
bWJlciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxlY3QgbXVsdGlwbGU+IGVs
ZW1lbnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7CiAgICAgfQogfQogCkBAIC0yNzgsNyArMjYwLDcg
QEAgU3RyaW5nIGZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCkKIAogU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBb
TlNTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJVc2Ug
bm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBm
b3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFs
bG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aF07CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1
ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443417</attachid>
            <date>2021-11-05 10:56:22 -0700</date>
            <delta_ts>2021-11-05 13:40:53 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-232686-20211105105621.patch</filename>
            <type>text/plain</type>
            <size>39693</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uZTZhZTNkODA0N2VhZDgwOGFkNDY5ZGIxODUwY2Qx
YjAyMTAxYTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMS0xMS0wNSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIHRvCisgICAgICAgIGFjY29tcGxpc2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9m
IENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8gQ0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGlt
ZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29udGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgor
ICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9y
bWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8gdGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFz
c2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmluZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJ
XyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGluIHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0
Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3Is
CisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2Vk
IE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNT
dHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVybiB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0
b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6
ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2lu
ZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NU
UklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9j
YWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZv
cm1hdGAgZm9yIEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZv
cm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMg
YWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBk
ZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBg
Zm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAg
ICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2NhbGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJl
dHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1B
VF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAorICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNp
bmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
Q0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gVGhpcyBtZXRob2Qgd2FzIGNvbnZlcnRlZCBmcm9t
IGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2Eu
bW0uCisgICAgICAgIC0gVGhpcyBtZXRob2QgbXVzdCByZXR1cm4gYSArMSByZXRhaW5lZCBDRlN0
cmluZ1JlZiAodG8gYXZvaWQKKyAgICAgICAgICBhdXRvcmVsZWFzaW5nIGl0KSBzaW5jZSBDRl9G
T1JNQVRfQVJHVU1FTlQoKSB3b24ndCBhbGxvdyBhCisgICAgICAgICAgcmV0dXJuIHR5cGUgb2Yg
UmV0YWluUHRyPENGU3RyaW5nUmVmPi4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
Zyk6IEFkZCBmb3IgVVNFKENGKS4KKyAgICAgICAgLSBNb3ZlZCBmcm9tIExvY2FsaXplZFN0cmlu
Z3NDb2NvYS5tbSwgYW5kIGNoYW5nZWQgdG8gdGFrZSBhCisgICAgICAgICAgQ0ZTdHJpbmdSZWYg
YXJndW1lbnQgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICAg
IENGU3RyaW5nUmVmIGF0IHJ1bnRpbWUuCisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnVHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9ydFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5k
Q2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2lu
ZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmREZXNj
cmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZENoYXB0
ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRNZXRhZGF0YVN1
ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kU0RIU3VmZml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5UmVhZGVyU3VmZml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KToKKyAgICAgICAgKFdlYkNv
cmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAgICAgLSBVc2UgV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9ybWF0CisgICAgICAgICAgc3RyaW5n
cywgYW5kIHVzZSBXRUJfVUlfRk9SQU1UX0NGU1RSSU5HW19LRVldKCkgZm9yIEFwcGxlCisgICAg
ICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlfU1RSSU5HKTogQWRkLgorICAgICAg
ICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAgIChXRUJfVUlfU1RSSU5HX1dJVEhf
TU5FTU9OSUMpOiBBZGQuCisgICAgICAgIC0gQWRkIHNlcGFyYXRlIG1hY3JvcyBmb3IgVVNFKENG
KSBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZQorICAgICAgICAgIHRyYW5zZm9ybWVkIGF0IGNv
bXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNUUigpLgorICAgICAgICAoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcpOiBBZGQuCisgICAgICAgIC0gQ3Jvc3MtcGxhdGZvcm0gbWFjcm8gZm9y
IFVJIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAtIE5vdGUgdGhhdCBub24tVVNFKENGKSBtYWNy
b3MgZXNzZW50aWFsbHkgZG8gbm90aGluZyBzaW5jZQorICAgICAgICAgIGxvY2FsaXplZFN0cmlu
ZygpIGp1c3QgY29udmVydHMgY29uc3QgY2hhciogdG8gV1RGOjpTdHJpbmcsCisgICAgICAgICAg
YW5kIGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtlcyBhIGNvbnN0IGNoYXIqLgorICAg
ICAgICAoV0VCX1VJX0NGU1RSSU5HKToKKyAgICAgICAgKFdFQl9VSV9DRlNUUklOR19LRVkpOgor
ICAgICAgICAtIENoYW5nZSBtYWNyb3Mgc28gdGhhdCBhcmd1bWVudHMgY291bGQgYmUgdHJhbnNm
b3JtZWQgYXQKKyAgICAgICAgICBjb21waWxlLXRpbWUgdG8gQ0ZTdHJpbmdSZWYgdXNpbmcgQ0ZT
VFIoKS4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcpOiBBZGQuCisgICAgICAgIChX
RUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSk6IEFkZC4KKyAgICAgICAgLSBUaGVzZSBtYWNyb3Mg
YXJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZyBhcmd1bWVudHMgdG8KKyAgICAgICAgICBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nKTog
QWRkLgorICAgICAgICAtIERlY2xhcmUgbmV3IGZ1bmN0aW9uIGNvbnZlcnRlZCBmcm9tIGxvY2Fs
aXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0uCisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gQWRkIG5l
dyBkZWNsYXJhdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2VzIGEgQ0ZTdHJpbmdSZWYKKyAgICAg
ICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZFN0cmluZyk6
CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdSZWYgZm9ybWF0YCBmb3IgQXBwbGUg
cGxhdGZvcm1zLCBhbmQKKyAgICAgICAgICBgY29uc3QgY2hhciogZm9ybWF0YCBmb3Igb3RoZXIg
cGxhdGZvcm1zIHNvIGZvcm1hdCBtYWNyb3MgbWF5CisgICAgICAgICAgYmUgYWRkZWQgdG8gdGhl
IGRlbGFyYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyk6CisgICAg
ICAgIC0gUmUtaW1wbGVtZW50IGFzIGFuIGlubGluZSBmdW5jdGlvbiB1c2luZyBsb2NhbGl6ZWRD
RlN0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOiBEZWxldGUuCisg
ICAgICAgIC0gTW92ZWQgdG8gbG9jYWxpemVkQ0ZTdHJpbmcoKSBpbiBMb2NhbGl6ZWRTdHJpbmdz
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAg
ICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXlj
aGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1z
KToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSBXRUJfVUlfU1RSSU5HKCkgdG8gV0VCX1VJX0ZPUk1B
VF9DRlNUUklORygpIGR1ZSB0bworICAgICAgICAgIHRoZSBuZXcgcnVsZSBmb3IgbG9jYWxpemVk
IGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29M
b25nVGV4dCk6CisgICAgICAgIC0gU3dpdGNoIGZyb20gK1tOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0Ol0gYW5kCisgICAgICAgICAgV0VCX1VJX05TU1RSSU5HKCkgdG8gV2ViQ29yZTo6Zm9ybWF0
TG9jYWxpemVkU3RyaW5nKCkgYW5kCisgICAgICAgICAgV0VCX1VJX0ZPUk1BVF9DRlNUUklORygp
IGZvciBjb25zaXN0ZW5jeS4KKwogMjAyMS0xMS0wMyAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBh
cmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgYm9yZGVyLXJhZGl1cyBpbmxpbmUgc3R5bGUgc2hv
dWxkIHNlcmlhbGl6ZSB3aXRoIHZhbGlkIHN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDRmOGM2OTFhODU4ZGNjYzNiYThmNTkzMjRhMTZlNjIyOTM0NWIzMTkuLmNhZWUwMGNj
MGRjMzA3YjZmNzY2ODExNmY3NmFjZWFmZmE4YThiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNr
IGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbToKKyAgICAgICAgKFdlYkxvY2FsaXpl
ZFN0cmluZ0ludGVybmFsKToKKyAgICAgICAgLSBVc2UgbG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0
ZWFkIG9mIGxvY2FsaXplZFN0cmluZygpIHRvCisgICAgICAgICAgZWxpbWluYXRlIHRoZSBuZWVk
IHRvIGNvbnZlcnQgZnJvbQorICAgICAgICAgIENGU3RyaW5nIC0+IFN0cmluZyAtPiBOU1N0cmlu
Zy4KKwogMjAyMS0xMS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgaU9TIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUv
U2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKaW5kZXggZDkzMzkwMWM1ZmEw
Y2ZjNGExYzhjY2VlMmM1YTA5MDVmYzgxZDlhOS4uOGY2NDZlN2RjNGUyNzg3ZmZmMjVjMjc2Mzlm
OTc4ZGQ1YWNhMDZhMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0
LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRy
YWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2Vu
diBwZXJsCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xODYsNyArMTg2LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRGLTggaGVyZT8KICAgICAgICAgICAgICAgICAgICAg
ICAgICRVSVN0cmluZyA9ICRzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0
ZWQgPSAiLCI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJf
KT9VSV8oQ0YpP1NUUklOR19LRVkoX0lOVEVSTkFMKT8kLykgYW5kICFkZWZpbmVkICRrZXkpIHsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNybyA9fiAvKFdFQl8pP1VJKF9GT1JN
QVQpP18oQ0YpP1NUUklOR19LRVkoX0lOVEVSTkFMKT8kLykgYW5kICFkZWZpbmVkICRrZXkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/CiAg
ICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAg
ICAgICAgICRleHBlY3RlZCA9ICIsIjsKQEAgLTI0NSw3ICsyNDUsNyBAQCBoYW5kbGVTdHJpbmc6
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcigkZmlsZSwgJC4sICJmb3VuZCAkdG9rZW4g
YnV0IGV4cGVjdGVkICRleHBlY3RlZCIpOwogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQg
PSAiIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCgkdG9rZW4gPX4g
LyhXRUJfKT9VSV8oQ0YpP1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9
fiAvV0VCX1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9N
TkVNT05JQyQvKSkgeworICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlf
KENGKT9TVFJJTkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9G
T1JNQVRfKENGKT9TVFJJTkcoX0tFWSk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9OU1NUUklO
RyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykpIHsKICAg
ICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIigiOwogICAgICAgICAgICAgICAgICAgICAk
bWFjcm8gPSAkdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICRVSVN0cmluZyA9IHVuZGVmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCAxMTcz
ZWY2YTFiMjg3MzhmMTAxMTBhYjBjNzM4OWFlYWY1ODQxYzY0Li4xNzUyMzJhMjk4YTAzNTdiZWFh
MzNiYTFlNmFmOWNmNWJkZDBkZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDMsMjQgKzQzLDI3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFz
IHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVu
Y2UKLS8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUg
c3RhbmRhcmQuCi1TdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4u
LikKLXsKICNpZiBVU0UoQ0YpCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5n
UmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UIGZvcm1hdCwgLi4uKQorewogICAgIHZhX2xpc3QgYXJn
dW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKIAotICAgIEFMTE9XX05P
TkxJVEVSQUxfRk9STUFUX0JFR0lOCi0gICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgYXJndW1lbnRzKSk7Ci0gICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECisg
ICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3Vt
ZW50cygwLCAwLCBmb3JtYXQsIGFyZ3VtZW50cykpOwogCiAgICAgdmFfZW5kKGFyZ3VtZW50cyk7
CisgICAgQ0ZSZWxlYXNlKGZvcm1hdCk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLSNlbGlm
IFVTRShHTElCKQorfQorI2Vsc2UKKy8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNlZCBhcyB0aGUg
c2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVmZXJlbmNlCisv
LyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4xOTA1IHN0YW5k
YXJkLgorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKK3sKKyNpZiBVU0UoR0xJQikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFy
dChhcmd1bWVudHMsIGZvcm1hdCk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3Ry
ZHVwX3ZwcmludGYoZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGFyZ3VtZW50cykpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHJlc3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdCwgYXJndW1lbnRzKSk7
CiAgICAgdmFfZW5kKGFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVz
dWx0LmdldCgpKTsKICNlbHNlCkBAIC02OCwxNCArNzEsMzAgQEAgU3RyaW5nIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAgICAgcmV0dXJuIGZvcm1hdDsKICNlbmRp
ZgogfQorI2VuZGlmCiAKLSNpZiAhVVNFKENGKQorI2lmIFVTRShDRikKK0NGU3RyaW5nUmVmIGxv
Y2FsaXplZENGU3RyaW5nKENGU3RyaW5nUmVmIGtleSkKK3sKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGEgZGlzcGF0Y2ggcXVldWUgd2hlbiBpbml0
aWFsaXppbmcgc3RyaW5ncyBvbiBpT1MuCisgICAgLy8gU2VlIExvYWRXZWJMb2NhbGl6ZWRTdHJp
bmdzIGFuZCA8cmRhcjovL3Byb2JsZW0vNzkwMjQ3Mz4uCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyNlbmRpZgogCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1
bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIo
ImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAgIHJldHVybiBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRT
dHJpbmcoYnVuZGxlLmdldCgpLmdldCgpLCBrZXksIENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5v
dCBmb3VuZCIpLCBudWxscHRyKTsKK30KKworU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmlu
Z1JlZiBrZXkpCit7CisgICAgcmV0dXJuIGFkb3B0Q0YobG9jYWxpemVkQ0ZTdHJpbmcoa2V5KSku
Z2V0KCk7Cit9CisjZWxzZQogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkp
CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CiB9Ci0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMzMsOSArMjUyLDkgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcm
IHNlbGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJp
bmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZT
dHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
RygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0i
LCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0
ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBj
b250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVkU3RyaW5nRm9y
TWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0i
LCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNh
dGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8c2VsZWN0aW9uPuKAnSIs
ICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLnJlcGxhY2Uo
IjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcp
KTsKICNlbmRpZgpAQCAtMjQ2LDcgKzI2NSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykK
IHsKICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRl
bShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5z
bGF0ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0
cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX0NGU1RSSU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVu
dSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKIH0K
IAogI2VuZGlmCkBAIC04MjQsNyArODQzLDcgQEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4dCgp
CiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMp
CiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlZCBm
aWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGlu
IGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1i
ZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JN
QVRfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZp
bGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBs
ZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKIH0KIAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRl
eHQoKQpAQCAtODQ2LDExICs4NjUsMTEgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBhdXRvIGhlaWdodCA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAg
IGF1dG8gaGVpZ2h0U3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmlu
Z1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAotICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4
ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxp
Y2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVs
cyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNh
dGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3
aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQot
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMgJWTDlyVk
IHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0
aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxl
IGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3Qg
eCkiKSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKICNlbHNlCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5H
KCI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxv
bmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIjxmaWxl
bmFtZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CiAjZW5kaWYKIH0K
IApAQCAtOTcyLDEyICs5OTEsMTIgQEAgU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0
aW9uKGZsb2F0IHRpbWUpCiAgICAgc2Vjb25kcyAlPSA2MDsKIAogICAgIGlmIChkYXlzKQotICAg
ICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgZGF5
cyAlMiRkIGhvdXJzICUzJGQgbWludXRlcyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBo
ZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlz
LCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQg
bWludXRlcyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlh
IGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywg
c2Vjb25kcyk7CiAgICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25k
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZh
bHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGhv
dXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBt
aW51dGVzLCBzZWNvbmRzKTsKICAgICBpZiAobWludXRlcykKLSAgICAgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRz
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFs
dWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51dGVzLCBzZWNvbmRzKTsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmls
aXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25k
cyIpLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmls
aXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29u
ZHMiKSwgbWludXRlcywgc2Vjb25kcyk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNl
Y29uZHMpOwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkK
QEAgLTEwMzgsMTMgKzEwNTcsMTMgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1p
c21hdGNoVGV4dCgpCiAjaWYgIVBMQVRGT1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVRvb1Nob3J0VGV4dChpbnQsIGludCBtaW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFs
dWUgc2hvcnRlciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVz
ZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBj
b250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWluaW11bSBhbGxvd2Vk
IGxlbmd0aCIpLCBtaW5MZW5ndGgpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIG5vIG1vcmUg
dGhhbiAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9s
IGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0
aCIpLCBtYXhMZW5ndGgpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9y
dGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQogI2VuZGlm
CiAjZW5kaWYKQEAgLTEwNTIsOSArMTA3MSw5IEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRv
b0xvbmdUZXh0KGludCwgaW50IG1heExlbmd0aCkKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJh
bmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1pbmltdW0pCiB7CiAjaWYgVVNFKENGKQot
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJWYWx1ZSBt
dXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWlu
aW11bSIpLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1
dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwg
bWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBiZSBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1
dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwg
bWluaW11bS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRh
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWluaW11bSk7CiAgICAgcmV0dXJuIFdFQl9V
SV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0
IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpOwpA
QCAtMTA2NCw5ICsxMDgzLDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZs
b3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJh
bmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4aW11bSkKIHsKICNpZiBVU0UoQ0YpCi0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11
c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
aW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11
bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBsZXNz
IHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGlt
dW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBj
b250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVt
LnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhp
Z2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLnV0ZjgoKS5kYXRhKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obWF4aW11bSk7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
InJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250
cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpOwpAQCAtMTEwOSw3
ICsxMTI4LDcgQEAgU3RyaW5nIHRleHRUcmFja0F1dG9tYXRpY01lbnVJdGVtVGV4dCgpCiAKIFN0
cmluZyBhZGRUcmFja0xhYmVsQXNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJp
bmcmIGxhYmVsKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HX0tFWSgiJUAgKCVAKSIsICIlQCAoJUApIChhdWRpby90ZXh0IHRyYWNrKSIsICJBdWRp
by9UZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwg
YW5kIGxhbmd1YWdlIG9mIHRoZSB0cmFjaywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJl
bCknLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhYmVsLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAICglQCkiLCAiJUAgKCVAKSAoYXVkaW8vdGV4dCB0cmFjaykiLCAi
QXVkaW8vVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxh
YmVsIGFuZCBsYW5ndWFnZSBvZiB0aGUgdHJhY2ssIGluIHRoZSBmb3JtIG9mICdMYW5ndWFnZSAo
TGFiZWwpJy4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rp
c3BsYXlOYW1lKCkKQEAgLTExMjEsNyArMTE0MCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5k
Q2xvc2VkQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rp
c3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZT
VFJJTkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25z
IHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFn
ZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX0NGU1RSSU5HX0tFWSgiJUAgQ0MiLCAiJUAgQ0MgKHRleHQgdHJhY2spIiwgIkNsb3NlZCBj
YXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUg
bGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDQycpLiIpLCB0ZXh0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENhcHRpb25zRGlz
cGxheU5hbWUoKQpAQCAtMTEzMyw3ICsxMTUyLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRD
YXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZENhcHRpb25zRGlzcGxheU5hbWUoKTsK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVA
IENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0IHRyYWNrKSIsICJDYXB0aW9ucyB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0IHRyYWNrKSIs
ICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9ucycpLiIpLCB0
ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZERl
c2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExNDUsNyArMTE2NCw3IEBAIFN0cmluZyBhZGRU
ZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAg
ICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kRGVzY3Jp
cHRpb25zRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKHRl
eHQgdHJhY2spIiwgIkRlc2NyaXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBE
ZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBE
ZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zICh0ZXh0IHRyYWNrKSIsICJEZXNjcmlwdGlv
bnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1
YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2hhcHRl
cnNEaXNwbGF5TmFtZSgpCkBAIC0xMTU3LDcgKzExNzYsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNr
S2luZENoYXB0ZXJzU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFt
ZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tF
WSgiJUAgQ2hhcHRlcnMiLCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJhY2spIiwgIkNoYXB0ZXJzIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENoYXB0ZXJzJykuIiksIHRleHQuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMiLCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJh
Y2spIiwgIkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1
ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENoYXB0ZXJzJyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tL
aW5kTWV0YWRhdGFEaXNwbGF5TmFtZSgpCkBAIC0xMTY5LDcgKzExODgsNyBAQCBTdHJpbmcgYWRk
VGV4dFRyYWNrS2luZE1ldGFkYXRhU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kTWV0YWRhdGFE
aXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEgKHRleHQgdHJhY2spIiwgIk1l
dGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBs
YW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1ldGFkYXRhJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEg
KHRleHQgdHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1l
dGFkYXRhJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0
ZXh0VHJhY2tLaW5kU0RIRGlzcGxheU5hbWUoKQpAQCAtMTE4MSw3ICsxMjAwLDcgQEAgU3RyaW5n
IGFkZFRleHRUcmFja0tpbmRTREhTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRTREhEaXNwbGF5
TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5H
X0tFWSgiJUAgU0RIIiwgIiVAIFNESCAodGV4dCB0cmFjaykiLCAiU0RIIChpLmUuIGRlYWYgYW5k
L29yIGhhcmQgb2YgaGVhcmluZykgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggU0RIJyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgU0RIIiwgIiVAIFNESCAo
dGV4dCB0cmFjaykiLCAiU0RIIChpLmUuIGRlYWYgYW5kL29yIGhhcmQgb2YgaGVhcmluZykgdGV4
dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFu
ZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggU0RIJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1l
KCkKQEAgLTExOTMsNyArMTIxMiw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRl
clN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpOwotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRWFz
eSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIgKHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChp
LmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBS
ZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBFYXN5IFJl
YWRlciIsICIlQCBFYXN5IFJlYWRlciAodGV4dCB0cmFjaykiLCAiRWFzeSBSZWFkZXIgKGkuZS4g
M3JkLWdyYWRlIGxldmVsKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBFYXN5IFJlYWRl
cicpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRy
YWNrS2luZEZvcmNlZERpc3BsYXlOYW1lKCkKQEAgLTEyMDUsNyArMTIyNCw3IEBAIFN0cmluZyBh
ZGRUZXh0VHJhY2tLaW5kRm9yY2VkU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kRm9yY2VkRGlz
cGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNU
UklOR19LRVkoIiVAIEZvcmNlZCIsICIlQCBGb3JjZWQgKHRleHQgdHJhY2spIiwgIkZvcmNlZCB0
ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
YW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBGb3JjZWQnKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIs
ICJGb3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhl
IGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBhdWRpb1RyYWNrS2luZERlc2Ny
aXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTEyMTcsNyArMTIzNiw3IEBAIFN0cmluZyBhZGRBdWRp
b1RyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAg
aWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXVkaW9UcmFja0tpbmREZXNjcmlw
dGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAoYXVk
aW8gdHJhY2spIiwgIkRlc2NyaXB0aW9ucyBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2gg
RGVzY3JpcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAg
RGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAoYXVkaW8gdHJhY2spIiwgIkRlc2NyaXB0
aW9ucyBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxh
bmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBhdWRpb1RyYWNrS2luZENv
bW1lbnRhcnlEaXNwbGF5TmFtZSgpCkBAIC0xMjI5LDcgKzEyNDgsNyBAQCBTdHJpbmcgYWRkQXVk
aW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZENvbW1lbnRh
cnlEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21tZW50YXJ5IChhdWRpbyB0cmFj
aykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5j
bHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFy
eScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENvbW1lbnRhcnki
LCAiJUAgQ29tbWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1lbnRhcnkgYXVkaW8gdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRikKQEAgLTEyNTYsOSArMTI3NSw5IEBAIFN0
cmluZyB1c2VCbG9ja2VkUGx1Z0luQ29udGV4dE1lbnVUaXRsZSgpCiBTdHJpbmcgd2ViQ3J5cHRv
TWFzdGVyS2V5S2V5Y2hhaW5MYWJlbChjb25zdCBTdHJpbmcmIGxvY2FsaXplZEFwcGxpY2F0aW9u
TmFtZSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfQ0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGlj
YXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxp
emVkQXBwbGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJUAgV2ViQ3J5cHRv
IE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFz
dGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVzIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUg
b2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4i
KSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzIFdlYkNyeXB0byBN
YXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3Rl
ciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0ZjgoKS5kYXRh
KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiPGFwcGxpY2F0aW9uPiBXZWJD
cnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0
byBtYXN0ZXIga2V5IGluIEtleWNoYWluIikucmVwbGFjZSgiPGFwcGxpY2F0aW9uPiIsIGxvY2Fs
aXplZEFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKQEAgLTEzMzIsMTIgKzEzNTEsMTIgQEAgU3Ry
aW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKIC8vIGluZm9ybWF0aW9uIGlzIHByb3Zp
ZGVkIHRvIGhlbHAgdXNlcnMgdG8gbWFrZSBkZWNpc2lvbnMuCiBTdHJpbmcgbWFrZUNyZWRlbnRp
YWxUb3VjaElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9D
RlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91Y2ggSUQgZm9yIOKAnCVA4oCd
LiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2UgVG91Y2ggSUQgdG8gc2lnbiBp
biB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZpY2UiKSwgYnVuZGxlTmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCLi
gJwlQOKAnSB3b3VsZCBsaWtlIHRvIHVzZSBUb3VjaCBJRCBmb3Ig4oCcJUDigJ0uIiwgIkFsbG93
IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHVzZSBUb3VjaCBJRCB0byBzaWduIGluIHRvIHRoZSBz
cGVjaWZpZWQgd2Vic2l0ZSBvbiB0aGlzIGRldmljZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5n
IGdldEFzc2VydGlvblRvdWNoSURQcm9tcHRUaXRsZShjb25zdCBTdHJpbmcmIGJ1bmRsZU5hbWUs
IGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHNpZ24gaW4gdG8g4oCc
JUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHNpZ24gaW4gdG8gdGhlIHNw
ZWNpZmllZCB3ZWJzaXRlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9t
YWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byBzaWdu
IGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byBzaWduIGlu
IHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGdlbmVy
aWNUb3VjaElEUHJvbXB0VGl0bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oCmluZGV4IGQ4NTZhMGQ3MGJjOTBlZDRmMGE2NDEwM2QyNzgxNjJiNGQyMjJiMTgu
LjJiMzFmNjQ4YTY2ZTRiNWNjODEwNGNlMDRlMzg4ODA0MTc3Y2ZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTI5LDYgKzI5LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCisjaWZkZWYgX19P
QkpDX18KKyNpbmNsdWRlIDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KKyNlbmRpZgorCiAj
aWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+CiAjZW5kaWYKQEAgLTM3Nyw3ICszODEsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFN0cmluZyk7CiAjZW5kaWYKIAotI2lmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdF
VFRFWFRfUEFDS0FHRSkKKyNpZiBVU0UoQ0YpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5n
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisj
ZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lU
SF9NTkVNT05JQyhzdHJpbmcsIG1uZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxp
emVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRU
RVhUX1BBQ0tBR0UpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikg
V2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKF8oc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklO
R19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmco
Q18oa2V5LCBzdHJpbmcpKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3Ry
aW5nLCBtbmVtb25pYywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKG1u
ZW1vbmljKSkKQEAgLTM4OCwxNyArMzk2LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRp
ZgogCiAjaWYgVVNFKENGKQotLy8gVGhpcyBpcyBleGFjdGx5IGFzIFdFQl9VSV9TVFJJTkcsIGJ1
dCByZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3RyaW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBw
b3J0cy4KLSNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNv
cmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCi0jZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVko
c3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQor
I2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3Jl
Ojpsb2NhbGl6ZWRDRlN0cmluZyhDRlNUUihzdHJpbmcpKQorI2VsaWYgVVNFKEdMSUIpICYmIGRl
ZmluZWQoR0VUVEVYVF9QQUNLQUdFKQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJp
bmcsIGRlc2NyaXB0aW9uKSAoXyhzdHJpbmcpKQorI2Vsc2UKKyNkZWZpbmUgV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgKHN0cmluZykKICNlbmRpZgogCisjaWYgVVNF
KENGKQorLy8gVGhpcyBpcyBleGFjdGx5IGFzIFdFQl9VSV9bRk9STUFUX11TVFJJTkcsIGJ1dCBy
ZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3RyaW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0
cy4KKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6
OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdf
S0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENG
U1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlw
dGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUg
V0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJD
b3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNUUihrZXkpKQorICAgIFdFQkNPUkVfRVhQT1JUIENG
U3RyaW5nUmVmIGxvY2FsaXplZENGU3RyaW5nKENGU3RyaW5nUmVmIGtleSkgQ0ZfRk9STUFUX0FS
R1VNRU5UKDEpIENGX1JFVFVSTlNfUkVUQUlORUQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpOworI2Vsc2UKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5n
IGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pOworI2VuZGlmCisKKyNp
ZiBVU0UoQ0YpCisgICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBD
Rl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikgQ0ZfRk9STUFUX0ZVTkNUSU9OKDEsIDIp
OworI2Vsc2UKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGZv
cm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKyNlbmRpZgogCiAjaWZkZWYg
X19PQkpDX18KICNkZWZpbmUgV0VCX1VJX05TU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdl
YkNvcmU6OmxvY2FsaXplZE5TU3RyaW5nKHN0cmluZykKLSAgICBXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkgTlNfRk9STUFUX0FSR1VNRU5U
KDEpOworICAgIGlubGluZSBOU19GT1JNQVRfQVJHVU1FTlQoMSkgTlNTdHJpbmcgKmxvY2FsaXpl
ZE5TU3RyaW5nKE5TU3RyaW5nICprZXkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHROUyhi
cmlkZ2VfY2FzdChsb2NhbGl6ZWRDRlN0cmluZyhicmlkZ2VfY2FzdChrZXkpKSkpLmF1dG9yZWxl
YXNlKCk7CisgICAgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5t
bQppbmRleCBmYzM2YmZjYTI1ZjAzMGI5ZjgyOWMyNGI1Yjk1ZWYyNmQyYTRhMGYzLi40MjE2ZDQ5
YTA1NjFlMDk2YjA0OTJmNDc3MTM3NmY3NWJjNWE0NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUs
MjQgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OU1N0cmluZyAqbG9jYWxpemVk
TlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKLXsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAvLyBDYW4gYmUgY2FsbGVkIG9uIGEgZGlzcGF0Y2ggcXVldWUgd2hlbiBpbml0aWFsaXppbmcg
c3RyaW5ncyBvbiBpT1MuCi0gICAgLy8gU2VlIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzIGFuZCA8
cmRhcjovL3Byb2JsZW0vNzkwMjQ3Mz4uCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNl
bmRpZgotCi0gICAgc3RhdGljIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOwotICAgIHJldHVybiBbYnVuZGxlIGxv
Y2FsaXplZFN0cmluZ0ZvcktleTprZXkgdmFsdWU6QCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3Vu
ZCIgdGFibGU6bnVsbHB0cl07Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hh
cioga2V5KQotewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplZE5TU3RyaW5n
KChfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQoKSk7Ci19Ci0KIFN0cmluZyBjb3B5
SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygidW5r
bm93biIsICJVbmtub3duIGZpbGVuYW1lIik7CkBAIC03OSw3ICs2MSw3IEBAIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoV2ViKCkKIHsKICAgICBhdXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IFBBTDo6ZGVm
YXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNl
YXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0
ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJj
aCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5h
bWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCkBAIC0yMzMsNyArMjE1LDcgQEAgU3RyaW5nIGtl
eWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0
IFN0cmluZyYgaG9zdCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBi
eSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiS2V5IGZy
b20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFn
IiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMjQ1LDcgKzIyNyw3IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlwbGVJdGVt
cyhzaXplX3QgY291bnQpCiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklO
RygiMSBJdGVtIiwgIlByZXNlbnQgdGhlIGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4gd2hlbiBh
IHNpbmdsZSA8b3B0aW9uPiBpcyBzZWxlY3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlenUg
SXRlbXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGlu
IGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKKyAgICAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIl
enUgSXRlbXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1z
IGluIGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKICAg
ICB9CiB9CiAKQEAgLTI3OCw3ICsyNjAsNyBAQCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9u
VGl0bGUoKQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBt
YXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBsb2NhbGl6ZWRTdHJpbmdXaXRoRm9y
bWF0OldFQl9VSV9OU1NUUklORyhAIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwg
QCJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFs
dWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoXTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVz
ZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
Zm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBh
bGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3NJbnRlcm5hbC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFi
bGVTdHJpbmdzSW50ZXJuYWwubW0KaW5kZXggOWU2NTY5ZjdhYzcxNDExOGRkMGJmMzZjMWM5OWYy
ZjM3NmJlNTEyNi4uYTc3NWVlYzY2ZjA0ZTQ2MmFlYjcwYWNmYTAxYWQ2MmFjNmFjZjU1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3NJbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2Fs
aXphYmxlU3RyaW5nc0ludGVybmFsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxMiBAQAogI2ltcG9ydCAiV2ViTG9j
YWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIE5TU3RyaW5nICpXZWJMb2NhbGl6ZWRTdHJpbmdJbnRlcm5hbChjb25z
dCBjaGFyKiBrZXkpCiB7Ci0gICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZyhrZXkpOworICAgIC8v
IEZJWE1FOiBDaGFuZ2UgY2FsbGVycyB0byB1c2UgTlNTdHJpbmcgbGl0ZXJhbHMgdG8gZWxpbWlu
YXRlIHRoaXMgc3RlcC4KKyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZyhicmlkZ2VfY2FzdChr
ZXlTdHJpbmcuZ2V0KCkpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443432</attachid>
            <date>2021-11-05 13:40:55 -0700</date>
            <delta_ts>2021-11-05 14:12:10 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-232686-20211105134054.patch</filename>
            <type>text/plain</type>
            <size>42534</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uNjBhYjc3NmNhMWM1MDA0NWMzZDFlZjFmYTRhNmM5
NDIyMzVlYzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0xMS0wNSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIHRvCisgICAgICAgIGFjY29tcGxpc2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9m
IENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8gQ0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGlt
ZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29udGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgor
ICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9y
bWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8gdGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFz
c2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmluZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJ
XyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGluIHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0
Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3Is
CisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2Vk
IE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNT
dHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVybiB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0
b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6
ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2lu
ZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NU
UklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9j
YWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZv
cm1hdGAgZm9yIEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZv
cm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMg
YWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBk
ZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBg
Zm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAg
ICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2NhbGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJl
dHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1B
VF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAorICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNp
bmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZUJ1
bmRsZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdldHRpbmcgYSBDRkJ1bmRs
ZVJlZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRvIGEgZnVuY3Rpb24gdGhh
dCdzIHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4KKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIFRoaXMgbWV0aG9kIHdhcyBj
b252ZXJ0ZWQgZnJvbSBsb2NhbGl6ZWROU1N0cmluZygpIGluCisgICAgICAgICAgTG9jYWxpemVk
U3RyaW5nc0NvY29hLm1tIGFuZCBmcm9tIGxvY2FsaXplZFN0cmluZygpIGluCisgICAgICAgICAg
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAuCisgICAgICAgIC0gVGhpcyBtZXRob2QgbXVzdCByZXR1
cm4gYSArMSByZXRhaW5lZCBDRlN0cmluZ1JlZiAodG8gYXZvaWQKKyAgICAgICAgICBhdXRvcmVs
ZWFzaW5nIGl0KSBzaW5jZSBDRl9GT1JNQVRfQVJHVU1FTlQoKSB3b24ndCBhbGxvdyBhCisgICAg
ICAgICAgcmV0dXJuIHR5cGUgb2YgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4KKyAgICAgICAgKFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IEFkZCBmb3IgVVNFKENGKS4KKyAgICAgICAgLSBNb3Zl
ZCBmcm9tIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSwgYW5kIGNoYW5nZWQgdG8gdGFrZSBhCisg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgYXJndW1lbnQgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNy
ZWF0ZSBhIG5ldworICAgICAgICAgIENGU3RyaW5nUmVmIGF0IHJ1bnRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9y
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjphZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRl
eHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJh
Y2tLaW5kU0RIU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5
UmVhZGVyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3Vm
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAg
ICAgLSBVc2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9y
bWF0CisgICAgICAgICAgc3RyaW5ncywgYW5kIHVzZSBXRUJfVUlfRk9SQU1UX0NGU1RSSU5HW19L
RVldKCkgZm9yIEFwcGxlCisgICAgICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlf
U1RSSU5HKTogQWRkLgorICAgICAgICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAg
IChXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMpOiBBZGQuCisgICAgICAgIC0gQWRkIHNlcGFy
YXRlIG1hY3JvcyBmb3IgVVNFKENGKSBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZQorICAgICAg
ICAgIHRyYW5zZm9ybWVkIGF0IGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNU
UigpLgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9TVFJJTkcpOiBBZGQuCisgICAgICAgIC0gQ3Jv
c3MtcGxhdGZvcm0gbWFjcm8gZm9yIFVJIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAtIE5vdGUg
dGhhdCBub24tVVNFKENGKSBtYWNyb3MgZXNzZW50aWFsbHkgZG8gbm90aGluZyBzaW5jZQorICAg
ICAgICAgIGxvY2FsaXplZFN0cmluZygpIGp1c3QgY29udmVydHMgY29uc3QgY2hhciogdG8gV1RG
OjpTdHJpbmcsCisgICAgICAgICAgYW5kIGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtl
cyBhIGNvbnN0IGNoYXIqLgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HKToKKyAgICAgICAgKFdF
Ql9VSV9DRlNUUklOR19LRVkpOgorICAgICAgICAtIENoYW5nZSBtYWNyb3Mgc28gdGhhdCBhcmd1
bWVudHMgY291bGQgYmUgdHJhbnNmb3JtZWQgYXQKKyAgICAgICAgICBjb21waWxlLXRpbWUgdG8g
Q0ZTdHJpbmdSZWYgdXNpbmcgQ0ZTVFIoKS4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSk6IEFkZC4KKyAg
ICAgICAgLSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZyBhcmd1bWVudHMg
dG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvY2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgbmV3IGZ1bmN0aW9u
IGNvbnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBB
ZGQuCisgICAgICAgIC0gQWRkIG5ldyBkZWNsYXJhdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2Vz
IGEgQ0ZTdHJpbmdSZWYKKyAgICAgICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZv
cm1hdExvY2FsaXplZFN0cmluZyk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdS
ZWYgZm9ybWF0YCBmb3IgQXBwbGUgcGxhdGZvcm1zLCBhbmQKKyAgICAgICAgICBgY29uc3QgY2hh
ciogZm9ybWF0YCBmb3Igb3RoZXIgcGxhdGZvcm1zIHNvIGZvcm1hdCBtYWNyb3MgbWF5CisgICAg
ICAgICAgYmUgYWRkZWQgdG8gdGhlIGRlbGFyYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpsb2Nh
bGl6ZWROU1N0cmluZyk6CisgICAgICAgIC0gUmUtaW1wbGVtZW50IGFzIGFuIGlubGluZSBmdW5j
dGlvbiB1c2luZyBsb2NhbGl6ZWRDRlN0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
TlNTdHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92ZWQgdG8gbG9jYWxpemVkQ0ZTdHJpbmco
KSBpbiBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0
cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAg
IChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omh0
bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSBXRUJfVUlfU1RS
SU5HKCkgdG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygpIGR1ZSB0bworICAgICAgICAgIHRoZSBu
ZXcgcnVsZSBmb3IgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6CisgICAgICAgIC0gU3dpdGNoIGZyb20gK1tO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0Ol0gYW5kCisgICAgICAgICAgV0VCX1VJX05TU1RSSU5H
KCkgdG8gV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKCkgYW5kCisgICAgICAgICAgV0VC
X1VJX0ZPUk1BVF9DRlNUUklORygpIGZvciBjb25zaXN0ZW5jeS4KKworICAgICAgICAqIHBsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2Fs
aXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBsb2NhbGl6ZWRDRlN0cmlu
ZygpIGluIExvY2FsaXplZFN0cmluZ3MuY3BwLgorCiAyMDIxLTExLTAzICBKb29uZ2h1biBQYXJr
ICA8amg3MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBib3JkZXItcmFkaXVzIGlubGlu
ZSBzdHlsZSBzaG91bGQgc2VyaWFsaXplIHdpdGggdmFsaWQgc3ludGF4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2NjM2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMx
OS4uY2FlZTAwY2MwZGMzMDdiNmY3NjY4MTE2Zjc2YWNlYWZmYThhOGIxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTA1ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFi
bGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMyNjg2PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQ5OTQzNDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tOgorICAgICAgICAo
V2ViTG9jYWxpemVkU3RyaW5nSW50ZXJuYWwpOgorICAgICAgICAtIFVzZSBsb2NhbGl6ZWROU1N0
cmluZygpIGluc3RlYWQgb2YgbG9jYWxpemVkU3RyaW5nKCkgdG8KKyAgICAgICAgICBlbGltaW5h
dGUgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAgICAgICAgQ0ZTdHJpbmcgLT4gU3RyaW5n
IC0+IE5TU3RyaW5nLgorCiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAppbmRleCBk
OTMzOTAxYzVmYTBjZmM0YTFjOGNjZWUyYzVhMDkwNWZjODFkOWE5Li44ZjY0NmU3ZGM0ZTI3ODdm
ZmYyNWMyNzYzOWY5NzhkZDVhY2EwNmEwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3Jp
cHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbApAQCAtMSw2ICsxLDYgQEAKICMh
L3Vzci9iaW4vZW52IHBlcmwKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIw
MTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE4Niw3ICsxODYsNyBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAg
ICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNy
byA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VC
Xyk/VUkoX0ZPUk1BVCk/XyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRG
LTggaGVyZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIGhh
bmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZv
dW5kICR0b2tlbiBidXQgZXhwZWN0ZWQgJGV4cGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAg
ICRleHBlY3RlZCA9ICIiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
KCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HKF9LRVkpPyhfSU5URVJOQUwpPyQvKSB8
fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX1NU
UklOR19XSVRIX01ORU1PTklDJC8pKSB7CisgICAgICAgICAgICAgICAgaWYgKCgkdG9rZW4gPX4g
LyhXRUJfKT9VSV8oQ0YpP1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9
fiAvV0VCX1VJX0ZPUk1BVF8oQ0YpP1NUUklORyhfS0VZKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VC
X1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05J
QyQvKSkgewogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAg
ICAgICAgICAgICRtYWNybyA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5n
ID0gdW5kZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CmluZGV4IDExNzNlZjZhMWIyODczOGYxMDExMGFiMGM3Mzg5YWVhZjU4NDFjNjQuLjViNDk0MTNm
OTBhMWNjMGM5YmFkNjFlNzZjNzExNDEyMTg5NTU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw2
ICszNCw5IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lm
IFVTRShDRikKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5o
IgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTQzLDI0
ICs0NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEJlY2F1c2UgfGZvcm1hdHwg
aXMgdXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJl
IGEgcmVmZXJlbmNlCi0vLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUg
QysrIE4xOTA1IHN0YW5kYXJkLgotU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcg
Zm9ybWF0LCAuLi4pCi17CiAjaWYgVVNFKENGKQorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhDRlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikKK3sKICAgICB2
YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAg
ICBBTExPV19OT05MSVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9S
TUFUX0VORAorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3Jt
YXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LCBhcmd1bWVudHMpKTsKIAogICAgIHZhX2VuZChh
cmd1bWVudHMpOworICAgIENGUmVsZWFzZShmb3JtYXQpOwogICAgIHJldHVybiByZXN1bHQuZ2V0
KCk7Ci0jZWxpZiBVU0UoR0xJQikKK30KKyNlbHNlCisvLyBCZWNhdXNlIHxmb3JtYXR8IGlzIHVz
ZWQgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQsIGl0IGNhbm5vdCBiZSBhIHJl
ZmVyZW5jZQorLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAxOC43LzMgb2YgdGhlIEMrKyBO
MTkwNSBzdGFuZGFyZC4KK1N0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCit7CisjaWYgVVNFKEdMSUIpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAg
ICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJl
c3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdC51dGY4KCkuZGF0YSgpLCBhcmd1bWVudHMpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQsIGFy
Z3VtZW50cykpOwogICAgIHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KHJlc3VsdC5nZXQoKSk7CiAjZWxzZQpAQCAtNjgsMTQgKzc0LDU0IEBAIFN0cmluZyBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogICAgIHJldHVybiBmb3Jt
YXQ7CiAjZW5kaWYKIH0KKyNlbmRpZgorCisjaWYgVVNFKENGKQorI2lmICFQTEFURk9STShXSU4p
CitzdGF0aWMgQ0ZCdW5kbGVSZWYgd2ViQ29yZUJ1bmRsZSgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVu
ZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAgIEFTU0VS
VChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0KCk7Cit9CisjZW5k
aWYKKworQ0ZTdHJpbmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQorewor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNw
YXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KKyAgICAvLyBTZWUg
TG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKKworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJLaXRCdW5kbGUoKTsK
KyNlbHNlCisgICAgQ0ZCdW5kbGVSZWYgYnVuZGxlID0gd2ViQ29yZUJ1bmRsZSgpOworI2VuZGlm
CisgICAgYXV0byByZXN1bHQgPSBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoYnVuZGxlLCBr
ZXksIG5vdEZvdW5kLCBudWxscHRyKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChyZXN1
bHQgPT0gbm90Rm91bmQpIHsKKyAgICAgICAgY2hhciBrZXlDU3RyaW5nWzI1Nl07CisgICAgICAg
IENGU3RyaW5nR2V0Q1N0cmluZyhrZXksIGtleUNTdHJpbmcsIHNpemVvZihrZXlDU3RyaW5nKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1
bHQgIT0gbm90Rm91bmQsICJDb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJyVzJyBp
biBidW5kbGUiLCBrZXlDU3RyaW5nKTsKKyAgICB9CisjZW5kaWYKIAotI2lmICFVU0UoQ0YpCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAorU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1Jl
ZiBrZXkpCit7CisgICAgcmV0dXJuIGFkb3B0Q0YobG9jYWxpemVkQ0ZTdHJpbmcoa2V5KSkuZ2V0
KCk7Cit9CisjZWxzZQogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CiB9Ci0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMzMsOSArMjc5LDkgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcg
PSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygi
TG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0
ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRD
RlN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVk
U3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8c2VsZWN0aW9uPuKAnSIsICJM
b29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxz
ZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsK
ICNlbmRpZgpAQCAtMjQ2LDcgKzI5Miw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29r
VXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsK
ICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0
ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmlu
Zy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKIH0KIAog
I2VuZGlmCkBAIC04MjQsNyArODcwLDcgQEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4dCgpCiAK
IFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlZCBmaWxl
cyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEg
ZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJP
ZkZpbGVzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
U1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVz
IHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBm
aWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKIH0KIAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQo
KQpAQCAtODQ2LDExICs4OTIsMTEgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBhdXRvIGhlaWdodCA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIGF1
dG8gaGVpZ2h0U3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dp
dGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxz
IiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0
aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdp
ZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIs
ICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlv
biBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0
aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMgJWTDlyVkIHBp
eGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBs
aWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZv
ciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCki
KSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8
ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUg
aW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIjxmaWxlbmFt
ZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CiAjZW5kaWYKIH0KIApA
QCAtOTcyLDEyICsxMDE4LDEyIEBAIFN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlv
bihmbG9hdCB0aW1lKQogICAgIHNlY29uZHMgJT0gNjA7CiAKICAgICBpZiAoZGF5cykKLSAgICAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIGRheXMg
JTIkZCBob3VycyAlMyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwgZGF5cywg
aG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAlMyRkIG1p
bnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBj
b250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNl
Y29uZHMpOwogICAgIGlmIChob3VycykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMi
LCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1
ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBob3Vy
cyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZv
ciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWludXRlcyIpLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcyk7CiAgICAgaWYgKG1pbnV0ZXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIs
ICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVl
ID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25kcyk7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0
eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMi
KSwgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0
eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRz
IiksIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNv
bmRzKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCkBA
IC0xMDM4LDEzICsxMDg0LDEzIEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNt
YXRjaFRleHQoKQogI2lmICFQTEFURk9STShHVEspCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VU
b29TaG9ydFRleHQoaW50LCBpbnQgbWluTGVuZ3RoKQogewotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAi
VmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVl
IHNob3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1pbkxlbmd0aCk7CisgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiVXNlIGF0
IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVu
Z3RoIiksIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFu
ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxl
bWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiks
IG1heExlbmd0aCk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX0NGU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIg
dGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CiB9CiAjZW5kaWYKICNl
bmRpZgpAQCAtMTA1Miw5ICsxMDk4LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9u
Z1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VV
bmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIHsKICNpZiBVU0UoQ0YpCi0gICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11c3Qg
YmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
aW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVt
IiksIG1pbmltdW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZv
cm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5p
bXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZv
cm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5p
bXVtLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0ZPUk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
ICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZh
bHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRhdGEoKSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtKTsKICAgICByZXR1cm4gV0VCX1VJX1NU
UklORygicmFuZ2UgdW5kZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9y
bSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7CkBAIC0x
MDY0LDkgKzExMTAsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1Rl
eHQoY29uc3QgU3RyaW5nJiBtaW5pbXVtKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VP
dmVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtYXhpbXVtKQogewogI2lmIFVTRShDRikKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVzdCBi
ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1
dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiks
IG1heGltdW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhh
biBvciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29u
dHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRy
b2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0udXRm
OCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX1NUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVy
IHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0udXRmOCgpLmRhdGEoKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShtYXhpbXVtKTsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygicmFu
Z2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xz
IHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIik7CkBAIC0xMTA5LDcgKzEx
NTUsNyBAQCBTdHJpbmcgdGV4dFRyYWNrQXV0b21hdGljTWVudUl0ZW1UZXh0KCkKIAogU3RyaW5n
IGFkZFRyYWNrTGFiZWxBc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
bGFiZWwpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJ
TkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1Rl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQg
bGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScu
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NG
U1RSSU5HX0tFWSgiJUAgKCVAKSIsICIlQCAoJUApIChhdWRpby90ZXh0IHRyYWNrKSIsICJBdWRp
by9UZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwg
YW5kIGxhbmd1YWdlIG9mIHRoZSB0cmFjaywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJl
bCknLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhYmVsLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxh
eU5hbWUoKQpAQCAtMTEyMSw3ICsxMTY3LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDbG9z
ZWRDYXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxh
eU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
R19LRVkoIiVAIENDIiwgIiVAIENDICh0ZXh0IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4
dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFu
ZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRp
b25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5n
dWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2FwdGlvbnNEaXNwbGF5
TmFtZSgpCkBAIC0xMTMzLDcgKzExNzksNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENhcHRp
b25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2Fw
dGlvbnMiLCAiJUAgQ2FwdGlvbnMgKHRleHQgdHJhY2spIiwgIkNhcHRpb25zIHRleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIENhcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NG
U1RSSU5HX0tFWSgiJUAgQ2FwdGlvbnMiLCAiJUAgQ2FwdGlvbnMgKHRleHQgdHJhY2spIiwgIkNh
cHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBs
YW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENhcHRpb25zJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRGVzY3Jp
cHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTE0NSw3ICsxMTkxLDcgQEAgU3RyaW5nIGFkZFRleHRU
cmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmREZXNjcmlwdGlv
bnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAodGV4dCB0
cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2Ny
aXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIERlc2Ny
aXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKHRleHQgdHJhY2spIiwgIkRlc2NyaXB0aW9ucyB0
ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
YW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDaGFwdGVyc0Rp
c3BsYXlOYW1lKCkKQEAgLTExNTcsNyArMTIwMyw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5k
Q2hhcHRlcnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDaGFwdGVyc0Rpc3BsYXlOYW1lKCk7
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIl
QCBDaGFwdGVycyIsICIlQCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2hhcHRlcnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JN
QVRfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFwdGVycyIsICIlQCBDaGFwdGVycyAodGV4dCB0cmFjayki
LCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMg
dGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2hhcHRlcnMnKS4iKSwg
dGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRN
ZXRhZGF0YURpc3BsYXlOYW1lKCkKQEAgLTExNjksNyArMTIxNSw3IEBAIFN0cmluZyBhZGRUZXh0
VHJhY2tLaW5kTWV0YWRhdGFTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRNZXRhZGF0YURpc3Bs
YXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJ
TkdfS0VZKCIlQCBNZXRhZGF0YSIsICIlQCBNZXRhZGF0YSAodGV4dCB0cmFjaykiLCAiTWV0YWRh
dGEgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1
YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggTWV0YWRhdGEnKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBNZXRhZGF0YSIsICIlQCBNZXRhZGF0YSAodGV4
dCB0cmFjaykiLCAiTWV0YWRhdGEgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggTWV0YWRh
dGEnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRU
cmFja0tpbmRTREhEaXNwbGF5TmFtZSgpCkBAIC0xMTgxLDcgKzEyMjcsNyBAQCBTdHJpbmcgYWRk
VGV4dFRyYWNrS2luZFNESFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3Ig
aGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwg
dGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0
IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3IgaGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRFYXN5UmVhZGVyRGlzcGxheU5hbWUoKQpA
QCAtMTE5Myw3ICsxMjM5LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRFYXN5UmVhZGVyU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBFYXN5IFJl
YWRlciIsICIlQCBFYXN5IFJlYWRlciAodGV4dCB0cmFjaykiLCAiRWFzeSBSZWFkZXIgKGkuZS4g
M3JkLWdyYWRlIGxldmVsKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBFYXN5IFJlYWRl
cicpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVy
IiwgIiVAIEVhc3kgUmVhZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQt
Z3JhZGUgbGV2ZWwpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVz
IHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tL
aW5kRm9yY2VkRGlzcGxheU5hbWUoKQpAQCAtMTIwNSw3ICsxMjUxLDcgQEAgU3RyaW5nIGFkZFRl
eHRUcmFja0tpbmRGb3JjZWRTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5
TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5H
X0tFWSgiJUAgRm9yY2VkIiwgIiVAIEZvcmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQg
dHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQv
b3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIEZvcmNlZCIsICIlQCBGb3JjZWQgKHRleHQgdHJhY2spIiwgIkZv
cmNlZCB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFu
Z3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBGb3JjZWQnKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRp
b25zRGlzcGxheU5hbWUoKQpAQCAtMTIxNyw3ICsxMjYzLDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJh
Y2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAo
dGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9u
c0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Q0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0
cmFjaykiLCAiRGVzY3JpcHRpb25zIGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhh
dCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNj
cmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNj
cmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjaykiLCAiRGVzY3JpcHRpb25z
IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3Vh
Z2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kQ29tbWVu
dGFyeURpc3BsYXlOYW1lKCkKQEAgLTEyMjksNyArMTI3NSw3IEBAIFN0cmluZyBhZGRBdWRpb1Ry
YWNrS2luZENvbW1lbnRhcnlTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURp
c3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZT
VFJJTkdfS0VZKCIlQCBDb21tZW50YXJ5IiwgIiVAIENvbW1lbnRhcnkgKGF1ZGlvIHRyYWNrKSIs
ICJDb21tZW50YXJ5IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRl
cyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDb21tZW50YXJ5Jyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIl
QCBDb21tZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNw
bGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUg
KGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFyeScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogfQogCiAjZW5kaWYgLy8gVVNFKENGKQpAQCAtMTI1Niw5ICsxMzAyLDkgQEAgU3RyaW5n
IHVzZUJsb2NrZWRQbHVnSW5Db250ZXh0TWVudVRpdGxlKCkKIFN0cmluZyB3ZWJDcnlwdG9NYXN0
ZXJLZXlLZXljaGFpbkxhYmVsKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25OYW1l
KQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9DRlNUUklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlv
bidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRB
cHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFz
dGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIg
a2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiJXMgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBh
cHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBs
b2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJXMgV2ViQ3J5cHRvIE1hc3Rl
ciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtl
eSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7
CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCI8YXBwbGljYXRpb24+IFdlYkNyeXB0
byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1h
c3RlciBrZXkgaW4gS2V5Y2hhaW4iKS5yZXBsYWNlKCI8YXBwbGljYXRpb24+IiwgbG9jYWxpemVk
QXBwbGljYXRpb25OYW1lKTsKICNlbmRpZgpAQCAtMTMzMiwxMiArMTM3OCwxMiBAQCBTdHJpbmcg
dW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKQogLy8gaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQg
dG8gaGVscCB1c2VycyB0byBtYWtlIGRlY2lzaW9ucy4KIFN0cmluZyBtYWtlQ3JlZGVudGlhbFRv
dWNoSURQcm9tcHRUaXRsZShjb25zdCBTdHJpbmcmIGJ1bmRsZU5hbWUsIGNvbnN0IFN0cmluZyYg
ZG9tYWluKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RS
SU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHVzZSBUb3VjaCBJRCBmb3Ig4oCcJUDigJ0uIiwg
IkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHVzZSBUb3VjaCBJRCB0byBzaWduIGluIHRv
IHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSBvbiB0aGlzIGRldmljZSIpLCBidW5kbGVOYW1lLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA
4oCdIHdvdWxkIGxpa2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhl
IHNwZWNpZmllZCBidW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNp
ZmllZCB3ZWJzaXRlIG9uIHRoaXMgZGV2aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2V0
QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlTmFtZSwgY29u
c3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKA
nS4iLCAiQWxsb3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lm
aWVkIHdlYnNpdGUiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4u
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHNpZ24gaW4g
dG8g4oCcJUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHNpZ24gaW4gdG8g
dGhlIHNwZWNpZmllZCB3ZWJzaXRlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2VuZXJpY1Rv
dWNoSURQcm9tcHRUaXRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKaW5kZXggZDg1NmEwZDcwYmM5MGVkNGYwYTY0MTAzZDI3ODE2MmI0ZDIyMmIxOC4uMmIz
MWY2NDhhNjZlNGI1Y2M4MTA0Y2UwNGUzODg4MDQxNzdjZmZmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjks
NiArMjksMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZmRlZiBfX09CSkNf
XworI2luY2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgorI2VuZGlmCisKICNpZiBV
U0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KICNlbmRpZgpAQCAtMzc3LDcgKzM4MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVY
VF9QQUNLQUdFKQorI2lmIFVTRShDRikKKyNkZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRl
c2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZp
bmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjps
b2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoa2V5KSkKKyNkZWZpbmUgV0VCX1VJX1NUUklOR19XSVRIX01O
RU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNlbGlmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdFVFRFWFRf
UEFDS0FHRSkKICNkZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJD
b3JlOjpsb2NhbGl6ZWRTdHJpbmcoXyhzdHJpbmcpKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tF
WShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDXyhr
ZXksIHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyhzdHJpbmcs
IG1uZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKF8obW5lbW9u
aWMpKQpAQCAtMzg4LDE3ICszOTYsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAK
ICNpZiBVU0UoQ0YpCi0vLyBUaGlzIGlzIGV4YWN0bHkgYXMgV0VCX1VJX1NUUklORywgYnV0IHJl
bmFtZWQgdG8gZW5zdXJlIHRoZSBzdHJpbmcgaXMgbm90IHNjYW5uZWQgYnkgbm9uLUNGIHBvcnRz
LgotI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKHN0cmluZykKLSNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HX0tFWShzdHJp
bmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhrZXkpCisjZGVm
aW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6Omxv
Y2FsaXplZENGU3RyaW5nKENGU1RSKHN0cmluZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5l
ZChHRVRURVhUX1BBQ0tBR0UpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywg
ZGVzY3JpcHRpb24pIChfKHN0cmluZykpCisjZWxzZQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NU
UklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSAoc3RyaW5nKQogI2VuZGlmCiAKKyNpZiBVU0UoQ0Yp
CisvLyBUaGlzIGlzIGV4YWN0bHkgYXMgV0VCX1VJX1tGT1JNQVRfXVNUUklORywgYnV0IHJlbmFt
ZWQgdG8gZW5zdXJlIHRoZSBzdHJpbmcgaXMgbm90IHNjYW5uZWQgYnkgbm9uLUNGIHBvcnRzLgor
I2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9j
YWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVko
c3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIo
a2V5KSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9u
KSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmluZSBXRUJf
VUlfRk9STUFUX0NGU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6
OmxvY2FsaXplZENGU3RyaW5nKENGU1RSKGtleSkpCisgICAgV0VCQ09SRV9FWFBPUlQgQ0ZTdHJp
bmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KSBDRl9GT1JNQVRfQVJHVU1F
TlQoMSkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9j
YWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtleSk7CisjZWxzZQogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KTsKLSAgICBTdHJpbmcgZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLik7CisjZW5kaWYKKworI2lmIFVT
RShDRikKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIENGX1JF
TEVBU0VTX0FSR1VNRU5UIGZvcm1hdCwgLi4uKSBDRl9GT1JNQVRfRlVOQ1RJT04oMSwgMik7Cisj
ZWxzZQorICAgIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOworI2VuZGlmCiAKICNpZmRlZiBfX09C
SkNfXwogI2RlZmluZSBXRUJfVUlfTlNTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkTlNTdHJpbmcoc3RyaW5nKQotICAgIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5n
ICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5KSBOU19GT1JNQVRfQVJHVU1FTlQoMSk7
CisgICAgaW5saW5lIE5TX0ZPUk1BVF9BUkdVTUVOVCgxKSBOU1N0cmluZyAqbG9jYWxpemVkTlNT
dHJpbmcoTlNTdHJpbmcgKmtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdE5TKGJyaWRn
ZV9jYXN0KGxvY2FsaXplZENGU3RyaW5nKGJyaWRnZV9jYXN0KGtleSkpKSkuYXV0b3JlbGVhc2Uo
KTsKKyAgICB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmlu
ZGV4IGZjMzZiZmNhMjVmMDMwYjlmODI5YzI0YjViOTVlZjI2ZDJhNGEwZjMuLjQyMTZkNDlhMDU2
MWUwOTZiMDQ5MmY0NzcxMzc2Zjc1YmM1YTQ1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwyNCAr
MzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5TU3RyaW5nICpsb2NhbGl6ZWROU1N0
cmluZyhOU1N0cmluZyAqa2V5KQotewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8v
IENhbiBiZSBjYWxsZWQgb24gYSBkaXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJp
bmdzIG9uIGlPUy4KLSAgICAvLyBTZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFy
Oi8vcHJvYmxlbS83OTAyNDczPi4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2VuZGlm
Ci0KLSAgICBzdGF0aWMgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRl
bnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07Ci0gICAgcmV0dXJuIFtidW5kbGUgbG9jYWxp
emVkU3RyaW5nRm9yS2V5OmtleSB2YWx1ZTpAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIiB0
YWJsZTpudWxscHRyXTsKLX0KLQotU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBr
ZXkpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICByZXR1cm4gbG9jYWxpemVkTlNTdHJpbmcoKF9f
YnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpKTsKLX0KLQogU3RyaW5nIGNvcHlJbWFn
ZVVua25vd25GaWxlTGFiZWwoKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJ1bmtub3du
IiwgIlVua25vd24gZmlsZW5hbWUiKTsKQEAgLTc5LDcgKzYxLDcgQEAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hXZWIoKQogewogICAgIGF1dG8gc2VhcmNoUHJvdmlkZXJOYW1lID0gUEFMOjpkZWZhdWx0
U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiU2VhcmNoIHdpdGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNo
IHByb3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdpdGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIp
LCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiU2VhcmNoIHdpdGggJUAiLCAiU2VhcmNoIHdp
dGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdpdGggcHJvdmlkZXIgbmFtZSBp
bnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKQEAgLTIzMyw3ICsyMTUsNyBAQCBTdHJpbmcga2V5Z2Vu
TWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3Ry
aW5nJiBob3N0KQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRo
ZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJLZXkgZnJvbSAl
QCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwg
aG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC0yNDUsNyArMjI3LDcgQEAgU3RyaW5nIGh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKHNp
emVfdCBjb3VudCkKICAgICBjYXNlIDE6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCIx
IEl0ZW0iLCAiUHJlc2VudCB0aGUgZWxlbWVudCA8c2VsZWN0IG11bHRpcGxlPiB3aGVuIGEgc2lu
Z2xlIDxvcHRpb24+IGlzIHNlbGVjdGVkIChpT1Mgb25seSkiKTsKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiV6dSBJdGVt
cyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8
c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChpT1Mgb25seSkiKSwgY291bnQpOworICAgICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiV6dSBJ
dGVtcyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4g
YSA8c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChpT1Mgb25seSkiKSwgY291bnQpOwogICAgIH0K
IH0KIApAQCAtMjc4LDcgKzI2MCw3IEBAIFN0cmluZyBmb3JtQ29udHJvbERvbmVCdXR0b25UaXRs
ZSgpCiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KGludCwgaW50IG1heExl
bmd0aCkKIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIGxvY2FsaXplZFN0cmluZ1dpdGhGb3JtYXQ6
V0VCX1VJX05TU1RSSU5HKEAiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXIocykiLCBAIlZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBz
aG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGhdOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVXNlIG5v
IG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXIocykiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3Jt
IGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93
ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5k
ZXggMWU3OWUxMDg0N2Q3MGRjYTU0ZjE5MjM5MWM4MTQ1OWMyM2U2YzY4Mi4uYjkzODcxNDY2NTNh
YWQzZDkyYzA2YjBiNDQzZTdhNGM4YmQwMDhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzNiArMjcsMTAgQEAKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0YpCi1T
dHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgc3RhdGljIENGU3RyaW5nUmVmIG5vdEZvdW5kID0gQ0ZTVFIo
ImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIik7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShO
VUxMLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRDRihDRkNvcHlMb2NhbGl6ZWRT
dHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleVN0cmluZy5nZXQoKSwgMCwgd2ViS2l0QnVuZGxlKCks
IG5vdEZvdW5kLCAwKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQuZ2V0KCkgIT0g
bm90Rm91bmQsICJjb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxl
Iiwga2V5KTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogU3RyaW5n
IHVwbG9hZEZpbGVUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5h
bC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdz
SW50ZXJuYWwubW0KaW5kZXggOWU2NTY5ZjdhYzcxNDExOGRkMGJmMzZjMWM5OWYyZjM3NmJlNTEy
Ni4uYTc3NWVlYzY2ZjA0ZTQ2MmFlYjcwYWNmYTAxYWQ2MmFjNmFjZjU1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5h
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3Ry
aW5nc0ludGVybmFsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxMiBAQAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVT
dHJpbmdzSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIE5TU3RyaW5nICpXZWJMb2NhbGl6ZWRTdHJpbmdJbnRlcm5hbChjb25zdCBjaGFyKiBr
ZXkpCiB7Ci0gICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZyhrZXkpOworICAgIC8vIEZJWE1FOiBD
aGFuZ2UgY2FsbGVycyB0byB1c2UgTlNTdHJpbmcgbGl0ZXJhbHMgdG8gZWxpbWluYXRlIHRoaXMg
c3RlcC4KKyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0
cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZyhicmlkZ2VfY2FzdChrZXlTdHJpbmcu
Z2V0KCkpKTsKIH0K
</data>
<flag name="commit-queue"
          id="468169"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443434</attachid>
            <date>2021-11-05 13:47:38 -0700</date>
            <delta_ts>2021-11-05 19:22:12 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-232686-20211105134737.patch</filename>
            <type>text/plain</type>
            <size>42532</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uNjBhYjc3NmNhMWM1MDA0NWMzZDFlZjFmYTRhNmM5
NDIyMzVlYzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0xMS0wNSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIHRvCisgICAgICAgIGFjY29tcGxpc2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9m
IENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8gQ0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGlt
ZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29udGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgor
ICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9y
bWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8gdGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFz
c2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmluZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJ
XyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGluIHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0
Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3Is
CisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2Vk
IE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNT
dHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVybiB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0
b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6
ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2lu
ZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NU
UklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9j
YWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZv
cm1hdGAgZm9yIEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZv
cm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMg
YWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBk
ZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBg
Zm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAg
ICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2NhbGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJl
dHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1B
VF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAorICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNp
bmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZUJ1
bmRsZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdldHRpbmcgYSBDRkJ1bmRs
ZVJlZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRvIGEgZnVuY3Rpb24gdGhh
dCdzIHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4KKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIFRoaXMgbWV0aG9kIHdhcyBj
b252ZXJ0ZWQgZnJvbSBsb2NhbGl6ZWROU1N0cmluZygpIGluCisgICAgICAgICAgTG9jYWxpemVk
U3RyaW5nc0NvY29hLm1tIGFuZCBmcm9tIGxvY2FsaXplZFN0cmluZygpIGluCisgICAgICAgICAg
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAuCisgICAgICAgIC0gVGhpcyBtZXRob2QgbXVzdCByZXR1
cm4gYSArMSByZXRhaW5lZCBDRlN0cmluZ1JlZiAodG8gYXZvaWQKKyAgICAgICAgICBhdXRvcmVs
ZWFzaW5nIGl0KSBzaW5jZSBDRl9GT1JNQVRfQVJHVU1FTlQoKSB3b24ndCBhbGxvdyBhCisgICAg
ICAgICAgcmV0dXJuIHR5cGUgb2YgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4KKyAgICAgICAgKFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IEFkZCBmb3IgVVNFKENGKS4KKyAgICAgICAgLSBNb3Zl
ZCBmcm9tIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSwgYW5kIGNoYW5nZWQgdG8gdGFrZSBhCisg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgYXJndW1lbnQgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNy
ZWF0ZSBhIG5ldworICAgICAgICAgIENGU3RyaW5nUmVmIGF0IHJ1bnRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9y
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjphZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRl
eHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJh
Y2tLaW5kU0RIU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5
UmVhZGVyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3Vm
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAg
ICAgLSBVc2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9y
bWF0CisgICAgICAgICAgc3RyaW5ncywgYW5kIHVzZSBXRUJfVUlfRk9SQU1UX0NGU1RSSU5HW19L
RVldKCkgZm9yIEFwcGxlCisgICAgICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlf
U1RSSU5HKTogQWRkLgorICAgICAgICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAg
IChXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMpOiBBZGQuCisgICAgICAgIC0gQWRkIHNlcGFy
YXRlIG1hY3JvcyBmb3IgVVNFKENGKSBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZQorICAgICAg
ICAgIHRyYW5zZm9ybWVkIGF0IGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNU
UigpLgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9TVFJJTkcpOiBBZGQuCisgICAgICAgIC0gQ3Jv
c3MtcGxhdGZvcm0gbWFjcm8gZm9yIFVJIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAtIE5vdGUg
dGhhdCBub24tVVNFKENGKSBtYWNyb3MgZXNzZW50aWFsbHkgZG8gbm90aGluZyBzaW5jZQorICAg
ICAgICAgIGxvY2FsaXplZFN0cmluZygpIGp1c3QgY29udmVydHMgY29uc3QgY2hhciogdG8gV1RG
OjpTdHJpbmcsCisgICAgICAgICAgYW5kIGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtl
cyBhIGNvbnN0IGNoYXIqLgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HKToKKyAgICAgICAgKFdF
Ql9VSV9DRlNUUklOR19LRVkpOgorICAgICAgICAtIENoYW5nZSBtYWNyb3Mgc28gdGhhdCBhcmd1
bWVudHMgY291bGQgYmUgdHJhbnNmb3JtZWQgYXQKKyAgICAgICAgICBjb21waWxlLXRpbWUgdG8g
Q0ZTdHJpbmdSZWYgdXNpbmcgQ0ZTVFIoKS4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSk6IEFkZC4KKyAg
ICAgICAgLSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZyBhcmd1bWVudHMg
dG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvY2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgbmV3IGZ1bmN0aW9u
IGNvbnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6
ZWRTdHJpbmdzQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBB
ZGQuCisgICAgICAgIC0gQWRkIG5ldyBkZWNsYXJhdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2Vz
IGEgQ0ZTdHJpbmdSZWYKKyAgICAgICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZv
cm1hdExvY2FsaXplZFN0cmluZyk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdS
ZWYgZm9ybWF0YCBmb3IgQXBwbGUgcGxhdGZvcm1zLCBhbmQKKyAgICAgICAgICBgY29uc3QgY2hh
ciogZm9ybWF0YCBmb3Igb3RoZXIgcGxhdGZvcm1zIHNvIGZvcm1hdCBtYWNyb3MgbWF5CisgICAg
ICAgICAgYmUgYWRkZWQgdG8gdGhlIGRlbGFyYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpsb2Nh
bGl6ZWROU1N0cmluZyk6CisgICAgICAgIC0gUmUtaW1wbGVtZW50IGFzIGFuIGlubGluZSBmdW5j
dGlvbiB1c2luZyBsb2NhbGl6ZWRDRlN0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
TlNTdHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92ZWQgdG8gbG9jYWxpemVkQ0ZTdHJpbmco
KSBpbiBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0
cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAg
IChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omh0
bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSBXRUJfVUlfU1RS
SU5HKCkgdG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygpIGR1ZSB0bworICAgICAgICAgIHRoZSBu
ZXcgcnVsZSBmb3IgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6CisgICAgICAgIC0gU3dpdGNoIGZyb20gK1tO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0Ol0gYW5kCisgICAgICAgICAgV0VCX1VJX05TU1RSSU5H
KCkgdG8gV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKCkgYW5kCisgICAgICAgICAgV0VC
X1VJX0ZPUk1BVF9DRlNUUklORygpIGZvciBjb25zaXN0ZW5jeS4KKworICAgICAgICAqIHBsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2Fs
aXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBsb2NhbGl6ZWRDRlN0cmlu
ZygpIGluIExvY2FsaXplZFN0cmluZ3MuY3BwLgorCiAyMDIxLTExLTAzICBKb29uZ2h1biBQYXJr
ICA8amg3MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBib3JkZXItcmFkaXVzIGlubGlu
ZSBzdHlsZSBzaG91bGQgc2VyaWFsaXplIHdpdGggdmFsaWQgc3ludGF4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2NjM2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMx
OS4uY2FlZTAwY2MwZGMzMDdiNmY3NjY4MTE2Zjc2YWNlYWZmYThhOGIxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTA1ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFi
bGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMyNjg2PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQ5OTQzNDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tOgorICAgICAgICAo
V2ViTG9jYWxpemVkU3RyaW5nSW50ZXJuYWwpOgorICAgICAgICAtIFVzZSBsb2NhbGl6ZWROU1N0
cmluZygpIGluc3RlYWQgb2YgbG9jYWxpemVkU3RyaW5nKCkgdG8KKyAgICAgICAgICBlbGltaW5h
dGUgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAgICAgICAgQ0ZTdHJpbmcgLT4gU3RyaW5n
IC0+IE5TU3RyaW5nLgorCiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAppbmRleCBk
OTMzOTAxYzVmYTBjZmM0YTFjOGNjZWUyYzVhMDkwNWZjODFkOWE5Li44ZjY0NmU3ZGM0ZTI3ODdm
ZmYyNWMyNzYzOWY5NzhkZDVhY2EwNmEwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3Jp
cHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbApAQCAtMSw2ICsxLDYgQEAKICMh
L3Vzci9iaW4vZW52IHBlcmwKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIw
MTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE4Niw3ICsxODYsNyBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAg
ICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNy
byA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VC
Xyk/VUkoX0ZPUk1BVCk/XyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRG
LTggaGVyZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIGhh
bmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZv
dW5kICR0b2tlbiBidXQgZXhwZWN0ZWQgJGV4cGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAg
ICRleHBlY3RlZCA9ICIiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
KCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HKF9LRVkpPyhfSU5URVJOQUwpPyQvKSB8
fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX1NU
UklOR19XSVRIX01ORU1PTklDJC8pKSB7CisgICAgICAgICAgICAgICAgaWYgKCgkdG9rZW4gPX4g
LyhXRUJfKT9VSV8oQ0YpP1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9
fiAvV0VCX1VJX0ZPUk1BVF8oQ0YpP1NUUklORyhfS0VZKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VC
X1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05J
QyQvKSkgewogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAg
ICAgICAgICAgICRtYWNybyA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5n
ID0gdW5kZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CmluZGV4IDExNzNlZjZhMWIyODczOGYxMDExMGFiMGM3Mzg5YWVhZjU4NDFjNjQuLmIzODNiODBi
YjEyNWZlMjlkMGY2NzA0MmZkZTBlNWE4Zjg1M2RiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw2
ICszNCw5IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lm
IFVTRShDRikKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5o
IgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTQzLDI0
ICs0NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEJlY2F1c2UgfGZvcm1hdHwg
aXMgdXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJl
IGEgcmVmZXJlbmNlCi0vLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUg
QysrIE4xOTA1IHN0YW5kYXJkLgotU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcg
Zm9ybWF0LCAuLi4pCi17CiAjaWYgVVNFKENGKQorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhDRlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikKK3sKICAgICB2
YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAg
ICBBTExPV19OT05MSVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9S
TUFUX0VORAorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3Jt
YXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LCBhcmd1bWVudHMpKTsKIAogICAgIHZhX2VuZChh
cmd1bWVudHMpOworICAgIENGUmVsZWFzZShmb3JtYXQpOwogICAgIHJldHVybiByZXN1bHQuZ2V0
KCk7Ci0jZWxpZiBVU0UoR0xJQikKK30KKyNlbHNlCisvLyBCZWNhdXNlIHxmb3JtYXR8IGlzIHVz
ZWQgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQsIGl0IGNhbm5vdCBiZSBhIHJl
ZmVyZW5jZQorLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAxOC43LzMgb2YgdGhlIEMrKyBO
MTkwNSBzdGFuZGFyZC4KK1N0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCit7CisjaWYgVVNFKEdMSUIpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAg
ICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJl
c3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdC51dGY4KCkuZGF0YSgpLCBhcmd1bWVudHMpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQsIGFy
Z3VtZW50cykpOwogICAgIHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KHJlc3VsdC5nZXQoKSk7CiAjZWxzZQpAQCAtNjgsMTQgKzc0LDU0IEBAIFN0cmluZyBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogICAgIHJldHVybiBmb3Jt
YXQ7CiAjZW5kaWYKIH0KKyNlbmRpZgorCisjaWYgVVNFKENGKQorI2lmICFQTEFURk9STShXSU4p
CitzdGF0aWMgQ0ZCdW5kbGVSZWYgd2ViQ29yZUJ1bmRsZSgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVu
ZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAgIEFTU0VS
VChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0KCk7Cit9CisjZW5k
aWYKKworQ0ZTdHJpbmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQorewor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNw
YXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KKyAgICAvLyBTZWUg
TG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKKworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJLaXRCdW5kbGUoKTsK
KyNlbHNlCisgICAgQ0ZCdW5kbGVSZWYgYnVuZGxlID0gd2ViQ29yZUJ1bmRsZSgpOworI2VuZGlm
CisgICAgYXV0byByZXN1bHQgPSBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoYnVuZGxlLCBr
ZXksIG5vdEZvdW5kLCBudWxscHRyKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChyZXN1
bHQgPT0gbm90Rm91bmQpIHsKKyAgICAgICAgY2hhciBrZXlDU3RyaW5nWzI1Nl07CisgICAgICAg
IENGU3RyaW5nR2V0Q1N0cmluZyhrZXksIGtleUNTdHJpbmcsIHNpemVvZihrZXlDU3RyaW5nKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1
bHQgIT0gbm90Rm91bmQsICJDb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJyVzJyBp
biBidW5kbGUiLCBrZXlDU3RyaW5nKTsKKyAgICB9CisjZW5kaWYKIAotI2lmICFVU0UoQ0YpCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAorU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1Jl
ZiBrZXkpCit7CisgICAgcmV0dXJuIGFkb3B0Q0YobG9jYWxpemVkQ0ZTdHJpbmcoa2V5KSkuZ2V0
KCk7Cit9CisjZWxzZQogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CiB9Ci0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMzMsOSArMjc5LDkgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcg
PSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygi
TG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0
ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRD
RlN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVk
U3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8c2VsZWN0aW9uPuKAnSIsICJM
b29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxz
ZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsK
ICNlbmRpZgpAQCAtMjQ2LDcgKzI5Miw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29r
VXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsK
ICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShz
ZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0
ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmlu
Zy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKIH0KIAog
I2VuZGlmCkBAIC04MjQsNyArODcwLDcgQEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4dCgpCiAK
IFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlZCBmaWxl
cyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEg
ZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJP
ZkZpbGVzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
U1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVz
IHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBm
aWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKIH0KIAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQo
KQpAQCAtODQ2LDExICs4OTIsMTEgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBhdXRvIGhlaWdodCA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIGF1
dG8gaGVpZ2h0U3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dp
dGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxz
IiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0
aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdp
ZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIs
ICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlv
biBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0
aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMgJWTDlyVkIHBp
eGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBs
aWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZv
ciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCki
KSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8
ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUg
aW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIjxmaWxlbmFt
ZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CiAjZW5kaWYKIH0KIApA
QCAtOTcyLDEyICsxMDE4LDEyIEBAIFN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlv
bihmbG9hdCB0aW1lKQogICAgIHNlY29uZHMgJT0gNjA7CiAKICAgICBpZiAoZGF5cykKLSAgICAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIGRheXMg
JTIkZCBob3VycyAlMyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwgZGF5cywg
aG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAlMyRkIG1p
bnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBj
b250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNl
Y29uZHMpOwogICAgIGlmIChob3VycykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMi
LCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1
ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBob3Vy
cyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZv
ciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWludXRlcyIpLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcyk7CiAgICAgaWYgKG1pbnV0ZXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIs
ICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVl
ID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25kcyk7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0
eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMi
KSwgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0
eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRz
IiksIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNv
bmRzKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCkBA
IC0xMDM4LDEzICsxMDg0LDEzIEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNt
YXRjaFRleHQoKQogI2lmICFQTEFURk9STShHVEspCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VU
b29TaG9ydFRleHQoaW50LCBpbnQgbWluTGVuZ3RoKQogewotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAi
VmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVl
IHNob3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1pbkxlbmd0aCk7CisgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiVXNlIGF0
IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVu
Z3RoIiksIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFu
ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxl
bWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiks
IG1heExlbmd0aCk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX1NUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRo
YW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQogI2VuZGlmCiAjZW5k
aWYKQEAgLTEwNTIsOSArMTA5OCw5IEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdU
ZXh0KGludCwgaW50IG1heExlbmd0aCkKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5k
ZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1pbmltdW0pCiB7CiAjaWYgVVNFKENGKQotICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJl
IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlu
cHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIp
LCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11
bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11
bS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9GT1JNQVRfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAl
cyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1
ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRhKCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWluaW11bSk7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0g
Y29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpOwpAQCAtMTA2
NCw5ICsxMTEwLDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0
KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3Zl
cmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4aW11bSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUg
bGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQg
Zm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBt
YXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRy
b2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0uY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9s
cyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLnV0Zjgo
KS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0
aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obWF4aW11bSk7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdl
IG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3
aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpOwpAQCAtMTEwOSw3ICsxMTU1
LDcgQEAgU3RyaW5nIHRleHRUcmFja0F1dG9tYXRpY01lbnVJdGVtVGV4dCgpCiAKIFN0cmluZyBh
ZGRUcmFja0xhYmVsQXNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGxh
YmVsKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5H
X0tFWSgiJUAgKCVAKSIsICIlQCAoJUApIChhdWRpby90ZXh0IHRyYWNrKSIsICJBdWRpby9UZXh0
IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwgYW5kIGxh
bmd1YWdlIG9mIHRoZSB0cmFjaywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJlbCknLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhYmVsLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNU
UklOR19LRVkoIiVAICglQCkiLCAiJUAgKCVAKSAoYXVkaW8vdGV4dCB0cmFjaykiLCAiQXVkaW8v
VGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhYmVsIGFu
ZCBsYW5ndWFnZSBvZiB0aGUgdHJhY2ssIGluIHRoZSBmb3JtIG9mICdMYW5ndWFnZSAoTGFiZWwp
Jy4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3BsYXlO
YW1lKCkKQEAgLTExMjEsNyArMTE2Nyw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2xvc2Vk
Q2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3BsYXlO
YW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdf
S0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRleHQg
dHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQv
b3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NG
U1RSSU5HX0tFWSgiJUAgQ0MiLCAiJUAgQ0MgKHRleHQgdHJhY2spIiwgIkNsb3NlZCBjYXB0aW9u
cyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3Vh
Z2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDQycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENhcHRpb25zRGlzcGxheU5h
bWUoKQpAQCAtMTEzMyw3ICsxMTc5LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDYXB0aW9u
c1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZENhcHRpb25zRGlzcGxheU5hbWUoKTsKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENhcHRp
b25zIiwgIiVAIENhcHRpb25zICh0ZXh0IHRyYWNrKSIsICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRp
c3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2Fs
ZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNU
UklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0IHRyYWNrKSIsICJDYXB0
aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFu
Z3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9ucycpLiIpLCB0ZXh0LmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZERlc2NyaXB0
aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExNDUsNyArMTE5MSw3IEBAIFN0cmluZyBhZGRUZXh0VHJh
Y2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAo
dGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25z
RGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9D
RlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKHRleHQgdHJh
Y2spIiwgIkRlc2NyaXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBp
bmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlw
dGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlw
dGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zICh0ZXh0IHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgdGV4
dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFu
ZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNw
bGF5TmFtZSgpCkBAIC0xMTU3LDcgKzEyMDMsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENo
YXB0ZXJzU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgpOwot
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAg
Q2hhcHRlcnMiLCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJhY2spIiwgIkNoYXB0ZXJzIHRleHQgdHJh
Y2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3Ig
bG9jYWxlIChlLmcuICdFbmdsaXNoIENoYXB0ZXJzJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMiLCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJhY2spIiwg
IkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRo
ZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENoYXB0ZXJzJykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kTWV0
YWRhdGFEaXNwbGF5TmFtZSgpCkBAIC0xMTY5LDcgKzEyMTUsNyBAQCBTdHJpbmcgYWRkVGV4dFRy
YWNrS2luZE1ldGFkYXRhU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kTWV0YWRhdGFEaXNwbGF5
TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5H
X0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEgKHRleHQgdHJhY2spIiwgIk1ldGFkYXRh
IHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFn
ZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1ldGFkYXRhJykuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEgKHRleHQg
dHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGlu
Y2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1ldGFkYXRh
JykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJh
Y2tLaW5kU0RIRGlzcGxheU5hbWUoKQpAQCAtMTE4MSw3ICsxMjI3LDcgQEAgU3RyaW5nIGFkZFRl
eHRUcmFja0tpbmRTREhTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRTREhEaXNwbGF5TmFtZSgp
OwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgi
JUAgU0RIIiwgIiVAIFNESCAodGV4dCB0cmFjaykiLCAiU0RIIChpLmUuIGRlYWYgYW5kL29yIGhh
cmQgb2YgaGVhcmluZykgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVk
ZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggU0RIJykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgU0RIIiwgIiVAIFNESCAodGV4dCB0
cmFjaykiLCAiU0RIIChpLmUuIGRlYWYgYW5kL29yIGhhcmQgb2YgaGVhcmluZykgdGV4dCB0cmFj
ayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBs
b2NhbGUgKGUuZy4gJ0VuZ2xpc2ggU0RIJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1lKCkKQEAg
LTExOTMsNyArMTIzOSw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZp
eChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdGV4dFRyYWNrS2luZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpOwotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFk
ZXIiLCAiJUAgRWFzeSBSZWFkZXIgKHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChpLmUuIDNy
ZC1ncmFkZSBsZXZlbCkgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVk
ZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXIn
KS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBFYXN5IFJlYWRlciIs
ICIlQCBFYXN5IFJlYWRlciAodGV4dCB0cmFjaykiLCAiRWFzeSBSZWFkZXIgKGkuZS4gM3JkLWdy
YWRlIGxldmVsKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBFYXN5IFJlYWRlcicpLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2lu
ZEZvcmNlZERpc3BsYXlOYW1lKCkKQEAgLTEyMDUsNyArMTI1MSw3IEBAIFN0cmluZyBhZGRUZXh0
VHJhY2tLaW5kRm9yY2VkU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kRm9yY2VkRGlzcGxheU5h
bWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19L
RVkoIiVAIEZvcmNlZCIsICIlQCBGb3JjZWQgKHRleHQgdHJhY2spIiwgIkZvcmNlZCB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBGb3JjZWQnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJGb3Jj
ZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1
YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9u
c0Rpc3BsYXlOYW1lKCkKQEAgLTEyMTcsNyArMTI2Myw3IEBAIFN0cmluZyBhZGRBdWRpb1RyYWNr
S2luZERlc2NyaXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNE
aXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAoYXVkaW8gdHJh
Y2spIiwgIkRlc2NyaXB0aW9ucyBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3Jp
cHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3Jp
cHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAoYXVkaW8gdHJhY2spIiwgIkRlc2NyaXB0aW9ucyBh
dWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdl
IGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBhdWRpb1RyYWNrS2luZENvbW1lbnRh
cnlEaXNwbGF5TmFtZSgpCkBAIC0xMjI5LDcgKzEyNzUsNyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFj
a0tpbmRDb21tZW50YXJ5U3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNw
bGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RS
SU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21tZW50YXJ5IChhdWRpbyB0cmFjaykiLCAi
Q29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMg
dGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFyeScpLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENvbW1lbnRhcnkiLCAiJUAg
Q29tbWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1lbnRhcnkgYXVkaW8gdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRikKQEAgLTEyNTYsOSArMTMwMiw5IEBAIFN0cmluZyB1
c2VCbG9ja2VkUGx1Z0luQ29udGV4dE1lbnVUaXRsZSgpCiBTdHJpbmcgd2ViQ3J5cHRvTWFzdGVy
S2V5S2V5Y2hhaW5MYWJlbChjb25zdCBTdHJpbmcmIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZSkK
IHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Q0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24n
cyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBw
bGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJUAgV2ViQ3J5cHRvIE1hc3Rl
ciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtl
eSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIiVzIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBw
bGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9j
YWxpemVkQXBwbGljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzIFdlYkNyeXB0byBNYXN0ZXIg
S2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkg
aW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwog
I2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiPGFwcGxpY2F0aW9uPiBXZWJDcnlwdG8g
TWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0
ZXIga2V5IGluIEtleWNoYWluIikucmVwbGFjZSgiPGFwcGxpY2F0aW9uPiIsIGxvY2FsaXplZEFw
cGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKQEAgLTEzMzIsMTIgKzEzNzgsMTIgQEAgU3RyaW5nIHVu
YWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKIC8vIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIHRv
IGhlbHAgdXNlcnMgdG8gbWFrZSBkZWNpc2lvbnMuCiBTdHJpbmcgbWFrZUNyZWRlbnRpYWxUb3Vj
aElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
Rygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91Y2ggSUQgZm9yIOKAnCVA4oCdLiIsICJB
bGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2UgVG91Y2ggSUQgdG8gc2lnbiBpbiB0byB0
aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZpY2UiKSwgYnVuZGxlTmFtZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCLigJwlQOKA
nSB3b3VsZCBsaWtlIHRvIHVzZSBUb3VjaCBJRCBmb3Ig4oCcJUDigJ0uIiwgIkFsbG93IHRoZSBz
cGVjaWZpZWQgYnVuZGxlIHRvIHVzZSBUb3VjaCBJRCB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZp
ZWQgd2Vic2l0ZSBvbiB0aGlzIGRldmljZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGdldEFz
c2VydGlvblRvdWNoSURQcm9tcHRUaXRsZShjb25zdCBTdHJpbmcmIGJ1bmRsZU5hbWUsIGNvbnN0
IFN0cmluZyYgZG9tYWluKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHNpZ24gaW4gdG8g4oCcJUDigJ0u
IiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmll
ZCB3ZWJzaXRlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byBzaWduIGluIHRv
IOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byBzaWduIGluIHRvIHRo
ZSBzcGVjaWZpZWQgd2Vic2l0ZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGdlbmVyaWNUb3Vj
aElEUHJvbXB0VGl0bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oCmluZGV4IGQ4NTZhMGQ3MGJjOTBlZDRmMGE2NDEwM2QyNzgxNjJiNGQyMjJiMTguLjJiMzFm
NjQ4YTY2ZTRiNWNjODEwNGNlMDRlMzg4ODA0MTc3Y2ZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYg
KzI5LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCisjaWZkZWYgX19PQkpDX18K
KyNpbmNsdWRlIDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KKyNlbmRpZgorCiAjaWYgVVNF
KEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CiAjZW5kaWYKQEAgLTM3Nyw3ICszODEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFN0cmluZyk7CiAjZW5kaWYKIAotI2lmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdFVFRFWFRf
UEFDS0FHRSkKKyNpZiBVU0UoQ0YpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNj
cmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5l
IFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9j
YWxpemVkU3RyaW5nKENGU1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVN
T05JQyhzdHJpbmcsIG1uZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3Ry
aW5nKENGU1RSKHN0cmluZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BB
Q0tBR0UpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKF8oc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVko
c3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ18oa2V5
LCBzdHJpbmcpKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBt
bmVtb25pYywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKG1uZW1vbmlj
KSkKQEAgLTM4OCwxNyArMzk2LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAj
aWYgVVNFKENGKQotLy8gVGhpcyBpcyBleGFjdGx5IGFzIFdFQl9VSV9TVFJJTkcsIGJ1dCByZW5h
bWVkIHRvIGVuc3VyZSB0aGUgc3RyaW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0cy4K
LSNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6Omxv
Y2FsaXplZFN0cmluZyhzdHJpbmcpCi0jZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVkoc3RyaW5n
LCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQorI2RlZmlu
ZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2Nh
bGl6ZWRDRlN0cmluZyhDRlNUUihzdHJpbmcpKQorI2VsaWYgVVNFKEdMSUIpICYmIGRlZmluZWQo
R0VUVEVYVF9QQUNLQUdFKQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJpbmcsIGRl
c2NyaXB0aW9uKSAoXyhzdHJpbmcpKQorI2Vsc2UKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJ
Tkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgKHN0cmluZykKICNlbmRpZgogCisjaWYgVVNFKENGKQor
Ly8gVGhpcyBpcyBleGFjdGx5IGFzIFdFQl9VSV9bRk9STUFUX11TVFJJTkcsIGJ1dCByZW5hbWVk
IHRvIGVuc3VyZSB0aGUgc3RyaW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0cy4KKyNk
ZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2Fs
aXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0
cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKGtl
eSkpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikg
V2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJ
X0ZPUk1BVF9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjps
b2NhbGl6ZWRDRlN0cmluZyhDRlNUUihrZXkpKQorICAgIFdFQkNPUkVfRVhQT1JUIENGU3RyaW5n
UmVmIGxvY2FsaXplZENGU3RyaW5nKENGU3RyaW5nUmVmIGtleSkgQ0ZfRk9STUFUX0FSR1VNRU5U
KDEpIENGX1JFVFVSTlNfUkVUQUlORUQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2Fs
aXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpOworI2Vsc2UKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5nIGZvcm1h
dExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pOworI2VuZGlmCisKKyNpZiBVU0Uo
Q0YpCisgICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBDRl9SRUxF
QVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikgQ0ZfRk9STUFUX0ZVTkNUSU9OKDEsIDIpOworI2Vs
c2UKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKyNlbmRpZgogCiAjaWZkZWYgX19PQkpD
X18KICNkZWZpbmUgV0VCX1VJX05TU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6
OmxvY2FsaXplZE5TU3RyaW5nKHN0cmluZykKLSAgICBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
bG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkgTlNfRk9STUFUX0FSR1VNRU5UKDEpOwor
ICAgIGlubGluZSBOU19GT1JNQVRfQVJHVU1FTlQoMSkgTlNTdHJpbmcgKmxvY2FsaXplZE5TU3Ry
aW5nKE5TU3RyaW5nICprZXkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHROUyhicmlkZ2Vf
Y2FzdChsb2NhbGl6ZWRDRlN0cmluZyhicmlkZ2VfY2FzdChrZXkpKSkpLmF1dG9yZWxlYXNlKCk7
CisgICAgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQppbmRl
eCBmYzM2YmZjYTI1ZjAzMGI5ZjgyOWMyNGI1Yjk1ZWYyNmQyYTRhMGYzLi40MjE2ZDQ5YTA1NjFl
MDk2YjA0OTJmNDc3MTM3NmY3NWJjNWE0NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjQgKzM1
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OU1N0cmluZyAqbG9jYWxpemVkTlNTdHJp
bmcoTlNTdHJpbmcgKmtleSkKLXsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBD
YW4gYmUgY2FsbGVkIG9uIGEgZGlzcGF0Y2ggcXVldWUgd2hlbiBpbml0aWFsaXppbmcgc3RyaW5n
cyBvbiBpT1MuCi0gICAgLy8gU2VlIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzIGFuZCA8cmRhcjov
L3Byb2JsZW0vNzkwMjQ3Mz4uCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNlbmRpZgot
Ci0gICAgc3RhdGljIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50
aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOwotICAgIHJldHVybiBbYnVuZGxlIGxvY2FsaXpl
ZFN0cmluZ0ZvcktleTprZXkgdmFsdWU6QCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIgdGFi
bGU6bnVsbHB0cl07Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5
KQotewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplZE5TU3RyaW5nKChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQoKSk7Ci19Ci0KIFN0cmluZyBjb3B5SW1hZ2VV
bmtub3duRmlsZUxhYmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygidW5rbm93biIs
ICJVbmtub3duIGZpbGVuYW1lIik7CkBAIC03OSw3ICs2MSw3IEBAIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViKCkKIHsKICAgICBhdXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IFBBTDo6ZGVmYXVsdFNl
YXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBw
cm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwg
c2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRo
IHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5z
ZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dGb250cygpCkBAIC0yMzMsNyArMjE1LDcgQEAgU3RyaW5nIGtleWdlbk1l
bnVJdGVtMjA0OCgpCiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmlu
ZyYgaG9zdCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUg
S0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiS2V5IGZyb20gJUAi
LCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhv
c3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpAQCAtMjQ1LDcgKzIyNyw3IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyhzaXpl
X3QgY291bnQpCiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiMSBJ
dGVtIiwgIlByZXNlbnQgdGhlIGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4gd2hlbiBhIHNpbmds
ZSA8b3B0aW9uPiBpcyBzZWxlY3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlenUgSXRlbXMi
LCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNl
bGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKKyAgICAgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlenUgSXRl
bXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEg
PHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKICAgICB9CiB9
CiAKQEAgLTI3OCw3ICsyNjAsNyBAQCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUo
KQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5n
dGgpCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBsb2NhbGl6ZWRTdHJpbmdXaXRoRm9ybWF0OldF
Ql9VSV9OU1NUUklORyhAIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgQCJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hv
cnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoXTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVzZSBubyBt
b3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBj
b250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2Vk
IGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCmluZGV4
IDFlNzllMTA4NDdkNzBkY2E1NGYxOTIzOTFjODE0NTljMjNlNmM2ODIuLmI5Mzg3MTQ2NjUzYWFk
M2Q5MmMwNmIwYjQ0M2U3YTRjOGJkMDA4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzYgKzI3LDEwIEBACiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LSNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFVTRShDRikKLSNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCi0j
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGKQotU3Ry
aW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJs
b2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVM
TCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZDb3B5TG9jYWxpemVkU3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZShrZXlTdHJpbmcuZ2V0KCksIDAsIHdlYktpdEJ1bmRsZSgpLCBu
b3RGb3VuZCwgMCkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5v
dEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIs
IGtleSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmdldCgpOwotfQotI2VuZGlmCi0KIFN0cmluZyB1
cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0lu
dGVybmFsLm1tCmluZGV4IDllNjU2OWY3YWM3MTQxMThkZDBiZjM2YzFjOTlmMmYzNzZiZTUxMjYu
LmE3NzVlZWM2NmYwNGU0NjJhZWI3MGFjZmEwMWFkNjJhYzZhY2Y1NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3NJbnRlcm5hbC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3Ry
aW5nc0ludGVybmFsLmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgot
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBOU1N0cmluZyAqV2ViTG9jYWxpemVkU3RyaW5nSW50ZXJuYWwoY29uc3QgY2hhcioga2V5
KQogewotICAgIHJldHVybiBsb2NhbGl6ZWRTdHJpbmcoa2V5KTsKKyAgICAvLyBGSVhNRTogQ2hh
bmdlIGNhbGxlcnMgdG8gdXNlIE5TU3RyaW5nIGxpdGVyYWxzIHRvIGVsaW1pbmF0ZSB0aGlzIHN0
ZXAuCisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJp
bmdOb0NvcHkoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwp
KTsKKyAgICByZXR1cm4gbG9jYWxpemVkTlNTdHJpbmcoYnJpZGdlX2Nhc3Qoa2V5U3RyaW5nLmdl
dCgpKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443454</attachid>
            <date>2021-11-05 16:02:24 -0700</date>
            <delta_ts>2021-11-06 09:13:26 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-232686-20211105160223.patch</filename>
            <type>text/plain</type>
            <size>42293</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uYjZmMmMwOGJiNGNjYTFhYjExMDRhY2JiYzc3MTcx
Y2U1MzYwMDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMS0xMS0wNSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIHRvCisgICAgICAgIGFjY29tcGxpc2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9m
IENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8gQ0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGlt
ZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29udGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgor
ICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9y
bWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8gdGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFz
c2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmluZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJ
XyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGluIHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0
Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3Is
CisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2Vk
IE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNT
dHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVybiB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0
b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6
ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2lu
ZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NU
UklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9j
YWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZv
cm1hdGAgZm9yIEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZv
cm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMg
YWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBk
ZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBg
Zm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAg
ICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2NhbGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJl
dHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1B
VF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAorICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNp
bmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
Q0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gVGhpcyBtZXRob2Qgd2FzIGNvbnZlcnRlZCBmcm9t
IGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2Eu
bW0gYW5kIGZyb20gbG9jYWxpemVkU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcC4KKyAgICAgICAgLSBUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBhICsxIHJldGFp
bmVkIENGU3RyaW5nUmVmICh0byBhdm9pZAorICAgICAgICAgIGF1dG9yZWxlYXNpbmcgaXQpIHNp
bmNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpIHdvbid0IGFsbG93IGEKKyAgICAgICAgICByZXR1cm4g
dHlwZSBvZiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxp
emVkU3RyaW5nKTogQWRkIGZvciBVU0UoQ0YpLgorICAgICAgICAtIE1vdmVkIGZyb20gTG9jYWxp
emVkU3RyaW5nc0NvY29hLm1tLCBhbmQgY2hhbmdlZCB0byB0YWtlIGEKKyAgICAgICAgICBDRlN0
cmluZ1JlZiBhcmd1bWVudCB0byBlbGltaW5hdGUgdGhlIG5lZWQgdG8gY3JlYXRlIGEgbmV3Cisg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgYXQgcnVudGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVRvb1Nob3J0VGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVHJhY2tMYWJlbEFzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRU
cmFja0tpbmRDbG9zZWRDYXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0
VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNr
S2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tL
aW5kQ2hhcHRlcnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZE1l
dGFkYXRhU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRTREhTdWZm
aXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgp
OgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZEZvcmNlZFN1ZmZpeCk6CisgICAg
ICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6CisgICAg
ICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNrS2luZENvbW1lbnRhcnlTdWZmaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6d2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hhaW5MYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjptYWtlQ3JlZGVudGlhbFRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRBc3NlcnRpb25Ub3VjaElEUHJvbXB0VGl0bGUpOgorICAgICAgICAtIFVzZSBXRUJf
VUlfRk9STUFUX1NUUklORygpIGZvciBjcm9zcy1wbGF0Zm9ybSBVSSBmb3JtYXQKKyAgICAgICAg
ICBzdHJpbmdzLCBhbmQgdXNlIFdFQl9VSV9GT1JBTVRfQ0ZTVFJJTkdbX0tFWV0oKSBmb3IgQXBw
bGUKKyAgICAgICAgICBwbGF0Zm9ybSBVSSBmb3JtYXQgc3RyaW5ncy4KKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKFdFQl9VSV9TVFJJTkcpOiBBZGQu
CisgICAgICAgIChXRUJfVUlfU1RSSU5HX0tFWSk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9TVFJJ
TkdfV0lUSF9NTkVNT05JQyk6IEFkZC4KKyAgICAgICAgLSBBZGQgc2VwYXJhdGUgbWFjcm9zIGZv
ciBVU0UoQ0YpIHNvIHRoYXQgYXJndW1lbnRzIGNvdWxkIGJlCisgICAgICAgICAgdHJhbnNmb3Jt
ZWQgYXQgY29tcGlsZS10aW1lIHRvIENGU3RyaW5nUmVmIHVzaW5nIENGU1RSKCkuCisgICAgICAg
IChXRUJfVUlfRk9STUFUX1NUUklORyk6IEFkZC4KKyAgICAgICAgLSBDcm9zcy1wbGF0Zm9ybSBt
YWNybyBmb3IgVUkgZm9ybWF0IHN0cmluZ3MuCisgICAgICAgIC0gTm90ZSB0aGF0IG5vbi1VU0Uo
Q0YpIG1hY3JvcyBlc3NlbnRpYWxseSBkbyBub3RoaW5nIHNpbmNlCisgICAgICAgICAgbG9jYWxp
emVkU3RyaW5nKCkganVzdCBjb252ZXJ0cyBjb25zdCBjaGFyKiB0byBXVEY6OlN0cmluZywKKyAg
ICAgICAgICBhbmQgZm9ybWF0TG9jYWxpemVkU3RyaW5nKCkgbm93IHRha2VzIGEgY29uc3QgY2hh
ciouCisgICAgICAgIChXRUJfVUlfQ0ZTVFJJTkcpOgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5H
X0tFWSk6CisgICAgICAgIC0gQ2hhbmdlIG1hY3JvcyBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBi
ZSB0cmFuc2Zvcm1lZCBhdAorICAgICAgICAgIGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1
c2luZyBDRlNUUigpLgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9DRlNUUklORyk6IEFkZC4KKyAg
ICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKTogQWRkLgorICAgICAgICAtIFRoZXNl
IG1hY3JvcyBhcmUgdXNlZCBhcyBmb3JtYXQgc3RyaW5nIGFyZ3VtZW50cyB0bworICAgICAgICAg
IGZvcm1hdExvY2FsaXplZFN0cmluZygpLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZT
dHJpbmcpOiBBZGQuCisgICAgICAgIC0gRGVjbGFyZSBuZXcgZnVuY3Rpb24gY29udmVydGVkIGZy
b20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgorICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NDb2Nv
YS5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IEFkZC4KKyAgICAgICAg
LSBBZGQgbmV3IGRlY2xhcmF0aW9uIGZvciBVU0UoQ0YpIHRoYXQgdGFrZXMgYSBDRlN0cmluZ1Jl
ZgorICAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVk
U3RyaW5nKToKKyAgICAgICAgLSBDaGFuZ2UgdG8gdXNlIGBDRlN0cmluZ1JlZiBmb3JtYXRgIGZv
ciBBcHBsZSBwbGF0Zm9ybXMsIGFuZAorICAgICAgICAgIGBjb25zdCBjaGFyKiBmb3JtYXRgIGZv
ciBvdGhlciBwbGF0Zm9ybXMgc28gZm9ybWF0IG1hY3JvcyBtYXkKKyAgICAgICAgICBiZSBhZGRl
ZCB0byB0aGUgZGVsYXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5n
KToKKyAgICAgICAgLSBSZS1pbXBsZW1lbnQgYXMgYW4gaW5saW5lIGZ1bmN0aW9uIHVzaW5nIGxv
Y2FsaXplZENGU3RyaW5nKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyk6IERl
bGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBsb2NhbGl6ZWRDRlN0cmluZygpIGluIExvY2FsaXpl
ZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTogRGVsZXRl
LgorICAgICAgICAtIE1vdmVkIHRvIExvY2FsaXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6Omtl
eWdlbktleWNoYWluSXRlbU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aHRtbFNlbGVjdE11bHRp
cGxlSXRlbXMpOgorICAgICAgICAtIFN3aXRjaCBmcm9tIFdFQl9VSV9TVFJJTkcoKSB0byBXRUJf
VUlfRk9STUFUX0NGU1RSSU5HKCkgZHVlIHRvCisgICAgICAgICAgdGhlIG5ldyBydWxlIGZvciBs
b2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSArW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6XSBhbmQKKyAgICAgICAgICBXRUJfVUlfTlNTVFJJTkcoKSB0byBXZWJDb3Jl
Ojpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSBhbmQKKyAgICAgICAgICBXRUJfVUlfRk9STUFUX0NG
U1RSSU5HKCkgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgICogcGxhdGZvcm0vd2luL0xvY2Fs
aXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTog
RGVsZXRlLgorICAgICAgICAtIE1vdmVkIHRvIGxvY2FsaXplZENGU3RyaW5nKCkgaW4gTG9jYWxp
emVkU3RyaW5ncy5jcHAuCisKIDIwMjEtMTEtMDMgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJr
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIGJvcmRlci1yYWRpdXMgaW5saW5lIHN0eWxlIHNob3Vs
ZCBzZXJpYWxpemUgd2l0aCB2YWxpZCBzeW50YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA0ZjhjNjkxYTg1OGRjY2MzYmE4ZjU5MzI0YTE2ZTYyMjkzNDViMzE5Li5jYWVlMDBjYzBk
YzMwN2I2Zjc2NjgxMTZmNzZhY2VhZmZhOGE4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBDb21waWxlciBzaG91bGQgYmUgYWJsZSB0byBjaGVjayBs
b2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8yMzI2ODY+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5NDM0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2Mv
V2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW06CisgICAgICAgIChXZWJMb2NhbGl6ZWRT
dHJpbmdJbnRlcm5hbCk6CisgICAgICAgIC0gVXNlIGxvY2FsaXplZE5TU3RyaW5nKCkgaW5zdGVh
ZCBvZiBsb2NhbGl6ZWRTdHJpbmcoKSB0bworICAgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0
byBjb252ZXJ0IGZyb20KKyAgICAgICAgICBDRlN0cmluZyAtPiBTdHJpbmcgLT4gTlNTdHJpbmcu
CisKIDIwMjEtMTEtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIGlPUyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCBiL1NvdXJjZS9XZWJDb3JlL1Nj
cmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCmluZGV4IGQ5MzM5MDFjNWZhMGNm
YzRhMWM4Y2NlZTJjNWEwOTA1ZmM4MWQ5YTkuLjhmNjQ2ZTdkYzRlMjc4N2ZmZjI1YzI3NjM5Zjk3
OGRkNWFjYTA2YTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1s
b2NhbGl6YWJsZS1zdHJpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFj
dC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYg
cGVybAogCi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTg2LDcgKzE4Niw3IEBAIGhhbmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICMgRklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAg
ICAkVUlTdHJpbmcgPSAkc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVk
ID0gIiwiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VCXyk/
VUlfKENGKT9TVFJJTkdfS0VZKF9JTlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSShfRk9STUFU
KT9fKENGKT9TVFJJTkdfS0VZKF9JTlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAg
ICAgICAgICAgICAgICAgICAgICAgJGtleSA9ICRzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkZXhwZWN0ZWQgPSAiLCI7CkBAIC0yNDUsNyArMjQ1LDcgQEAgaGFuZGxlU3RyaW5nOgog
ICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1
dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0g
IiI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8o
V0VCXyk/VUlfKENGKT9TVFJJTkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4g
L1dFQl9VSV9OU1NUUklORyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5F
TU9OSUMkLykpIHsKKyAgICAgICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhD
Rik/U1RSSU5HKF9LRVkpPyhfSU5URVJOQUwpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfRk9S
TUFUXyhDRik/U1RSSU5HKF9LRVkpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkck
LykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDJC8pKSB7CiAgICAg
ICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIoIjsKICAgICAgICAgICAgICAgICAgICAgJG1h
Y3JvID0gJHRva2VuOwogICAgICAgICAgICAgICAgICAgICAkVUlTdHJpbmcgPSB1bmRlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggMTE3M2Vm
NmExYjI4NzM4ZjEwMTEwYWIwYzczODlhZWFmNTg0MWM2NC4uNjhjMTdmYTVjNDFiZWNhMzYzNzYx
ZjgxY2M0YWI3NDVhZDc4NTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM0LDYgKzM0LDkgQEAKICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQorI2lm
IFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjZW5kaWYKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDMsMjQgKzQ2LDI3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFzIHRo
ZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVuY2UK
LS8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUgc3Rh
bmRhcmQuCi1TdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikK
LXsKICNpZiBVU0UoQ0YpCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVm
IENGX1JFTEVBU0VTX0FSR1VNRU5UIGZvcm1hdCwgLi4uKQorewogICAgIHZhX2xpc3QgYXJndW1l
bnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKIAotICAgIEFMTE9XX05PTkxJ
VEVSQUxfRk9STUFUX0JFR0lOCi0gICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgYXJndW1lbnRzKSk7Ci0gICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECisgICAg
YXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50
cygwLCAwLCBmb3JtYXQsIGFyZ3VtZW50cykpOwogCiAgICAgdmFfZW5kKGFyZ3VtZW50cyk7Cisg
ICAgQ0ZSZWxlYXNlKGZvcm1hdCk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLSNlbGlmIFVT
RShHTElCKQorfQorI2Vsc2UKKy8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNlZCBhcyB0aGUgc2Vj
b25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVmZXJlbmNlCisvLyB0
eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4xOTA1IHN0YW5kYXJk
LgorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikK
K3sKKyNpZiBVU0UoR0xJQikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChh
cmd1bWVudHMsIGZvcm1hdCk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVw
X3ZwcmludGYoZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGFyZ3VtZW50cykpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHJlc3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdCwgYXJndW1lbnRzKSk7CiAg
ICAgdmFfZW5kKGFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVzdWx0
LmdldCgpKTsKICNlbHNlCkBAIC02OCwxNCArNzQsNDcgQEAgU3RyaW5nIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAgICAgcmV0dXJuIGZvcm1hdDsKICNlbmRpZgog
fQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRDRlN0cmluZyhD
RlN0cmluZ1JlZiBrZXkpCit7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ2Fu
IGJlIGNhbGxlZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mg
b24gaU9TLgorICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9w
cm9ibGVtLzc5MDI0NzM+LgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKKwor
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5n
IG5vdCBmb3VuZCIpOworICAgIENGU3RyaW5nUmVmIHJlc3VsdDsKKworI2lmIFBMQVRGT1JNKFdJ
TikKKyAgICByZXN1bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtl
eSwgbnVsbHB0ciwgd2ViS2l0QnVuZGxlKCksIG5vdEZvdW5kLCBudWxscHRyKTsKKyNlbHNlCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9
IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3Jl
IikpOworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJlc3VsdCA9IENGQnVuZGxlQ29w
eUxvY2FsaXplZFN0cmluZyhidW5kbGUuZ2V0KCkuZ2V0KCksIGtleSwgbm90Rm91bmQsIG51bGxw
dHIpOworI2VuZGlmCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBpZiAocmVzdWx0ID09IG5vdEZv
dW5kKSB7CisgICAgICAgIGNoYXIga2V5Q1N0cmluZ1syNTZdOworICAgICAgICBDRlN0cmluZ0dl
dENTdHJpbmcoa2V5LCBrZXlDU3RyaW5nLCBzaXplb2Yoa2V5Q1N0cmluZyksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZv
dW5kLCAiQ291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICclcycgaW4gYnVuZGxlIiwg
a2V5Q1N0cmluZyk7CisgICAgfQorI2VuZGlmCiAKLSNpZiAhVVNFKENGKQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CiAKK1N0cmluZyBsb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQorewor
ICAgIHJldHVybiBhZG9wdENGKGxvY2FsaXplZENGU3RyaW5nKGtleSkpLmdldCgpOworfQorI2Vs
c2UKIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOwogfQotCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjMzLDkgKzI3Miw5IEBAIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmlu
ZykKIHsKICNpZiBVU0UoQ0YpCiAgICAgYXV0byBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVk
U3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCc
JUDigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwg
c2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxvb2sgVXAgY29u
dGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0
KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0
ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVj
dGVkU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29u
dGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1l
bnVJdGVtKHNlbGVjdGVkU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIs
IHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CiAjZW5kaWYKQEAg
LTI0Niw3ICsyODUsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnVHJhbnNsYXRlKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7CiAgICAgYXV0byBz
ZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJp
bmcpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfQ0ZTVFJJTkcoIlRyYW5zbGF0ZSDigJwlQOKAnSIsICJUcmFuc2xhdGUgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwor
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi
VHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNl
bGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAt
ODI0LDcgKzg2Myw3IEBAIFN0cmluZyBwbHVnaW5Ub29TbWFsbFRleHQoKQogCiBTdHJpbmcgbXVs
dGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwg
dG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2Fk
IGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7Cisg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJWQg
ZmlsZXMiLCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBp
biBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVt
YmVyT2ZGaWxlcyk7CiB9CiAKIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKQEAgLTg0Niwx
MSArODg1LDExIEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgYXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKDAsIGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBhdXRvIGhlaWdodFN0
cmluZyA9IGFkb3B0Q0YoQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAs
IGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cg
dGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2ws
IG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5n
ZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiVAICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRp
dGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBu
b3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0
KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVzICVkw5clZCBwaXhlbHMiLCAid2lu
ZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3lt
Ym9sLCBub3QgeCkiKSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JN
QVRfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFs
b25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAjZWxzZQotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiPGZpbGVuYW1lPiAl
ZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2Vz
IG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKKyAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5clZCBw
aXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlw
bGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5y
ZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTk3MiwxMiAr
MTAxMSwxMiBAQCBTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGlt
ZSkKICAgICBzZWNvbmRzICU9IDYwOwogCiAgICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMg
JTMkZCBtaW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Ig
bWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQg
c2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0
aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKICAg
ICBpZiAoaG91cnMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X1NUUklORygiJTEkZCBob3VycyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2li
aWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWlu
dXRlcyIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51
dGVzICUzJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29u
dHJvbGxlciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29u
ZHMpOwogICAgIGlmIChtaW51dGVzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJp
bGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNv
bmRzIiksIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX1NUUklORygiJTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMp
OworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RS
SU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51dGVz
LCBzZWNvbmRzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JN
QVRfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CiB9CiAK
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQpAQCAtMTAzOCwxMyAr
MTA3NywxMyBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkK
ICNpZiAhUExBVEZPUk0oR1RLKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vU2hvcnRUZXh0
KGludCwgaW50IG1pbkxlbmd0aCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRo
YW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtaW5MZW5ndGgpOworICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBj
aGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtaW5M
ZW5ndGgpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0
ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGgg
YSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgp
OworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkco
IlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9y
IGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0g
YWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoKTsKIH0KICNlbmRpZgogI2VuZGlmCkBAIC0xMDUy
LDkgKzEwOTEsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGlu
dCBtYXhMZW5ndGgpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
Y29uc3QgU3RyaW5nJiBtaW5pbXVtKQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNv
bnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3
aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3
aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRh
dGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NU
UklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhh
biBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG1pbmltdW0pOwogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSB1
bmRlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdp
dGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKTsKQEAgLTEwNjQsOSArMTEwMyw5
IEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJp
bmcmIG1pbmltdW0pCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChj
b25zdCBTdHJpbmcmIG1heGltdW0pCiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJv
bHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
ICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZh
bHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl
cyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1
ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJW
YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2Vk
IG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKG1heGltdW0pOwogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSBvdmVyZmxvdyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBo
aWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKTsKQEAgLTExMDksNyArMTE0OCw3IEBAIFN0cmlu
ZyB0ZXh0VHJhY2tBdXRvbWF0aWNNZW51SXRlbVRleHQoKQogCiBTdHJpbmcgYWRkVHJhY2tMYWJl
bEFzU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAICgl
QCkiLCAiJUAgKCVAKSAoYXVkaW8vdGV4dCB0cmFjaykiLCAiQXVkaW8vVGV4dCB0cmFjayBkaXNw
bGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhYmVsIGFuZCBsYW5ndWFnZSBvZiB0
aGUgdHJhY2ssIGluIHRoZSBmb3JtIG9mICdMYW5ndWFnZSAoTGFiZWwpJy4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIl
QCAoJUApIiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ug
b2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9
CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0x
MTIxLDcgKzExNjAsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ0Mi
LCAiJUAgQ0MgKHRleHQgdHJhY2spIiwgIkNsb3NlZCBjYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3Bs
YXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAo
ZS5nLiAnRW5nbGlzaCBDQycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVko
IiVAIENDIiwgIiVAIENDICh0ZXh0IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4dCB0cmFj
ayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBs
b2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTEx
MzMsNyArMTE3Miw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgoY29u
c3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRleHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBD
YXB0aW9ucyAodGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUg
Zm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0Vu
Z2xpc2ggQ2FwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIl
QCBDYXB0aW9ucyIsICIlQCBDYXB0aW9ucyAodGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2FwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5
TmFtZSgpCkBAIC0xMTQ1LDcgKzExODQsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZERlc2Ny
aXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zICh0ZXh0IHRyYWNrKSIsICJEZXNj
cmlwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhl
IGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiks
IHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVA
IERlc2NyaXB0aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlz
cGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxl
IChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENoYXB0ZXJzRGlzcGxheU5hbWUoKQpA
QCAtMTE1Nyw3ICsxMTk2LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDaGFwdGVyc1N1ZmZp
eChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdGV4dFRyYWNrS2luZENoYXB0ZXJzRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENoYXB0ZXJzIiwg
IiVAIENoYXB0ZXJzICh0ZXh0IHRyYWNrKSIsICJDaGFwdGVycyB0ZXh0IHRyYWNrIGRpc3BsYXkg
bmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5n
LiAnRW5nbGlzaCBDaGFwdGVycycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19L
RVkoIiVAIENoYXB0ZXJzIiwgIiVAIENoYXB0ZXJzICh0ZXh0IHRyYWNrKSIsICJDaGFwdGVycyB0
ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
YW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDaGFwdGVycycpLiIpLCB0ZXh0LmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxh
eU5hbWUoKQpAQCAtMTE2OSw3ICsxMjA4LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRNZXRh
ZGF0YVN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKTsKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIE1l
dGFkYXRhIiwgIiVAIE1ldGFkYXRhICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNr
IGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxv
Y2FsZSAoZS5nLiAnRW5nbGlzaCBNZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9D
RlNUUklOR19LRVkoIiVAIE1ldGFkYXRhIiwgIiVAIE1ldGFkYXRhICh0ZXh0IHRyYWNrKSIsICJN
ZXRhZGF0YSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUg
bGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBNZXRhZGF0YScpLiIpLCB0ZXh0
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZFNESERp
c3BsYXlOYW1lKCkKQEAgLTExODEsNyArMTIyMCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5k
U0RIU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kU0RIRGlzcGxheU5hbWUoKTsKLSAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIFNESCIsICIl
QCBTREggKHRleHQgdHJhY2spIiwgIlNESCAoaS5lLiBkZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJp
bmcpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5n
dWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIFNESCcpLiIpLCB0ZXh0LmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwgIlNE
SCAoaS5lLiBkZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxheSBu
YW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcu
ICdFbmdsaXNoIFNESCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBT
dHJpbmcgdGV4dFRyYWNrS2luZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpCkBAIC0xMTkzLDcgKzEy
MzIsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRl
eHRUcmFja0tpbmRFYXN5UmVhZGVyRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVyIiwgIiVAIEVh
c3kgUmVhZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQtZ3JhZGUgbGV2
ZWwpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5n
dWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBS
ZWFkZXIgKHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkg
dGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdl
IGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRGb3JjZWREaXNw
bGF5TmFtZSgpCkBAIC0xMjA1LDcgKzEyNDQsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZEZv
cmNlZFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEZvcmNlZERpc3BsYXlOYW1lKCk7Ci0gICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBGb3Jj
ZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5
IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUu
Zy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tF
WSgiJUAgRm9yY2VkIiwgIiVAIEZvcmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQgdHJh
Y2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3Ig
bG9jYWxlIChlLmcuICdFbmdsaXNoIEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogfQogCiBTdHJpbmcgYXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFt
ZSgpCkBAIC0xMjE3LDcgKzEyNTYsNyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmREZXNjcmlw
dGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUo
KTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVko
IiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKGF1ZGlvIHRyYWNrKSIsICJEZXNj
cmlwdGlvbnMgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRo
ZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIl
QCBEZXNjcmlwdGlvbnMgKGF1ZGlvIHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5h
bWUoKQpAQCAtMTIyOSw3ICsxMjY4LDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVu
dGFyeVN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKTsK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVA
IENvbW1lbnRhcnkiLCAiJUAgQ29tbWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1lbnRhcnkg
YXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFn
ZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDb21tZW50YXJ5IiwgIiVAIENvbW1lbnRhcnkg
KGF1ZGlvIHRyYWNrKSIsICJDb21tZW50YXJ5IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3Jt
YXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlz
aCBDb21tZW50YXJ5JykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNl
bmRpZiAvLyBVU0UoQ0YpCkBAIC0xMjU2LDkgKzEyOTUsOSBAQCBTdHJpbmcgdXNlQmxvY2tlZFBs
dWdJbkNvbnRleHRNZW51VGl0bGUoKQogU3RyaW5nIHdlYkNyeXB0b01hc3RlcktleUtleWNoYWlu
TGFiZWwoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpCiB7CiAjaWYgVVNF
KENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIl
QCBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdl
YkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5h
bWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hh
aW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
I2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mg
c2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxp
Y2F0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1l
IG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWlu
IiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIjxhcHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXki
LCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBL
ZXljaGFpbiIpLnJlcGxhY2UoIjxhcHBsaWNhdGlvbj4iLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5h
bWUpOwogI2VuZGlmCkBAIC0xMzMyLDEyICsxMzcxLDEyIEBAIFN0cmluZyB1bmFjY2VwdGFibGVU
TFNDZXJ0aWZpY2F0ZSgpCiAvLyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCB0byBoZWxwIHVzZXJz
IHRvIG1ha2UgZGVjaXNpb25zLgogU3RyaW5nIG1ha2VDcmVkZW50aWFsVG91Y2hJRFByb21wdFRp
dGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIuKAnCVA4oCd
IHdvdWxkIGxpa2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNw
ZWNpZmllZCBidW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmll
ZCB3ZWJzaXRlIG9uIHRoaXMgZGV2aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlr
ZSB0byB1c2UgVG91Y2ggSUQgZm9yIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1
bmRsZSB0byB1c2UgVG91Y2ggSUQgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUg
b24gdGhpcyBkZXZpY2UiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21h
aW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZXRBc3NlcnRpb25Ub3Vj
aElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
Rygi4oCcJUDigJ0gd291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0
aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIp
LCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JN
QVRfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKAnS4i
LCAiQWxsb3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVk
IHdlYnNpdGUiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZW5lcmljVG91Y2hJRFByb21wdFRp
dGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRleCBk
ODU2YTBkNzBiYzkwZWQ0ZjBhNjQxMDNkMjc4MTYyYjRkMjIyYjE4Li4yYjMxZjY0OGE2NmU0YjVj
YzgxMDRjZTA0ZTM4ODgwNDE3N2NmZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSw2ICsyOSwxMCBAQAog
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorI2lmZGVmIF9fT0JKQ19fCisjaW5jbHVkZSA8
d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CisjZW5kaWYKKwogI2lmIFVTRShHTElCKSAmJiBk
ZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2Vu
ZGlmCkBAIC0zNzcsNyArMzgxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcp
OwogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCisj
aWYgVVNFKENGKQorI2RlZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmluZSBXRUJfVUlfU1RS
SU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
ZyhDRlNUUihrZXkpKQorI2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5n
LCBtbmVtb25pYywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihz
dHJpbmcpKQorI2VsaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhfKHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkK
ICNkZWZpbmUgV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRl
c2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoXyhtbmVtb25pYykpCkBAIC0zODgs
MTcgKzM5NiwzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFVTRShDRikK
LS8vIFRoaXMgaXMgZXhhY3RseSBhcyBXRUJfVUlfU1RSSU5HLCBidXQgcmVuYW1lZCB0byBlbnN1
cmUgdGhlIHN0cmluZyBpcyBub3Qgc2Nhbm5lZCBieSBub24tQ0YgcG9ydHMuCi0jZGVmaW5lIFdF
Ql9VSV9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJp
bmcoc3RyaW5nKQotI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNj
cmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKGtleSkKKyNkZWZpbmUgV0VCX1VJX0ZP
Uk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJp
bmcoQ0ZTVFIoc3RyaW5nKSkKKyNlbGlmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFD
S0FHRSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikg
KF8oc3RyaW5nKSkKKyNlbHNlCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywg
ZGVzY3JpcHRpb24pIChzdHJpbmcpCiAjZW5kaWYKIAorI2lmIFVTRShDRikKKy8vIFRoaXMgaXMg
ZXhhY3RseSBhcyBXRUJfVUlfW0ZPUk1BVF9dU1RSSU5HLCBidXQgcmVuYW1lZCB0byBlbnN1cmUg
dGhlIHN0cmluZyBpcyBub3Qgc2Nhbm5lZCBieSBub24tQ0YgcG9ydHMuCisjZGVmaW5lIFdFQl9V
SV9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmco
Q0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HX0tFWShzdHJpbmcsIGtleSwg
ZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihrZXkpKQorI2RlZmlu
ZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6Omxv
Y2FsaXplZENGU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZT
dHJpbmcoQ0ZTVFIoa2V5KSkKKyAgICBXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiBsb2NhbGl6
ZWRDRlN0cmluZyhDRlN0cmluZ1JlZiBrZXkpIENGX0ZPUk1BVF9BUkdVTUVOVCgxKSBDRl9SRVRV
Uk5TX1JFVEFJTkVEOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmco
Q0ZTdHJpbmdSZWYga2V5KTsKKyNlbHNlCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2Fs
aXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpOwotICAgIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKTsKKyNlbmRpZgorCisjaWYgVVNFKENGKQorICAgIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgQ0ZfUkVMRUFTRVNfQVJHVU1F
TlQgZm9ybWF0LCAuLi4pIENGX0ZPUk1BVF9GVU5DVElPTigxLCAyKTsKKyNlbHNlCisgICAgU3Ry
aW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoMSwgMik7CisjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCiAjZGVmaW5l
IFdFQl9VSV9OU1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRO
U1N0cmluZyhzdHJpbmcpCi0gICAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmxvY2FsaXplZE5T
U3RyaW5nKE5TU3RyaW5nICprZXkpIE5TX0ZPUk1BVF9BUkdVTUVOVCgxKTsKKyAgICBpbmxpbmUg
TlNfRk9STUFUX0FSR1VNRU5UKDEpIE5TU3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmlu
ZyAqa2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoYnJpZGdlX2Nhc3QobG9jYWxp
emVkQ0ZTdHJpbmcoYnJpZGdlX2Nhc3Qoa2V5KSkpKS5hdXRvcmVsZWFzZSgpOworICAgIH0KICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KaW5kZXggZmMzNmJmY2Ey
NWYwMzBiOWY4MjljMjRiNWI5NWVmMjZkMmE0YTBmMy4uNDIxNmQ0OWEwNTYxZTA5NmIwNDkyZjQ3
NzEzNzZmNzViYzVhNDVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI0ICszNSw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5n
ICprZXkpCi17Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gQ2FuIGJlIGNhbGxl
ZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgot
ICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5
MDI0NzM+LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jZW5kaWYKLQotICAgIHN0YXRp
YyBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29t
LmFwcGxlLldlYkNvcmUiXTsKLSAgICByZXR1cm4gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JL
ZXk6a2V5IHZhbHVlOkAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiIHRhYmxlOm51bGxwdHJd
OwotfQotCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2Nh
dG9yTnVsbCkpOwotICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZygoX19icmlkZ2UgTlNTdHJp
bmcgKilrZXlTdHJpbmcuZ2V0KCkpOwotfQotCiBTdHJpbmcgY29weUltYWdlVW5rbm93bkZpbGVM
YWJlbCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInVua25vd24iLCAiVW5rbm93biBm
aWxlbmFtZSIpOwpAQCAtNzksNyArNjEsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoSW5TcG90bGlnaHQoKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCiB7
CiAgICAgYXV0byBzZWFyY2hQcm92aWRlck5hbWUgPSBQQUw6OmRlZmF1bHRTZWFyY2hQcm92aWRl
ckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIgY29u
dGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFByb3Zp
ZGVyTmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJv
dmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNl
YXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
aG93Rm9udHMoKQpAQCAtMjMzLDcgKzIxNSw3IEBAIFN0cmluZyBrZXlnZW5NZW51SXRlbTIwNDgo
KQogCiBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJv
bSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWci
KSwgaG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yg
a2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTI0NSw3
ICsyMjcsNyBAQCBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IGNvdW50KQog
ICAgIGNhc2UgMToKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIjEgSXRlbSIsICJQcmVz
ZW50IHRoZSBlbGVtZW50IDxzZWxlY3QgbXVsdGlwbGU+IHdoZW4gYSBzaW5nbGUgPG9wdGlvbj4g
aXMgc2VsZWN0ZWQgKGlPUyBvbmx5KSIpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXp1IEl0ZW1zIiwgIlByZXNlbnQg
dGhlIG51bWJlciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxlY3QgbXVsdGlw
bGU+IGVsZW1lbnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7CisgICAgICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJXp1IEl0ZW1zIiwgIlByZXNl
bnQgdGhlIG51bWJlciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxlY3QgbXVs
dGlwbGU+IGVsZW1lbnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7CiAgICAgfQogfQogCkBAIC0yNzgs
NyArMjYwLDcgQEAgU3RyaW5nIGZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCkKIAogU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAg
IHJldHVybiBbTlNTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJ
TkcoQCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBt
YXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aF07CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVk
IGNoYXJhY3RlcihzKSIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVt
ZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwg
bWF4TGVuZ3RoKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCAxZTc5ZTEwODQ3
ZDcwZGNhNTRmMTkyMzkxYzgxNDU5YzIzZTZjNjgyLi5iOTM4NzE0NjY1M2FhZDNkOTJjMDZiMGI0
NDNlN2E0YzhiZDAwOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDM2ICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgotI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRikKLVN0cmluZyBsb2NhbGl6
ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0
cmluZyBub3QgZm91bmQiKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZh
dWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCB3ZWJLaXRCdW5kbGUoKSwgbm90Rm91bmQsIDAp
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdC5nZXQoKSAhPSBub3RGb3VuZCwgImNv
dWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLX0KLSNlbmRpZgotCiBTdHJpbmcgdXBsb2FkRmlsZVRl
eHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQpp
bmRleCA5ZTY1NjlmN2FjNzE0MTE4ZGQwYmYzNmMxYzk5ZjJmMzc2YmU1MTI2Li5hNzc1ZWVjNjZm
MDRlNDYyYWViNzBhY2ZhMDFhZDYyYWM2YWNmNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsMTEgKzI2LDEyIEBACiAjaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5h
bC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNTdHJp
bmcgKldlYkxvY2FsaXplZFN0cmluZ0ludGVybmFsKGNvbnN0IGNoYXIqIGtleSkKIHsKLSAgICBy
ZXR1cm4gbG9jYWxpemVkU3RyaW5nKGtleSk7CisgICAgLy8gRklYTUU6IENoYW5nZSBjYWxsZXJz
IHRvIHVzZSBOU1N0cmluZyBsaXRlcmFscyB0byBlbGltaW5hdGUgdGhpcyBzdGVwLgorICAgIGF1
dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAs
IGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgcmV0
dXJuIGxvY2FsaXplZE5TU3RyaW5nKGJyaWRnZV9jYXN0KGtleVN0cmluZy5nZXQoKSkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443465</attachid>
            <date>2021-11-05 19:49:29 -0700</date>
            <delta_ts>2021-11-06 01:34:22 -0700</delta_ts>
            <desc>Patch v5 ALT</desc>
            <filename>bug-232686-patch-v5-alt.diff</filename>
            <type>text/plain</type>
            <size>43244</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2OWZhYWRhNWExYmIuLmI2ZjJjMDhiYjRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzNCBAQAorMjAyMS0xMS0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXpl
ZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdv
YWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAg
ICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0
eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgcGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhl
IGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAgICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBw
bGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBvYmplY3RzIHRvCisgICAgICAgIGFjY29tcGxp
c2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9mIENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAg
ICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8g
Q0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGltZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29u
dGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgorICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBh
bGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9ybWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8g
dGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFzc2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmlu
ZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJXyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGlu
IHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdp
bGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3IsCisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9u
LUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0Cisg
ICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVy
biB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMg
dGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAgICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3Ry
aW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3Mu
CisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAg
ICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6
CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAg
ICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJ
bXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRmb3Jtcywg
YnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4K
KyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNy
b3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3Ry
aW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBgZm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVM
RUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAgICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2Nh
bGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJldHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0
YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAor
ICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNpbmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVk
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0g
VGhpcyBtZXRob2Qgd2FzIGNvbnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAg
ICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYW5kIGZyb20gbG9jYWxpemVkU3RyaW5n
KCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzV2luLmNwcC4KKyAgICAgICAgLSBUaGlz
IG1ldGhvZCBtdXN0IHJldHVybiBhICsxIHJldGFpbmVkIENGU3RyaW5nUmVmICh0byBhdm9pZAor
ICAgICAgICAgIGF1dG9yZWxlYXNpbmcgaXQpIHNpbmNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpIHdv
bid0IGFsbG93IGEKKyAgICAgICAgICByZXR1cm4gdHlwZSBvZiBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTogQWRkIGZvciBVU0UoQ0Yp
LgorICAgICAgICAtIE1vdmVkIGZyb20gTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tLCBhbmQgY2hh
bmdlZCB0byB0YWtlIGEKKyAgICAgICAgICBDRlN0cmluZ1JlZiBhcmd1bWVudCB0byBlbGltaW5h
dGUgdGhlIG5lZWQgdG8gY3JlYXRlIGEgbmV3CisgICAgICAgICAgQ0ZTdHJpbmdSZWYgYXQgcnVu
dGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0
aW9uTWVzc2FnZVRvb1Nob3J0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VPdmVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVHJhY2tMYWJlbEFzU3VmZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc1N1ZmZp
eCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kQ2hhcHRlcnNTdWZmaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZE1ldGFkYXRhU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZFRleHRUcmFja0tpbmRTREhTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
VGV4dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4
dFRyYWNrS2luZEZvcmNlZFN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNr
S2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNr
S2luZENvbW1lbnRhcnlTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6d2ViQ3J5cHRvTWFzdGVy
S2V5S2V5Y2hhaW5MYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ3JlZGVudGlhbFRvdWNo
SURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRBc3NlcnRpb25Ub3VjaElEUHJv
bXB0VGl0bGUpOgorICAgICAgICAtIFVzZSBXRUJfVUlfRk9STUFUX1NUUklORygpIGZvciBjcm9z
cy1wbGF0Zm9ybSBVSSBmb3JtYXQKKyAgICAgICAgICBzdHJpbmdzLCBhbmQgdXNlIFdFQl9VSV9G
T1JBTVRfQ0ZTVFJJTkdbX0tFWV0oKSBmb3IgQXBwbGUKKyAgICAgICAgICBwbGF0Zm9ybSBVSSBm
b3JtYXQgc3RyaW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoK
KyAgICAgICAgKFdFQl9VSV9TVFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfU1RSSU5HX0tF
WSk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyk6IEFkZC4KKyAg
ICAgICAgLSBBZGQgc2VwYXJhdGUgbWFjcm9zIGZvciBVU0UoQ0YpIHNvIHRoYXQgYXJndW1lbnRz
IGNvdWxkIGJlCisgICAgICAgICAgdHJhbnNmb3JtZWQgYXQgY29tcGlsZS10aW1lIHRvIENGU3Ry
aW5nUmVmIHVzaW5nIENGU1RSKCkuCisgICAgICAgIChXRUJfVUlfRk9STUFUX1NUUklORyk6IEFk
ZC4KKyAgICAgICAgLSBDcm9zcy1wbGF0Zm9ybSBtYWNybyBmb3IgVUkgZm9ybWF0IHN0cmluZ3Mu
CisgICAgICAgIC0gTm90ZSB0aGF0IG5vbi1VU0UoQ0YpIG1hY3JvcyBlc3NlbnRpYWxseSBkbyBu
b3RoaW5nIHNpbmNlCisgICAgICAgICAgbG9jYWxpemVkU3RyaW5nKCkganVzdCBjb252ZXJ0cyBj
b25zdCBjaGFyKiB0byBXVEY6OlN0cmluZywKKyAgICAgICAgICBhbmQgZm9ybWF0TG9jYWxpemVk
U3RyaW5nKCkgbm93IHRha2VzIGEgY29uc3QgY2hhciouCisgICAgICAgIChXRUJfVUlfQ0ZTVFJJ
TkcpOgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HX0tFWSk6CisgICAgICAgIC0gQ2hhbmdlIG1h
Y3JvcyBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZSB0cmFuc2Zvcm1lZCBhdAorICAgICAgICAg
IGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNUUigpLgorICAgICAgICAoV0VC
X1VJX0ZPUk1BVF9DRlNUUklORyk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkdfS0VZKTogQWRkLgorICAgICAgICAtIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBhcyBmb3JtYXQg
c3RyaW5nIGFyZ3VtZW50cyB0bworICAgICAgICAgIGZvcm1hdExvY2FsaXplZFN0cmluZygpLgor
ICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gRGVj
bGFyZSBuZXcgZnVuY3Rpb24gY29udmVydGVkIGZyb20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgor
ICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbS4KKyAgICAgICAgKFdlYkNvcmU6Omxv
Y2FsaXplZFN0cmluZyk6IEFkZC4KKyAgICAgICAgLSBBZGQgbmV3IGRlY2xhcmF0aW9uIGZvciBV
U0UoQ0YpIHRoYXQgdGFrZXMgYSBDRlN0cmluZ1JlZgorICAgICAgICAgIGFyZ3VtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBDaGFuZ2Ug
dG8gdXNlIGBDRlN0cmluZ1JlZiBmb3JtYXRgIGZvciBBcHBsZSBwbGF0Zm9ybXMsIGFuZAorICAg
ICAgICAgIGBjb25zdCBjaGFyKiBmb3JtYXRgIGZvciBvdGhlciBwbGF0Zm9ybXMgc28gZm9ybWF0
IG1hY3JvcyBtYXkKKyAgICAgICAgICBiZSBhZGRlZCB0byB0aGUgZGVsYXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5nKToKKyAgICAgICAgLSBSZS1pbXBsZW1lbnQg
YXMgYW4gaW5saW5lIGZ1bmN0aW9uIHVzaW5nIGxvY2FsaXplZENGU3RyaW5nKCkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBs
b2NhbGl6ZWRDRlN0cmluZygpIGluIExvY2FsaXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkU3RyaW5nKTogRGVsZXRlLgorICAgICAgICAtIE1vdmVkIHRvIExvY2Fs
aXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6OmtleWdlbktleWNoYWluSXRlbU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6aHRtbFNlbGVjdE11bHRpcGxlSXRlbXMpOgorICAgICAgICAtIFN3aXRj
aCBmcm9tIFdFQl9VSV9TVFJJTkcoKSB0byBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCkgZHVlIHRv
CisgICAgICAgICAgdGhlIG5ldyBydWxlIGZvciBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MuCisg
ICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAg
LSBTd2l0Y2ggZnJvbSArW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6XSBhbmQKKyAgICAgICAg
ICBXRUJfVUlfTlNTVFJJTkcoKSB0byBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSBh
bmQKKyAgICAgICAgICBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCkgZm9yIGNvbnNpc3RlbmN5Lgor
CisgICAgICAgICogcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTogRGVsZXRlLgorICAgICAgICAtIE1vdmVkIHRv
IGxvY2FsaXplZENGU3RyaW5nKCkgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisKIDIwMjEtMTEt
MDMgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAgIGJv
cmRlci1yYWRpdXMgaW5saW5lIHN0eWxlIHNob3VsZCBzZXJpYWxpemUgd2l0aCB2YWxpZCBzeW50
YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxl
LXN0cmluZ3MucGwKaW5kZXggZDkzMzkwMWM1ZmEwLi44ZjY0NmU3ZGM0ZTIgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBs
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCi0jIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg2LDcgKzE4Niw3IEBAIGhh
bmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFZhbGlkYXRlIFVU
Ri04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAkVUlTdHJpbmcgPSAkc3RyaW5nOwog
ICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJTkdfS0VZKF9JTlRF
Uk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSShfRk9STUFUKT9fKENGKT9TVFJJTkdfS0VZKF9JTlRF
Uk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAj
IEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAgICAgICAgICAgICAgICAgJGtl
eSA9ICRzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7CkBA
IC0yNDUsNyArMjQ1LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAgICBlbWl0
RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsK
ICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJTkcoX0tF
WSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9OU1NUUklORyQvKSB8fCAo
JHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HKF9LRVkpPyhfSU5URVJO
QUwpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfRk9STUFUXyhDRik/U1RSSU5HKF9LRVkpPyQv
KSB8fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJ
X1NUUklOR19XSVRIX01ORU1PTklDJC8pKSB7CiAgICAgICAgICAgICAgICAgICAgICRleHBlY3Rl
ZCA9ICIoIjsKICAgICAgICAgICAgICAgICAgICAgJG1hY3JvID0gJHRva2VuOwogICAgICAgICAg
ICAgICAgICAgICAkVUlTdHJpbmcgPSB1bmRlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGFjNzQ1MzI2ZDcyYS4uOGViNjg0YmZlZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTExLDcgKzEx
LDcgQEAKICIlMSRkIHNlY29uZHMiID0gIiUxJGQgc2Vjb25kcyI7CiAKIC8qIHdpbmRvdyB0aXRs
ZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90
IHgpICovCi0iJUAgJUDDlyVAIHBpeGVscyIgPSAiJUAgJUDDlyVAIHBpeGVscyI7CisiJUAgJUB4
JUAgcGl4ZWxzIiA9ICIlQCAlQHglQCBwaXhlbHMiOwogCiAvKiBBdWRpby9UZXh0IHRyYWNrIGRp
c3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwgYW5kIGxhbmd1YWdlIG9m
IHRoZSB0cmFjaywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJlbCknLiAqLwogIiVAICgl
QCkgKGF1ZGlvL3RleHQgdHJhY2spIiA9ICIlQCAoJUApIjsKQEAgLTgzLDcgKzgzLDcgQEAKICIl
bHUgcGhvdG8ocykgYW5kICVsdSB2aWRlbyhzKSIgPSAiJWx1IHBob3RvKHMpIGFuZCAlbHUgdmlk
ZW8ocykiOwogCiAvKiB3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBt
dWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSAqLwotIiVzICVkw5clZCBwaXhlbHMiID0gIiVz
ICVkw5clZCBwaXhlbHMiOworIiVzICVkeCVkIHBpeGVscyIgPSAiJXMgJWR4JWQgcGl4ZWxzIjsK
IAogLyogTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBp
biBLZXljaGFpbiAqLwogIiVzIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICIlcyBXZWJDcnlwdG8g
TWFzdGVyIEtleSI7CkBAIC0xMjIsNyArMTIyLDcgQEAKICI8YXBwbGljYXRpb24+IFdlYkNyeXB0
byBNYXN0ZXIgS2V5IiA9ICI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIgS2V5IjsKIAog
Lyogd2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkgKi8KLSI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiID0gIjxmaWxl
bmFtZT4gJWTDlyVkIHBpeGVscyI7CisiPGZpbGVuYW1lPiAlZHglZCBwaXhlbHMiID0gIjxmaWxl
bmFtZT4gJWR4JWQgcGl4ZWxzIjsKIAogLyogV0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1
cnJlZCBkZXNjcmlwdGlvbiAqLwogIkEgSmF2YVNjcmlwdCBleGNlcHRpb24gb2NjdXJyZWQiID0g
IkEgSmF2YVNjcmlwdCBleGNlcHRpb24gb2NjdXJyZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCAxMTczZWY2YTFiMjguLjkzYzE3NjA5MDYw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwK
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQorI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjZW5kaWYKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjZW5kaWYKIApAQCAtNDMsMjQgKzQ2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gQmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVy
IHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVuY2UKLS8vIHR5cGUgYWNjb3JkaW5n
IHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQuCi1TdHJpbmcgZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKLXsKICNpZiBVU0UoQ0YpCitT
dHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIENGX1JFTEVBU0VTX0FSR1VN
RU5UIGZvcm1hdCwgLi4uKQorewogICAgIHZhX2xpc3QgYXJndW1lbnRzOwogICAgIHZhX3N0YXJ0
KGFyZ3VtZW50cywgZm9ybWF0KTsKIAotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0JFR0lO
Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFy
Z3VtZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRzKSk7
Ci0gICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECisgICAgYXV0byByZXN1bHQgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAwLCBmb3JtYXQsIGFy
Z3VtZW50cykpOwogCiAgICAgdmFfZW5kKGFyZ3VtZW50cyk7CisgICAgQ0ZSZWxlYXNlKGZvcm1h
dCk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLSNlbGlmIFVTRShHTElCKQorfQorI2Vsc2UK
Ky8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2
YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVmZXJlbmNlCisvLyB0eXBlIGFjY29yZGluZyB0byBz
ZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4xOTA1IHN0YW5kYXJkLgorU3RyaW5nIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKK3sKKyNpZiBVU0UoR0xJQikK
ICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7
Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVwX3ZwcmludGYoZm9ybWF0LnV0
ZjgoKS5kYXRhKCksIGFyZ3VtZW50cykpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJlc3VsdChn
X3N0cmR1cF92cHJpbnRmKGZvcm1hdCwgYXJndW1lbnRzKSk7CiAgICAgdmFfZW5kKGFyZ3VtZW50
cyk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVzdWx0LmdldCgpKTsKICNlbHNlCkBA
IC02OCwxNCArNzQsNDcgQEAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9y
bWF0LCAuLi4pCiAgICAgcmV0dXJuIGZvcm1hdDsKICNlbmRpZgogfQorI2VuZGlmCisKKyNpZiBV
U0UoQ0YpCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRDRlN0cmluZyhDRlN0cmluZ1JlZiBrZXkpCit7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhIGRp
c3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgorICAgIC8vIFNl
ZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+Lgor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOworICAg
IENGU3RyaW5nUmVmIHJlc3VsdDsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXN1bHQgPSBD
RkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleSwgbnVsbHB0ciwgd2ViS2l0
QnVuZGxlKCksIG5vdEZvdW5kLCBudWxscHRyKTsKKyNlbHNlCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxl
V2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAgIEFTU0VSVChi
dW5kbGUuZ2V0KCkpOworICAgIHJlc3VsdCA9IENGQnVuZGxlQ29weUxvY2FsaXplZFN0cmluZyhi
dW5kbGUuZ2V0KCkuZ2V0KCksIGtleSwgbm90Rm91bmQsIG51bGxwdHIpOworI2VuZGlmCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICBpZiAocmVzdWx0ID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNo
YXIga2V5Q1N0cmluZ1syNTZdOworICAgICAgICBDRlN0cmluZ0dldENTdHJpbmcoa2V5LCBrZXlD
U3RyaW5nLCBzaXplb2Yoa2V5Q1N0cmluZyksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiQ291bGQgbm90IGZp
bmQgbG9jYWxpemFibGUgc3RyaW5nICclcycgaW4gYnVuZGxlIiwga2V5Q1N0cmluZyk7CisgICAg
fQorI2VuZGlmCiAKLSNpZiAhVVNFKENGKQorICAgIHJldHVybiByZXN1bHQ7Cit9CiAKK1N0cmlu
ZyBsb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQoreworICAgIHJldHVybiBhZG9wdENG
KGxvY2FsaXplZENGU3RyaW5nKGtleSkpLmdldCgpOworfQorI2Vsc2UKIFN0cmluZyBsb2NhbGl6
ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGtleSwgc3RybGVuKGtleSkpOwogfQotCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQpAQCAtMjMzLDkgKzI3Miw5IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsKICNpZiBVU0UoQ0Yp
CiAgICAgYXV0byBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0o
c2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBj
b250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5n
ZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NG
U1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdM
SUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29r
IFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3
b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS51dGY4KCku
ZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
U1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxv
b2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRo
IHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zv
ck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CiAjZW5kaWYKQEAgLTI0Niw3ICsyODUsNyBAQCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYg
c2VsZWN0ZWRTdHJpbmcpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlKGNvbnN0
IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7CiAgICAgYXV0byBzZWxlY3RlZENGU3RyaW5nID0g
dHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlRy
YW5zbGF0ZSDigJwlQOKAnSIsICJUcmFuc2xhdGUgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxl
Y3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCd
IiwgIlRyYW5zbGF0ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2Vs
ZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAtODI0LDcgKzg2Myw3IEBAIFN0
cmluZyBwbHVnaW5Ub29TbWFsbFRleHQoKQogCiBTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4
dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51
bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxv
d3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8g
ZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNv
bnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CiB9CiAK
IFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKQEAgLTg0NiwxMSArODg1LDExIEBAIFN0cmlu
ZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgYXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlcklu
dFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBhdXRvIGhlaWdodFN0cmluZyA9IGFkb3B0Q0YoQ0ZO
dW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwg
aGVpZ2h0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRh
bG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5n
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkcoIiVAICVAeCVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9u
ZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdl
dCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiJXMgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3Rh
bmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxl
bmFtZS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzICVkeCVk
IHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0
aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogI2Vsc2UKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5k
b3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1i
b2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxl
bmFtZT4iLCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiPGZpbGVuYW1lPiAlZHglZCBwaXhlbHMiLCAid2luZG93IHRpdGxl
IGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3Qg
eCkiKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+Iiwg
ZmlsZW5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTk3MiwxMiArMTAxMSwxMiBAQCBTdHJpbmcgbG9j
YWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKICAgICBzZWNvbmRzICU9IDYw
OwogCiAgICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vj
b25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1l
IHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEk
ZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmls
aXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDEgZGF5Iiks
IGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKICAgICBpZiAoaG91cnMpCi0gICAgICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEkZCBob3VycyAl
MiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBt
ZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWludXRlcyIpLCBob3VycywgbWludXRl
cywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJh
Y2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49
IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwogICAgIGlmIChtaW51dGVz
KQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUx
JGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29u
ZHMpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEk
ZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVy
IHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMpOworICAgICAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIk
ZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVy
IHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIHNlY29u
ZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2
YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKQpAQCAtMTAzOCwxMyArMTA3NywxMyBAQCBTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKICNpZiAhUExBVEZPUk0oR1RLKQog
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vU2hvcnRUZXh0KGludCwgaW50IG1pbkxlbmd0aCkK
IHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlVzZSBh
dCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250
cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWluaW11bSBhbGxvd2VkIGxl
bmd0aCIpLCBtaW5MZW5ndGgpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRp
b24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVy
IHRoYW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtaW5MZW5ndGgpOwogfQogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBp
bnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X1NUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4g
bWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQg
Y2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50
cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4
TGVuZ3RoKTsKIH0KICNlbmRpZgogI2VuZGlmCkBAIC0xMDUyLDkgKzEwOTEsOSBAQCBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVt
KQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAi
VmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93
ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRp
b24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4g
YWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZWxp
ZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRp
b24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4g
YWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiVmFsdWUgbXVzdCBiZSBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1
dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwg
bWluaW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbmltdW0p
OwogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSB1bmRlcmZsb3ciLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBh
bGxvd2VkIG1pbmltdW0iKTsKQEAgLTEwNjQsOSArMTEwMyw5IEBAIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1pbmltdW0pCiBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1heGltdW0p
CiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIg
dGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
KyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkco
IlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93
ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNF
KEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJW
YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2Vk
IG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhh
biBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29u
dHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51
dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1heGltdW0pOwogICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSBvdmVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1h
eGltdW0iKTsKQEAgLTExMDksNyArMTE0OCw3IEBAIFN0cmluZyB0ZXh0VHJhY2tBdXRvbWF0aWNN
ZW51SXRlbVRleHQoKQogCiBTdHJpbmcgYWRkVHJhY2tMYWJlbEFzU3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAICglQCkiLCAiJUAgKCVAKSAoYXVkaW8v
dGV4dCB0cmFjaykiLCAiQXVkaW8vVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhYmVsIGFuZCBsYW5ndWFnZSBvZiB0aGUgdHJhY2ssIGluIHRoZSBmb3Jt
IG9mICdMYW5ndWFnZSAoTGFiZWwpJy4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBs
YWJlbC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1
ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUg
Zm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tL
aW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0xMTIxLDcgKzExNjAsNyBAQCBTdHJp
bmcgYWRkVGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tL
aW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ0MiLCAiJUAgQ0MgKHRleHQgdHJhY2sp
IiwgIkNsb3NlZCBjYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBp
bmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDQycpLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENDIiwgIiVAIENDICh0ZXh0
IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2gg
Q0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRU
cmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExMzMsNyArMTE3Miw3IEBAIFN0cmlu
ZyBhZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewog
ICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDYXB0
aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBDYXB0aW9ucyAodGV4dCB0cmFjayki
LCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMg
dGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2FwdGlvbnMnKS4iKSwg
dGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBDYXB0
aW9ucyAodGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9y
bWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xp
c2ggQ2FwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3Ry
aW5nIHRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0xMTQ1LDcgKzEx
ODQsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeChjb25zdCBT
dHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
dGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlwdGlvbnMiLCAi
JUAgRGVzY3JpcHRpb25zICh0ZXh0IHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgdGV4dCB0cmFjayBk
aXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2Nh
bGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAodGV4dCB0
cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2Ny
aXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcg
dGV4dFRyYWNrS2luZENoYXB0ZXJzRGlzcGxheU5hbWUoKQpAQCAtMTE1Nyw3ICsxMTk2LDcgQEAg
U3RyaW5nIGFkZFRleHRUcmFja0tpbmRDaGFwdGVyc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2lu
ZENoYXB0ZXJzRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENoYXB0ZXJzIiwgIiVAIENoYXB0ZXJzICh0ZXh0IHRy
YWNrKSIsICJDaGFwdGVycyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDaGFwdGVycycp
LiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENoYXB0ZXJzIiwgIiVA
IENoYXB0ZXJzICh0ZXh0IHRyYWNrKSIsICJDaGFwdGVycyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFt
ZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAn
RW5nbGlzaCBDaGFwdGVycycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQog
CiBTdHJpbmcgdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKQpAQCAtMTE2OSw3ICsx
MjA4LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4
dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIE1ldGFkYXRhIiwgIiVAIE1ldGFkYXRh
ICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBN
ZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIE1ldGFk
YXRhIiwgIiVAIE1ldGFkYXRhICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNrIGRp
c3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2Fs
ZSAoZS5nLiAnRW5nbGlzaCBNZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1lKCkKQEAgLTExODEs
NyArMTIyMCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kU0RIU3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0
VHJhY2tLaW5kU0RIRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwg
IlNESCAoaS5lLiBkZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIFNESCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVko
IiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwgIlNESCAoaS5lLiBkZWFmIGFuZC9vciBo
YXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1
ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIFNESCcpLiIpLCB0
ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZEVh
c3lSZWFkZXJEaXNwbGF5TmFtZSgpCkBAIC0xMTkzLDcgKzEyMzIsNyBAQCBTdHJpbmcgYWRkVGV4
dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRFYXN5UmVhZGVy
RGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9D
RlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVyIiwgIiVAIEVhc3kgUmVhZGVyICh0ZXh0IHRyYWNr
KSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQtZ3JhZGUgbGV2ZWwpIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RS
SU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIgKHRleHQgdHJhY2spIiwg
IkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFtZSgpCkBAIC0xMjA1LDcg
KzEyNDQsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZEZvcmNlZFN1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4
dFRyYWNrS2luZEZvcmNlZERpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0
IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5j
bHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRm9yY2VkIiwgIiVAIEZv
cmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1h
dCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNo
IEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcg
YXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0xMjE3LDcgKzEyNTYs
NyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGF1
ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIl
QCBEZXNjcmlwdGlvbnMgKGF1ZGlvIHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKGF1ZGlv
IHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERl
c2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJp
bmcgYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKQpAQCAtMTIyOSw3ICsxMjY4
LDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXVk
aW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENvbW1lbnRhcnkiLCAiJUAgQ29t
bWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1lbnRhcnkgYXVkaW8gdHJhY2sgZGlzcGxheSBu
YW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcu
ICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
KyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdf
S0VZKCIlQCBDb21tZW50YXJ5IiwgIiVAIENvbW1lbnRhcnkgKGF1ZGlvIHRyYWNrKSIsICJDb21t
ZW50YXJ5IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUg
bGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDb21tZW50YXJ5JykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZiAvLyBVU0UoQ0YpCkBAIC0x
MjU2LDkgKzEyOTUsOSBAQCBTdHJpbmcgdXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51VGl0bGUo
KQogU3RyaW5nIHdlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwoY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpCiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFzdGVyIEtl
eSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGlu
IEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBz
aW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGlj
YXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlcyBXZWJDcnlwdG8g
TWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0
ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RS
SU5HKCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2lu
Z2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0
aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
IjxhcHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlv
bidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLnJlcGxhY2UoIjxh
cHBsaWNhdGlvbj4iLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpOwogI2VuZGlmCkBAIC0xMzMy
LDEyICsxMzcxLDEyIEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpCiAvLyBp
bmZvcm1hdGlvbiBpcyBwcm92aWRlZCB0byBoZWxwIHVzZXJzIHRvIG1ha2UgZGVjaXNpb25zLgog
U3RyaW5nIG1ha2VDcmVkZW50aWFsVG91Y2hJRFByb21wdFRpdGxlKGNvbnN0IFN0cmluZyYgYnVu
ZGxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gdXNlIFRv
dWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gdXNl
IFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRlIG9uIHRoaXMgZGV2
aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91Y2ggSUQgZm9y
IOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2UgVG91Y2ggSUQg
dG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZpY2UiKSwgYnVu
ZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiB9CiAKIFN0cmluZyBnZXRBc3NlcnRpb25Ub3VjaElEUHJvbXB0VGl0bGUoY29uc3Qg
U3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlr
ZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0
byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA4oCd
IHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmll
ZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUiKSwgYnVuZGxlTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiB9CiAKIFN0cmluZyBnZW5lcmljVG91Y2hJRFByb21wdFRpdGxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRleCBkODU2YTBkNzBiYzkuLjJiMzFmNjQ4
YTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHND
b2NvYS5oPgorI2VuZGlmCisKICNpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tB
R0UpCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNlbmRpZgpAQCAtMzc3LDcgKzM4MSwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Ry
YW5zbGF0ZShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKTsKICNlbmRpZgogCi0jaWYgVVNF
KEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQorI2lmIFVTRShDRikKKyNkZWZpbmUg
V0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJp
bmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXks
IGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoa2V5KSkKKyNkZWZp
bmUgV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0
aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNlbGlmIFVTRShH
TElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKICNkZWZpbmUgV0VCX1VJX1NUUklORyhz
dHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoXyhzdHJpbmcpKQog
I2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNv
cmU6OmxvY2FsaXplZFN0cmluZyhDXyhrZXksIHN0cmluZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJ
TkdfV0lUSF9NTkVNT05JQyhzdHJpbmcsIG1uZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKF8obW5lbW9uaWMpKQpAQCAtMzg4LDE3ICszOTYsMzcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCi0vLyBUaGlzIGlzIGV4YWN0bHkg
YXMgV0VCX1VJX1NUUklORywgYnV0IHJlbmFtZWQgdG8gZW5zdXJlIHRoZSBzdHJpbmcgaXMgbm90
IHNjYW5uZWQgYnkgbm9uLUNGIHBvcnRzLgotI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkcoc3RyaW5n
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKHN0cmluZykKLSNkZWZpbmUg
V0VCX1VJX0NGU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6Omxv
Y2FsaXplZFN0cmluZyhrZXkpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywg
ZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nKENGU1RSKHN0cmluZykpCisj
ZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCisjZGVmaW5lIFdFQl9V
SV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIChfKHN0cmluZykpCisjZWxzZQor
I2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSAoc3RyaW5n
KQogI2VuZGlmCiAKKyNpZiBVU0UoQ0YpCisvLyBUaGlzIGlzIGV4YWN0bHkgYXMgV0VCX1VJX1tG
T1JNQVRfXVNUUklORywgYnV0IHJlbmFtZWQgdG8gZW5zdXJlIHRoZSBzdHJpbmcgaXMgbm90IHNj
YW5uZWQgYnkgbm9uLUNGIHBvcnRzLgorI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkcoc3RyaW5nLCBk
ZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVm
aW5lIFdFQl9VSV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3Jl
Ojpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoa2V5KSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9DRlNU
UklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNU
UihzdHJpbmcpKQorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWShzdHJpbmcsIGtl
eSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nKENGU1RSKGtleSkpCisg
ICAgV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdS
ZWYga2V5KSBDRl9GT1JNQVRfQVJHVU1FTlQoMSkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtleSk7Cisj
ZWxzZQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hh
cioga2V5KTsKLSAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQs
IC4uLik7CisjZW5kaWYKKworI2lmIFVTRShDRikKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVk
U3RyaW5nKENGU3RyaW5nUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UIGZvcm1hdCwgLi4uKSBDRl9G
T1JNQVRfRlVOQ1RJT04oMSwgMik7CisjZWxzZQorICAgIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIp
OworI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwogI2RlZmluZSBXRUJfVUlfTlNTVFJJTkcoc3Ry
aW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcoc3RyaW5nKQotICAg
IFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5
KSBOU19GT1JNQVRfQVJHVU1FTlQoMSk7CisgICAgaW5saW5lIE5TX0ZPUk1BVF9BUkdVTUVOVCgx
KSBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdE5TKGJyaWRnZV9jYXN0KGxvY2FsaXplZENGU3RyaW5nKGJyaWRnZV9j
YXN0KGtleSkpKSkuYXV0b3JlbGVhc2UoKTsKKyAgICB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9j
YWxpemVkU3RyaW5nc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9j
YWxpemVkU3RyaW5nc0NvY29hLm1tCmluZGV4IGZjMzZiZmNhMjVmMC4uNDIxNmQ0OWEwNTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3Ry
aW5nc0NvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzUsMjQgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1OU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKLXsKLSNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGEgZGlzcGF0Y2ggcXVl
dWUgd2hlbiBpbml0aWFsaXppbmcgc3RyaW5ncyBvbiBpT1MuCi0gICAgLy8gU2VlIExvYWRXZWJM
b2NhbGl6ZWRTdHJpbmdzIGFuZCA8cmRhcjovL3Byb2JsZW0vNzkwMjQ3Mz4uCi0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSNlbmRpZgotCi0gICAgc3RhdGljIE5TQnVuZGxlICpidW5kbGUg
PSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOwot
ICAgIHJldHVybiBbYnVuZGxlIGxvY2FsaXplZFN0cmluZ0ZvcktleTprZXkgdmFsdWU6QCJsb2Nh
bGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIgdGFibGU6bnVsbHB0cl07Ci19Ci0KLVN0cmluZyBsb2Nh
bGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAs
IGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgcmV0
dXJuIGxvY2FsaXplZE5TU3RyaW5nKChfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQo
KSk7Ci19Ci0KIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKIHsKICAgICByZXR1
cm4gV0VCX1VJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7CkBAIC03OSw3
ICs2MSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsKICAgICBhdXRvIHNlYXJjaFBy
b3ZpZGVyTmFtZSA9IFBBTDo6ZGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKTsKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlNlYXJjaCB3aXRo
ICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRo
IHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlNl
YXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUg
aXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdl
dCgpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCkBAIC0yMzMs
NyArMjE1LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0cmluZyBrZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5
Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZP
Uk1BVF9DRlNUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJh
dGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjQ1LDcgKzIyNyw3IEBAIFN0cmluZyBo
dG1sU2VsZWN0TXVsdGlwbGVJdGVtcyhzaXplX3QgY291bnQpCiAgICAgY2FzZSAxOgogICAgICAg
ICByZXR1cm4gV0VCX1VJX1NUUklORygiMSBJdGVtIiwgIlByZXNlbnQgdGhlIGVsZW1lbnQgPHNl
bGVjdCBtdWx0aXBsZT4gd2hlbiBhIHNpbmdsZSA8b3B0aW9uPiBpcyBzZWxlY3RlZCAoaU9TIG9u
bHkpIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVj
dGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9u
bHkpIiksIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX0NGU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNl
bGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9T
IG9ubHkpIiksIGNvdW50KTsKICAgICB9CiB9CiAKQEAgLTI3OCw3ICsyNjAsNyBAQCBTdHJpbmcg
Zm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VU
b29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBs
b2NhbGl6ZWRTdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIlVzZSBubyBtb3JlIHRo
YW4gJWQgY2hhcmFjdGVyKHMpIiwgQCJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJv
bCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5n
dGgiKSwgbWF4TGVuZ3RoXTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9GT1JNQVRfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgIlZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBz
aG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOwogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xv
Y2FsaXplZFN0cmluZ3NXaW4uY3BwCmluZGV4IDFlNzllMTA4NDdkNy4uYjkzODcxNDY2NTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NX
aW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDM2ICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKIAog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFu
ZGxlLmgiCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5j
bHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVu
ZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFVTRShDRikKLVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hh
cioga2V5KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzdGF0aWMgQ0ZT
dHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsK
LQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQg
PSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5n
LmdldCgpLCAwLCB3ZWJLaXRCdW5kbGUoKSwgbm90Rm91bmQsIDApKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHJlc3VsdC5nZXQoKSAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2Fs
aXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKLX0KLSNlbmRpZgotCiBTdHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThk
Li5jYWVlMDBjYzBkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0xMS0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQg
c3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIz
MjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0
cmluZ3NJbnRlcm5hbC5tbToKKyAgICAgICAgKFdlYkxvY2FsaXplZFN0cmluZ0ludGVybmFsKToK
KyAgICAgICAgLSBVc2UgbG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0ZWFkIG9mIGxvY2FsaXplZFN0
cmluZygpIHRvCisgICAgICAgICAgZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNvbnZlcnQgZnJvbQor
ICAgICAgICAgIENGU3RyaW5nIC0+IFN0cmluZyAtPiBOU1N0cmluZy4KKwogMjAyMS0xMS0wMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgaU9T
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCmluZGV4IDllNjU2OWY3YWM3MS4u
YTc3NWVlYzY2ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEyIEBA
CiAjaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIgogCiAjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNTdHJpbmcgKldlYkxvY2FsaXplZFN0
cmluZ0ludGVybmFsKGNvbnN0IGNoYXIqIGtleSkKIHsKLSAgICByZXR1cm4gbG9jYWxpemVkU3Ry
aW5nKGtleSk7CisgICAgLy8gRklYTUU6IENoYW5nZSBjYWxsZXJzIHRvIHVzZSBOU1N0cmluZyBs
aXRlcmFscyB0byBlbGltaW5hdGUgdGhpcyBzdGVwLgorICAgIGF1dG8ga2V5U3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgcmV0dXJuIGxvY2FsaXplZE5TU3Ry
aW5nKGJyaWRnZV9jYXN0KGtleVN0cmluZy5nZXQoKSkpOwogfQo=
</data>
<flag name="commit-queue"
          id="468201"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443468</attachid>
            <date>2021-11-05 20:24:14 -0700</date>
            <delta_ts>2021-11-06 09:13:28 -0700</delta_ts>
            <desc>Patch v5 RELEASE ASSERT</desc>
            <filename>bug-232686-patch-v5-release-assert.diff</filename>
            <type>text/plain</type>
            <size>41829</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2OWZhYWRhNWExYmIuLmI2ZjJjMDhiYjRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzNCBAQAorMjAyMS0xMS0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXpl
ZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdv
YWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAg
ICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0
eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgcGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhl
IGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAgICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBw
bGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBvYmplY3RzIHRvCisgICAgICAgIGFjY29tcGxp
c2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9mIENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAg
ICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8g
Q0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGltZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29u
dGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgorICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBh
bGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9ybWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8g
dGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFzc2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmlu
ZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJXyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGlu
IHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdp
bGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3IsCisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9u
LUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0Cisg
ICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVy
biB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMg
dGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAgICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3Ry
aW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3Mu
CisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAg
ICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6
CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAg
ICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJ
bXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRmb3Jtcywg
YnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4K
KyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNy
b3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3Ry
aW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBgZm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVM
RUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAgICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2Nh
bGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJldHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0
YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAor
ICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNpbmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVk
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0g
VGhpcyBtZXRob2Qgd2FzIGNvbnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAg
ICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYW5kIGZyb20gbG9jYWxpemVkU3RyaW5n
KCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzV2luLmNwcC4KKyAgICAgICAgLSBUaGlz
IG1ldGhvZCBtdXN0IHJldHVybiBhICsxIHJldGFpbmVkIENGU3RyaW5nUmVmICh0byBhdm9pZAor
ICAgICAgICAgIGF1dG9yZWxlYXNpbmcgaXQpIHNpbmNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpIHdv
bid0IGFsbG93IGEKKyAgICAgICAgICByZXR1cm4gdHlwZSBvZiBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTogQWRkIGZvciBVU0UoQ0Yp
LgorICAgICAgICAtIE1vdmVkIGZyb20gTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tLCBhbmQgY2hh
bmdlZCB0byB0YWtlIGEKKyAgICAgICAgICBDRlN0cmluZ1JlZiBhcmd1bWVudCB0byBlbGltaW5h
dGUgdGhlIG5lZWQgdG8gY3JlYXRlIGEgbmV3CisgICAgICAgICAgQ0ZTdHJpbmdSZWYgYXQgcnVu
dGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlv
bmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0
aW9uTWVzc2FnZVRvb1Nob3J0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VPdmVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVHJhY2tMYWJlbEFzU3VmZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc1N1ZmZp
eCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kQ2hhcHRlcnNTdWZmaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZE1ldGFkYXRhU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZFRleHRUcmFja0tpbmRTREhTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
VGV4dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4
dFRyYWNrS2luZEZvcmNlZFN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNr
S2luZERlc2NyaXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRBdWRpb1RyYWNr
S2luZENvbW1lbnRhcnlTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6d2ViQ3J5cHRvTWFzdGVy
S2V5S2V5Y2hhaW5MYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ3JlZGVudGlhbFRvdWNo
SURQcm9tcHRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRBc3NlcnRpb25Ub3VjaElEUHJv
bXB0VGl0bGUpOgorICAgICAgICAtIFVzZSBXRUJfVUlfRk9STUFUX1NUUklORygpIGZvciBjcm9z
cy1wbGF0Zm9ybSBVSSBmb3JtYXQKKyAgICAgICAgICBzdHJpbmdzLCBhbmQgdXNlIFdFQl9VSV9G
T1JBTVRfQ0ZTVFJJTkdbX0tFWV0oKSBmb3IgQXBwbGUKKyAgICAgICAgICBwbGF0Zm9ybSBVSSBm
b3JtYXQgc3RyaW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoK
KyAgICAgICAgKFdFQl9VSV9TVFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfU1RSSU5HX0tF
WSk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyk6IEFkZC4KKyAg
ICAgICAgLSBBZGQgc2VwYXJhdGUgbWFjcm9zIGZvciBVU0UoQ0YpIHNvIHRoYXQgYXJndW1lbnRz
IGNvdWxkIGJlCisgICAgICAgICAgdHJhbnNmb3JtZWQgYXQgY29tcGlsZS10aW1lIHRvIENGU3Ry
aW5nUmVmIHVzaW5nIENGU1RSKCkuCisgICAgICAgIChXRUJfVUlfRk9STUFUX1NUUklORyk6IEFk
ZC4KKyAgICAgICAgLSBDcm9zcy1wbGF0Zm9ybSBtYWNybyBmb3IgVUkgZm9ybWF0IHN0cmluZ3Mu
CisgICAgICAgIC0gTm90ZSB0aGF0IG5vbi1VU0UoQ0YpIG1hY3JvcyBlc3NlbnRpYWxseSBkbyBu
b3RoaW5nIHNpbmNlCisgICAgICAgICAgbG9jYWxpemVkU3RyaW5nKCkganVzdCBjb252ZXJ0cyBj
b25zdCBjaGFyKiB0byBXVEY6OlN0cmluZywKKyAgICAgICAgICBhbmQgZm9ybWF0TG9jYWxpemVk
U3RyaW5nKCkgbm93IHRha2VzIGEgY29uc3QgY2hhciouCisgICAgICAgIChXRUJfVUlfQ0ZTVFJJ
TkcpOgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HX0tFWSk6CisgICAgICAgIC0gQ2hhbmdlIG1h
Y3JvcyBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZSB0cmFuc2Zvcm1lZCBhdAorICAgICAgICAg
IGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNUUigpLgorICAgICAgICAoV0VC
X1VJX0ZPUk1BVF9DRlNUUklORyk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkdfS0VZKTogQWRkLgorICAgICAgICAtIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBhcyBmb3JtYXQg
c3RyaW5nIGFyZ3VtZW50cyB0bworICAgICAgICAgIGZvcm1hdExvY2FsaXplZFN0cmluZygpLgor
ICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gRGVj
bGFyZSBuZXcgZnVuY3Rpb24gY29udmVydGVkIGZyb20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgor
ICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbS4KKyAgICAgICAgKFdlYkNvcmU6Omxv
Y2FsaXplZFN0cmluZyk6IEFkZC4KKyAgICAgICAgLSBBZGQgbmV3IGRlY2xhcmF0aW9uIGZvciBV
U0UoQ0YpIHRoYXQgdGFrZXMgYSBDRlN0cmluZ1JlZgorICAgICAgICAgIGFyZ3VtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBDaGFuZ2Ug
dG8gdXNlIGBDRlN0cmluZ1JlZiBmb3JtYXRgIGZvciBBcHBsZSBwbGF0Zm9ybXMsIGFuZAorICAg
ICAgICAgIGBjb25zdCBjaGFyKiBmb3JtYXRgIGZvciBvdGhlciBwbGF0Zm9ybXMgc28gZm9ybWF0
IG1hY3JvcyBtYXkKKyAgICAgICAgICBiZSBhZGRlZCB0byB0aGUgZGVsYXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5nKToKKyAgICAgICAgLSBSZS1pbXBsZW1lbnQg
YXMgYW4gaW5saW5lIGZ1bmN0aW9uIHVzaW5nIGxvY2FsaXplZENGU3RyaW5nKCkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBs
b2NhbGl6ZWRDRlN0cmluZygpIGluIExvY2FsaXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkU3RyaW5nKTogRGVsZXRlLgorICAgICAgICAtIE1vdmVkIHRvIExvY2Fs
aXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6OmtleWdlbktleWNoYWluSXRlbU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6aHRtbFNlbGVjdE11bHRpcGxlSXRlbXMpOgorICAgICAgICAtIFN3aXRj
aCBmcm9tIFdFQl9VSV9TVFJJTkcoKSB0byBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCkgZHVlIHRv
CisgICAgICAgICAgdGhlIG5ldyBydWxlIGZvciBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MuCisg
ICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KToKKyAgICAgICAg
LSBTd2l0Y2ggZnJvbSArW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6XSBhbmQKKyAgICAgICAg
ICBXRUJfVUlfTlNTVFJJTkcoKSB0byBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSBh
bmQKKyAgICAgICAgICBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCkgZm9yIGNvbnNpc3RlbmN5Lgor
CisgICAgICAgICogcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKTogRGVsZXRlLgorICAgICAgICAtIE1vdmVkIHRv
IGxvY2FsaXplZENGU3RyaW5nKCkgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisKIDIwMjEtMTEt
MDMgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAgIGJv
cmRlci1yYWRpdXMgaW5saW5lIHN0eWxlIHNob3VsZCBzZXJpYWxpemUgd2l0aCB2YWxpZCBzeW50
YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxl
LXN0cmluZ3MucGwKaW5kZXggZDkzMzkwMWM1ZmEwLi44ZjY0NmU3ZGM0ZTIgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBs
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCi0jIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg2LDcgKzE4Niw3IEBAIGhh
bmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFZhbGlkYXRlIFVU
Ri04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAkVUlTdHJpbmcgPSAkc3RyaW5nOwog
ICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJTkdfS0VZKF9JTlRF
Uk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSShfRk9STUFUKT9fKENGKT9TVFJJTkdfS0VZKF9JTlRF
Uk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAj
IEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAgICAgICAgICAgICAgICAgJGtl
eSA9ICRzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7CkBA
IC0yNDUsNyArMjQ1LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAgICBlbWl0
RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsK
ICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJTkcoX0tF
WSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9OU1NUUklORyQvKSB8fCAo
JHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HKF9LRVkpPyhfSU5URVJO
QUwpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfRk9STUFUXyhDRik/U1RSSU5HKF9LRVkpPyQv
KSB8fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJ
X1NUUklOR19XSVRIX01ORU1PTklDJC8pKSB7CiAgICAgICAgICAgICAgICAgICAgICRleHBlY3Rl
ZCA9ICIoIjsKICAgICAgICAgICAgICAgICAgICAgJG1hY3JvID0gJHRva2VuOwogICAgICAgICAg
ICAgICAgICAgICAkVUlTdHJpbmcgPSB1bmRlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggMTE3M2VmNmExYjI4Li5iODdlNGExZDU1ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVk
ZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCiAKQEAgLTQzLDI0ICs0NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2
YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVmZXJlbmNlCi0vLyB0eXBlIGFjY29yZGluZyB0byBz
ZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4xOTA1IHN0YW5kYXJkLgotU3RyaW5nIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCi17CiAjaWYgVVNFKENGKQorU3RyaW5n
IGZvcm1hdExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBm
b3JtYXQsIC4uLikKK3sKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1
bWVudHMsIGZvcm1hdCk7CiAKLSAgICBBTExPV19OT05MSVRFUkFMX0ZPUk1BVF9CRUdJTgotICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVu
dHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwotICAg
IEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0VORAorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LCBhcmd1bWVu
dHMpKTsKIAogICAgIHZhX2VuZChhcmd1bWVudHMpOworICAgIENGUmVsZWFzZShmb3JtYXQpOwog
ICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Ci0jZWxpZiBVU0UoR0xJQikKK30KKyNlbHNlCisvLyBC
ZWNhdXNlIHxmb3JtYXR8IGlzIHVzZWQgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3Rh
cnQsIGl0IGNhbm5vdCBiZSBhIHJlZmVyZW5jZQorLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlv
biAxOC43LzMgb2YgdGhlIEMrKyBOMTkwNSBzdGFuZGFyZC4KK1N0cmluZyBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCit7CisjaWYgVVNFKEdMSUIpCiAgICAg
dmFfbGlzdCBhcmd1bWVudHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHJlc3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdC51dGY4KCku
ZGF0YSgpLCBhcmd1bWVudHMpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJk
dXBfdnByaW50Zihmb3JtYXQsIGFyZ3VtZW50cykpOwogICAgIHZhX2VuZChhcmd1bWVudHMpOwog
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHJlc3VsdC5nZXQoKSk7CiAjZWxzZQpAQCAtNjgs
MTQgKzc0LDQ3IEBAIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwg
Li4uKQogICAgIHJldHVybiBmb3JtYXQ7CiAjZW5kaWYKIH0KKyNlbmRpZgogCi0jaWYgIVVTRShD
RikKKyNpZiBVU0UoQ0YpCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRDRlN0cmluZyhDRlN0cmluZ1Jl
ZiBrZXkpCit7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ2FuIGJlIGNhbGxl
ZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgor
ICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5
MDI0NzM+LgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKKworICAgIHN0YXRp
YyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3Vu
ZCIpOworICAgIENGU3RyaW5nUmVmIHJlc3VsdDsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBy
ZXN1bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleSwgbnVsbHB0
ciwgd2ViS2l0QnVuZGxlKCksIG5vdEZvdW5kLCBudWxscHRyKTsKKyNlbHNlCisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxl
R2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAg
IEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJlc3VsdCA9IENGQnVuZGxlQ29weUxvY2FsaXpl
ZFN0cmluZyhidW5kbGUuZ2V0KCkuZ2V0KCksIGtleSwgbm90Rm91bmQsIG51bGxwdHIpOworI2Vu
ZGlmCisvLyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGlmIChyZXN1bHQgPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgY2hhciBrZXlDU3RyaW5nWzI1Nl07CisgICAgICAgIENGU3RyaW5nR2V0Q1N0cmlu
ZyhrZXksIGtleUNTdHJpbmcsIHNpemVvZihrZXlDU3RyaW5nKSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RG
b3VuZCwgIkNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAnJXMnIGluIGJ1bmRsZSIs
IGtleUNTdHJpbmcpOworICAgIH0KKy8vI2VuZGlmCiAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtleSkKK3sKKyAgICByZXR1cm4g
YWRvcHRDRihsb2NhbGl6ZWRDRlN0cmluZyhrZXkpKS5nZXQoKTsKK30KKyNlbHNlCiBTdHJpbmcg
bG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChrZXksIHN0cmxlbihrZXkpKTsKIH0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKQEAgLTIzMyw5ICsyNzIsOSBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
TG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7CiAjaWYg
VVNFKENGKQogICAgIGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvck1l
bnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOwotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxv
b2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZT
dHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZP
Uk1BVF9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbGlm
IFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiTG9vayBVcCDigJwlc+KAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZyku
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX1NUUklORygiTG9vayBVcCDigJwlc+KAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0
ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRT
dHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwogI2VuZGlmCkBAIC0yNDYsNyArMjg1
LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBT
dHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0
ZShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogICAgIGF1dG8gc2VsZWN0ZWRDRlN0
cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVD
RlN0cmluZygpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RS
SU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlRyYW5zbGF0ZSDi
gJwlQOKAnSIsICJUcmFuc2xhdGUgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3Jk
IiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAgLTgyNCw3ICs4NjMs
NyBAQCBTdHJpbmcgcGx1Z2luVG9vU21hbGxUZXh0KCkKIAogU3RyaW5nIG11bHRpcGxlRmlsZVVw
bG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcykKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVkIGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJl
IHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRo
YXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51bWJlck9mRmlsZXMpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVkIGZpbGVzIiwgIkxh
YmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVw
bG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51bWJlck9mRmlsZXMp
OwogfQogCiBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpCkBAIC04NDYsMTEgKzg4NSwxMSBA
QCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIGF1dG8gaGVpZ2h0ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgYXV0byBoZWlnaHRTdHJpbmcgPSBhZG9w
dENGKENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJlcigwLCBmb3JtYXR0ZXIu
Z2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBh
IHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwg
ZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdo
dFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBz
dGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZp
bGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRT
dHJpbmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBm
b3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgp
IiksIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygi
JXMgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0
YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogI2Vsc2UKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVs
cyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNh
dGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLnJlcGxh
Y2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndp
bmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5
bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkucmVwbGFjZSgiPGZp
bGVuYW1lPiIsIGZpbGVuYW1lKTsKICNlbmRpZgogfQogCkBAIC05NzIsMTIgKzEwMTEsMTIgQEAg
U3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCiAgICAgc2Vj
b25kcyAlPSA2MDsKIAogICAgIGlmIChkYXlzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRl
cyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRy
b2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9T
VFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRlcyAlNCRkIHNlY29uZHMiLCAi
YWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+
PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CiAgICAgaWYgKGhvdXJz
KQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUx
JGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNl
Y29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGlt
ZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKICAgICBp
ZiAobWludXRlcykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0
ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51
dGVzLCBzZWNvbmRzKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9T
VFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzKTsKKyAgICAgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBt
aW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25kcyk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygi
JTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9s
bGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMpOwogfQogCiBTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKQEAgLTEwMzgsMTMgKzEwNzcsMTMgQEAg
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCiAjaWYgIVBMQVRG
T1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb1Nob3J0VGV4dChpbnQsIGludCBt
aW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9y
IGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1pbmltdW0g
YWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFs
dWUgc2hvcnRlciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKIH0K
IAogI2lmICFQTEFURk9STShDT0NPQSkKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdU
ZXh0KGludCwgaW50IG1heExlbmd0aCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVycyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hv
cnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJVc2Ugbm8gbW9y
ZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVu
Z3RoIiksIG1heExlbmd0aCk7CiB9CiAjZW5kaWYKICNlbmRpZgpAQCAtMTA1Miw5ICsxMDkxLDkg
QEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3Ro
KQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmlu
ZyYgbWluaW11bSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRo
IHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBs
b3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBs
b3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlZhbHVl
IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBt
aW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShtaW5pbXVtKTsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygicmFuZ2UgdW5kZXJmbG93Iiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxv
d2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7CkBAIC0xMDY0LDkgKzExMDMsOSBAQCBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVt
KQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29uc3QgU3RyaW5n
JiBtYXhpbXVtKQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
JUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFs
dWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIg
dGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X1NUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRo
YW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0udXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiVmFsdWUgbXVzdCBi
ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1
dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiks
IG1heGltdW0udXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXhpbXVt
KTsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4g
YWxsb3dlZCBtYXhpbXVtIik7CkBAIC0xMTA5LDcgKzExNDgsNyBAQCBTdHJpbmcgdGV4dFRyYWNr
QXV0b21hdGljTWVudUl0ZW1UZXh0KCkKIAogU3RyaW5nIGFkZFRyYWNrTGFiZWxBc1N1ZmZpeChj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICgl
QCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZv
cm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBp
biB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgKCVAKSIsICIl
QCAoJUApIChhdWRpby90ZXh0IHRyYWNrKSIsICJBdWRpby9UZXh0IHRyYWNrIGRpc3BsYXkgbmFt
ZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwgYW5kIGxhbmd1YWdlIG9mIHRoZSB0cmFj
aywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJlbCknLiIpLCB0ZXh0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGxhYmVsLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcg
dGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTEyMSw3ICsxMTYw
LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc1N1ZmZpeChjb25zdCBT
dHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
dGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENDIiwgIiVAIENDICh0
ZXh0IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9y
bWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xp
c2ggQ0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDQyIsICIl
QCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBu
YW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcu
ICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0
cmluZyB0ZXh0VHJhY2tLaW5kQ2FwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0xMTMzLDcgKzExNzIs
NyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJh
Y2tLaW5kQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2FwdGlvbnMiLCAiJUAgQ2FwdGlvbnMgKHRl
eHQgdHJhY2spIiwgIkNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENhcHRp
b25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ2FwdGlvbnMi
LCAiJUAgQ2FwdGlvbnMgKHRleHQgdHJhY2spIiwgIkNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENhcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKQpAQCAt
MTE0NSw3ICsxMTg0LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZm
aXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3Jp
cHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlv
bnMgKHRleHQgdHJhY2spIiwgIkRlc2NyaXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBm
b3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5n
bGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0K
IAogU3RyaW5nIHRleHRUcmFja0tpbmRDaGFwdGVyc0Rpc3BsYXlOYW1lKCkKQEAgLTExNTcsNyAr
MTE5Niw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2hhcHRlcnNTdWZmaXgoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRl
eHRUcmFja0tpbmRDaGFwdGVyc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFwdGVycyIsICIlQCBDaGFwdGVy
cyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2gg
Q2hhcHRlcnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFw
dGVycyIsICIlQCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBk
aXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2Nh
bGUgKGUuZy4gJ0VuZ2xpc2ggQ2hhcHRlcnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRNZXRhZGF0YURpc3BsYXlOYW1lKCkKQEAg
LTExNjksNyArMTIwOCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kTWV0YWRhdGFTdWZmaXgo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHRleHRUcmFja0tpbmRNZXRhZGF0YURpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBNZXRhZGF0YSIsICIl
QCBNZXRhZGF0YSAodGV4dCB0cmFjaykiLCAiTWV0YWRhdGEgdGV4dCB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggTWV0YWRhdGEnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZ
KCIlQCBNZXRhZGF0YSIsICIlQCBNZXRhZGF0YSAodGV4dCB0cmFjaykiLCAiTWV0YWRhdGEgdGV4
dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFu
ZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggTWV0YWRhdGEnKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRTREhEaXNwbGF5TmFtZSgp
CkBAIC0xMTgxLDcgKzEyMjAsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZFNESFN1ZmZpeChj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0
IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3IgaGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkdfS0VZKCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0IHRyYWNrKSIsICJTREggKGkuZS4gZGVh
ZiBhbmQvb3IgaGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBT
REgnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRU
cmFja0tpbmRFYXN5UmVhZGVyRGlzcGxheU5hbWUoKQpAQCAtMTE5Myw3ICsxMjMyLDcgQEAgU3Ry
aW5nIGFkZFRleHRUcmFja0tpbmRFYXN5UmVhZGVyU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5k
RWFzeVJlYWRlckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBFYXN5IFJlYWRlciIsICIlQCBFYXN5IFJlYWRlciAo
dGV4dCB0cmFjaykiLCAiRWFzeSBSZWFkZXIgKGkuZS4gM3JkLWdyYWRlIGxldmVsKSB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBFYXN5IFJlYWRlcicpLiIpLCB0ZXh0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZP
Uk1BVF9DRlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVyIiwgIiVAIEVhc3kgUmVhZGVyICh0ZXh0
IHRyYWNrKSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQtZ3JhZGUgbGV2ZWwpIHRleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRm9yY2VkRGlzcGxheU5hbWUoKQpA
QCAtMTIwNSw3ICsxMjQ0LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRGb3JjZWRTdWZmaXgo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRm9yY2VkIiwgIiVAIEZv
cmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1h
dCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNo
IEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIEZvcmNl
ZCIsICIlQCBGb3JjZWQgKHRleHQgdHJhY2spIiwgIkZvcmNlZCB0ZXh0IHRyYWNrIGRpc3BsYXkg
bmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5n
LiAnRW5nbGlzaCBGb3JjZWQnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0K
IAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTIx
Nyw3ICsxMjU2LDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zU3VmZml4
KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlw
dGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjaykiLCAiRGVzY3JpcHRpb25zIGF1
ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
YW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRp
b25zIChhdWRpbyB0cmFjaykiLCAiRGVzY3JpcHRpb25zIGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFt
ZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAn
RW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURpc3BsYXlOYW1lKCkKQEAgLTEy
MjksNyArMTI2OCw3IEBAIFN0cmluZyBhZGRBdWRpb1RyYWNrS2luZENvbW1lbnRhcnlTdWZmaXgo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDb21tZW50YXJ5
IiwgIiVAIENvbW1lbnRhcnkgKGF1ZGlvIHRyYWNrKSIsICJDb21tZW50YXJ5IGF1ZGlvIHRyYWNr
IGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxv
Y2FsZSAoZS5nLiAnRW5nbGlzaCBDb21tZW50YXJ5JykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21tZW50YXJ5IChhdWRpbyB0cmFj
aykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5j
bHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFy
eScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYgLy8gVVNF
KENGKQpAQCAtMTI1Niw5ICsxMjk1LDkgQEAgU3RyaW5nIHVzZUJsb2NrZWRQbHVnSW5Db250ZXh0
TWVudVRpdGxlKCkKIFN0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkxhYmVsKGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lKQogewogI2lmIFVTRShDRikKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgV2ViQ3J5cHRv
IE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFz
dGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxp
Y2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2Fs
aXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShH
TElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMg
V2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJD
cnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX1NUUklORygiJXMgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNh
dGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6
ZWRBcHBsaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJf
VUlfU1RSSU5HKCI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2Yg
YXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKS5y
ZXBsYWNlKCI8YXBwbGljYXRpb24+IiwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lKTsKICNlbmRp
ZgpAQCAtMTMzMiwxMiArMTM3MSwxMiBAQCBTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKQogLy8gaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgdG8gaGVscCB1c2VycyB0byBtYWtlIGRl
Y2lzaW9ucy4KIFN0cmluZyBtYWtlQ3JlZGVudGlhbFRvdWNoSURQcm9tcHRUaXRsZShjb25zdCBT
dHJpbmcmIGJ1bmRsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtl
IHRvIHVzZSBUb3VjaCBJRCBmb3Ig4oCcJUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVu
ZGxlIHRvIHVzZSBUb3VjaCBJRCB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSBv
biB0aGlzIGRldmljZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFp
bi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gdXNlIFRv
dWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gdXNl
IFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRlIG9uIHRoaXMgZGV2
aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRp
dGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIuKAnCVA4oCd
IHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmll
ZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUiKSwgYnVuZGxlTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5H
KCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHNpZ24gaW4gdG8g4oCcJUDigJ0uIiwgIkFsbG93IHRo
ZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRlIiks
IGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2VuZXJpY1RvdWNoSURQcm9tcHRUaXRsZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggZDg1NmEwZDcwYmM5
Li4yYjMxZjY0OGE2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzI5LDEwIEBACiAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCisjaWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDx3dGYvY29jb2Ev
VHlwZUNhc3RzQ29jb2EuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VU
VEVYVF9QQUNLQUdFKQogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjZW5kaWYKQEAgLTM3
Nyw3ICszODEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7CiAjZW5kaWYK
IAotI2lmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNpZiBVU0UoQ0Yp
CisjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9j
YWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0
cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKGtl
eSkpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyhzdHJpbmcsIG1uZW1vbmlj
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisj
ZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjZGVmaW5lIFdFQl9V
SV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKF8o
c3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0
aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ18oa2V5LCBzdHJpbmcpKQogI2RlZmluZSBX
RUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25pYywgZGVzY3JpcHRpb24p
IFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKG1uZW1vbmljKSkKQEAgLTM4OCwxNyArMzk2LDM3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgVVNFKENGKQotLy8gVGhpcyBp
cyBleGFjdGx5IGFzIFdFQl9VSV9TVFJJTkcsIGJ1dCByZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3Ry
aW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0cy4KLSNkZWZpbmUgV0VCX1VJX0NGU1RS
SU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcp
Ci0jZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBX
ZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklO
RyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNUUihz
dHJpbmcpKQorI2VsaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQorI2Rl
ZmluZSBXRUJfVUlfRk9STUFUX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSAoXyhzdHJpbmcp
KQorI2Vsc2UKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlv
bikgKHN0cmluZykKICNlbmRpZgogCisjaWYgVVNFKENGKQorLy8gVGhpcyBpcyBleGFjdGx5IGFz
IFdFQl9VSV9bRk9STUFUX11TVFJJTkcsIGJ1dCByZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3RyaW5n
IGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0cy4KKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5H
KHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJp
bmcpKQorI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlv
bikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZT
dHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVko
c3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0cmluZyhDRlNU
UihrZXkpKQorICAgIFdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmIGxvY2FsaXplZENGU3RyaW5n
KENGU3RyaW5nUmVmIGtleSkgQ0ZfRk9STUFUX0FSR1VNRU5UKDEpIENGX1JFVFVSTlNfUkVUQUlO
RUQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1Jl
ZiBrZXkpOworI2Vsc2UKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJp
bmcgZm9ybWF0LCAuLi4pOworI2VuZGlmCisKKyNpZiBVU0UoQ0YpCisgICAgU3RyaW5nIGZvcm1h
dExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQs
IC4uLikgQ0ZfRk9STUFUX0ZVTkNUSU9OKDEsIDIpOworI2Vsc2UKKyAgICBTdHJpbmcgZm9ybWF0
TG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URigxLCAyKTsKKyNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KICNkZWZpbmUgV0VCX1VJX05T
U1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5nKHN0
cmluZykKLSAgICBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNT
dHJpbmcgKmtleSkgTlNfRk9STUFUX0FSR1VNRU5UKDEpOworICAgIGlubGluZSBOU19GT1JNQVRf
QVJHVU1FTlQoMSkgTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5nICprZXkpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHROUyhicmlkZ2VfY2FzdChsb2NhbGl6ZWRDRlN0cmlu
ZyhicmlkZ2VfY2FzdChrZXkpKSkpLmF1dG9yZWxlYXNlKCk7CisgICAgfQogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQppbmRleCBmYzM2YmZjYTI1ZjAuLjQyMTZk
NDlhMDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxp
emVkU3RyaW5nc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xv
Y2FsaXplZFN0cmluZ3NDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI0ICszNSw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5nICprZXkpCi17
Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhIGRp
c3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgotICAgIC8vIFNl
ZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+Lgot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBOU0J1bmRs
ZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldl
YkNvcmUiXTsKLSAgICByZXR1cm4gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6a2V5IHZh
bHVlOkAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiIHRhYmxlOm51bGxwdHJdOwotfQotCi1T
dHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmlu
Z05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkp
OwotICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZygoX19icmlkZ2UgTlNTdHJpbmcgKilrZXlT
dHJpbmcuZ2V0KCkpOwotfQotCiBTdHJpbmcgY29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpCiB7
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInVua25vd24iLCAiVW5rbm93biBmaWxlbmFtZSIp
OwpAQCAtNzksNyArNjEsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90
bGlnaHQoKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCiB7CiAgICAgYXV0
byBzZWFyY2hQcm92aWRlck5hbWUgPSBQQUw6OmRlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlO
YW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJT
ZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIgY29udGV4dCBtZW51
IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFByb3ZpZGVyTmFtZS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NG
U1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIgY29u
dGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFByb3Zp
ZGVyTmFtZS5nZXQoKSk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMo
KQpAQCAtMjMzLDcgKzIxNSw3IEBAIFN0cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKQogCiBTdHJp
bmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJO
YW1lIG9mIGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4g
a2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTI0NSw3ICsyMjcsNyBA
QCBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6ZV90IGNvdW50KQogICAgIGNhc2Ug
MToKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIjEgSXRlbSIsICJQcmVzZW50IHRoZSBl
bGVtZW50IDxzZWxlY3QgbXVsdGlwbGU+IHdoZW4gYSBzaW5nbGUgPG9wdGlvbj4gaXMgc2VsZWN0
ZWQgKGlPUyBvbmx5KSIpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXp1IEl0ZW1zIiwgIlByZXNlbnQgdGhlIG51bWJl
ciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxlY3QgbXVsdGlwbGU+IGVsZW1l
bnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiJXp1IEl0ZW1zIiwgIlByZXNlbnQgdGhlIG51
bWJlciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxlY3QgbXVsdGlwbGU+IGVs
ZW1lbnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7CiAgICAgfQogfQogCkBAIC0yNzgsNyArMjYwLDcg
QEAgU3RyaW5nIGZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCkKIAogU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBb
TlNTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJVc2Ug
bm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBm
b3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFs
bG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aF07CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3Rl
cihzKSIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRo
IGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3Ro
KTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCAxZTc5ZTEwODQ3ZDcuLmI5Mzg3
MTQ2NjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXpl
ZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNywzNiArMjcsMTAgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldlYkNvcmVJ
bnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNF
KENGKQotI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKLSNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9DRkJ1bmRsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0YpCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
c3RhdGljIENGU3RyaW5nUmVmIG5vdEZvdW5kID0gQ0ZTVFIoImxvY2FsaXplZCBzdHJpbmcgbm90
IGZvdW5kIik7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcmVzdWx0ID0gYWRvcHRDRihDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVl
KGtleVN0cmluZy5nZXQoKSwgMCwgd2ViS2l0QnVuZGxlKCksIG5vdEZvdW5kLCAwKSk7Ci0gICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQuZ2V0KCkgIT0gbm90Rm91bmQsICJjb3VsZCBub3Qg
ZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKLQotICAgIHJldHVy
biByZXN1bHQuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogU3RyaW5nIHVwbG9hZEZpbGVUZXh0KCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDRm
OGM2OTFhODU4ZC4uY2FlZTAwY2MwZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KKworICAgICAgICBDb21waWxlciBzaG91bGQgYmUgYWJsZSB0byBjaGVjayBsb2NhbGl6
ZWQgZm9ybWF0IHN0cmluZ3MgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMzI2ODY+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDk5NDM0NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViTG9j
YWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW06CisgICAgICAgIChXZWJMb2NhbGl6ZWRTdHJpbmdJ
bnRlcm5hbCk6CisgICAgICAgIC0gVXNlIGxvY2FsaXplZE5TU3RyaW5nKCkgaW5zdGVhZCBvZiBs
b2NhbGl6ZWRTdHJpbmcoKSB0bworICAgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGZyb20KKyAgICAgICAgICBDRlN0cmluZyAtPiBTdHJpbmcgLT4gTlNTdHJpbmcuCisKIDIw
MjEtMTEtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIGlPUyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQppbmRleCA5ZTY1
NjlmN2FjNzEuLmE3NzVlZWM2NmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEx
ICsyNiwxMiBAQAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCIKIAog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5TU3RyaW5nICpXZWJM
b2NhbGl6ZWRTdHJpbmdJbnRlcm5hbChjb25zdCBjaGFyKiBrZXkpCiB7Ci0gICAgcmV0dXJuIGxv
Y2FsaXplZFN0cmluZyhrZXkpOworICAgIC8vIEZJWE1FOiBDaGFuZ2UgY2FsbGVycyB0byB1c2Ug
TlNTdHJpbmcgbGl0ZXJhbHMgdG8gZWxpbWluYXRlIHRoaXMgc3RlcC4KKyAgICBhdXRvIGtleVN0
cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIHJldHVybiBsb2Nh
bGl6ZWROU1N0cmluZyhicmlkZ2VfY2FzdChrZXlTdHJpbmcuZ2V0KCkpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443486</attachid>
            <date>2021-11-06 09:13:30 -0700</date>
            <delta_ts>2021-11-06 17:08:58 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-232686-20211106091329.patch</filename>
            <type>text/plain</type>
            <size>44566</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uYmNlYTMyZThiYTg0MjZjYTY5MmJhZWJhYzQzMzQ0
M2VjMzlkMzdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NyBAQAorMjAyMS0xMS0wNiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIHRvCisgICAgICAgIGFjY29tcGxpc2ggdGhpcywgd2hpY2ggaW5jbHVkZXMgdXNlIG9m
IENGU1RSKCkgaW4gbWFjcm9zIHRvCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjb252
ZXJ0IGNvbnN0IGNoYXIqIHN0cmluZ3MgdG8gQ0ZTdHJpbmdSZWYKKyAgICAgICAgYXQgcnVudGlt
ZS4gIE5vbi1BcHBsZSBwbGF0Zm9ybXMgY29udGludWUgdG8gdXNlIGNvbnN0IGNoYXIqIGZvcgor
ICAgICAgICBmb3JtYXQgc3RyaW5ncyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gY2hlY2sgZm9y
bWF0IHN0cmluZ3MuCisKKyAgICAgICAgVG8gdGhpcyBlbmQgbG9jYWxpemVkIHN0cmluZ3MgcGFz
c2VkIHRvIGZvcm1hdExvY2FsaXplZFN0cmluZygpCisgICAgICAgIG11c3QgdXNlIGEgV0VCX1VJ
XyooKSBtYWNybyB3aXRoICJGT1JNQVQiIGluIHRoZSBuYW1lIG9uIGFsbAorICAgICAgICBwbGF0
Zm9ybXMuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZXIgZXJyb3Is
CisgICAgICAgIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVCBtYWNyb3MgcmV0dXJuIGEgV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgYXV0b3JlbGVhc2Vk
IE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNpbmcgbG9jYWxpemVkTlNT
dHJpbmcoKSBkaXJlY3RseSAodGhlIHJldHVybiB2YWx1ZSBpcworICAgICAgICBhbHdheXMgYXV0
b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIENGL05TU3RyaW5nIC0+IFdURjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvciBsb2NhbGl6
ZWQgZm9ybWF0CisgICAgICAgIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncy5wbDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2lu
ZyB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NU
UklORyAgW2Nyb3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RworICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9j
YWxpemVkU3RyaW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZv
cm1hdGAgZm9yIEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZv
cm1hdGAgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMg
YWxsb3dzIGZvcm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBk
ZWNsYXJhdGlvbnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAtIE5vdGUgdGhhdCBg
Zm9ybWF0YCBpcyBtYXJrZWQgYXMgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgb24gQXBwbGUKKyAgICAg
ICAgICBwbGF0Zm9ybXMgYmVjYXVzZSBsb2NhbGl6ZWRDRlN0cmluZygpIGNhbid0IHVzZSBhIHJl
dHVybiB0eXBlCisgICAgICAgICAgb2YgUmV0YWluUHRyPD4gYW5kIGFsc28gdXNlIENGX0ZPUk1B
VF9BUkdVTUVOVCgpLCBhbmQgd2Ugd2FudAorICAgICAgICAgIHRvIGF2b2lkIGF1dG9yZWxlYXNp
bmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZUJ1
bmRsZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdldHRpbmcgYSBDRkJ1bmRs
ZVJlZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRvIGEgZnVuY3Rpb24gdGhh
dCdzIHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4KKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIFRoaXMgbWV0aG9kIHdhcyBj
b252ZXJ0ZWQgZnJvbSBsb2NhbGl6ZWROU1N0cmluZygpIGluCisgICAgICAgICAgTG9jYWxpemVk
U3RyaW5nc0NvY29hLm1tIGFuZCBmcm9tIGxvY2FsaXplZFN0cmluZygpIGluCisgICAgICAgICAg
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAuCisgICAgICAgIC0gVGhpcyBtZXRob2QgbXVzdCByZXR1
cm4gYSArMSByZXRhaW5lZCBDRlN0cmluZ1JlZiAodG8gYXZvaWQKKyAgICAgICAgICBhdXRvcmVs
ZWFzaW5nIGl0KSBzaW5jZSBDRl9GT1JNQVRfQVJHVU1FTlQoKSB3b24ndCBhbGxvdyBhCisgICAg
ICAgICAgcmV0dXJuIHR5cGUgb2YgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4KKyAgICAgICAgKFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IEFkZCBmb3IgVVNFKENGKS4KKyAgICAgICAgLSBNb3Zl
ZCBmcm9tIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSwgYW5kIGNoYW5nZWQgdG8gdGFrZSBhCisg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgYXJndW1lbnQgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNy
ZWF0ZSBhIG5ldworICAgICAgICAgIENGU3RyaW5nUmVmIGF0IHJ1bnRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9y
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjphZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRl
eHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJh
Y2tLaW5kU0RIU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5
UmVhZGVyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3Vm
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAg
ICAgLSBVc2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9y
bWF0CisgICAgICAgICAgc3RyaW5ncywgYW5kIHVzZSBXRUJfVUlfRk9SQU1UX0NGU1RSSU5HW19L
RVldKCkgZm9yIEFwcGxlCisgICAgICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlf
U1RSSU5HKTogQWRkLgorICAgICAgICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAg
IChXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMpOiBBZGQuCisgICAgICAgIC0gQWRkIHNlcGFy
YXRlIG1hY3JvcyBmb3IgVVNFKENGKSBzbyB0aGF0IGFyZ3VtZW50cyBjb3VsZCBiZQorICAgICAg
ICAgIHRyYW5zZm9ybWVkIGF0IGNvbXBpbGUtdGltZSB0byBDRlN0cmluZ1JlZiB1c2luZyBDRlNU
UigpLgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9TVFJJTkcpOiBBZGQuCisgICAgICAgIC0gQ3Jv
c3MtcGxhdGZvcm0gbWFjcm8gZm9yIFVJIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAtIE5vdGUg
dGhhdCBub24tVVNFKENGKSBtYWNyb3MgZXNzZW50aWFsbHkgZG8gbm90aGluZyBzaW5jZQorICAg
ICAgICAgIGxvY2FsaXplZFN0cmluZygpIGp1c3QgY29udmVydHMgY29uc3QgY2hhciogdG8gV1RG
OjpTdHJpbmcsCisgICAgICAgICAgYW5kIGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtl
cyBhIGNvbnN0IGNoYXIqLgorICAgICAgICAoV0VCX1VJX0NGU1RSSU5HKToKKyAgICAgICAgKFdF
Ql9VSV9DRlNUUklOR19LRVkpOgorICAgICAgICAtIENoYW5nZSBtYWNyb3Mgc28gdGhhdCBhcmd1
bWVudHMgY291bGQgYmUgdHJhbnNmb3JtZWQgYXQKKyAgICAgICAgICBjb21waWxlLXRpbWUgdG8g
Q0ZTdHJpbmdSZWYgdXNpbmcgQ0ZTVFIoKS4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSk6IEFkZC4KKyAg
ICAgICAgLSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZyBhcmd1bWVudHMg
dG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvY2FsaXplZENGU3RyaW5nV2luKTogQWRkLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVk
U3RyaW5nV2luKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgbmV3IGZ1bmN0aW9ucyB0aGF0IHRh
a2UgYSBjb25zdCBjaGFyKiBhcmd1bWVudCBpbnN0ZWFkCisgICAgICAgICAgb2YgQ0ZTdHJpbmdS
ZWYgc2luY2UgdGhlcmUgYXJlIGVuY29kaW5nIGlzc3VlcyB1c2luZyBDRlNUUigpCisgICAgICAg
ICAgd2l0aCBjaGFyYWN0ZXJzIGFib3ZlIEFTQ0lJIDEyNy4KKyAgICAgICAgKFdlYkNvcmU6Omxv
Y2FsaXplZENGU3RyaW5nKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgbmV3IGZ1bmN0aW9uIGNv
bnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW0uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBBZGQu
CisgICAgICAgIC0gQWRkIG5ldyBkZWNsYXJhdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2VzIGEg
Q0ZTdHJpbmdSZWYKKyAgICAgICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZvcm1h
dExvY2FsaXplZFN0cmluZyk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdSZWYg
Zm9ybWF0YCBmb3IgQXBwbGUgcGxhdGZvcm1zLCBhbmQKKyAgICAgICAgICBgY29uc3QgY2hhciog
Zm9ybWF0YCBmb3Igb3RoZXIgcGxhdGZvcm1zIHNvIGZvcm1hdCBtYWNyb3MgbWF5CisgICAgICAg
ICAgYmUgYWRkZWQgdG8gdGhlIGRlbGFyYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6
ZWROU1N0cmluZyk6CisgICAgICAgIC0gUmUtaW1wbGVtZW50IGFzIGFuIGlubGluZSBmdW5jdGlv
biB1c2luZyBsb2NhbGl6ZWRDRlN0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTlNT
dHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92ZWQgdG8gbG9jYWxpemVkQ0ZTdHJpbmcoKSBp
biBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
Zyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAgIChX
ZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxT
ZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSBXRUJfVUlfU1RSSU5H
KCkgdG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygpIGR1ZSB0bworICAgICAgICAgIHRoZSBuZXcg
cnVsZSBmb3IgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6dmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6CisgICAgICAgIC0gU3dpdGNoIGZyb20gK1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0Ol0gYW5kCisgICAgICAgICAgV0VCX1VJX05TU1RSSU5HKCkg
dG8gV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKCkgYW5kCisgICAgICAgICAgV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygpIGZvciBjb25zaXN0ZW5jeS4KKworICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBsb2NhbGl6ZWRDRlN0cmluZygp
IGluIExvY2FsaXplZFN0cmluZ3MuY3BwLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkQ0ZT
dHJpbmdXaW4pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmdXaW4pOiBB
ZGQuCisgICAgICAgIC0gQWRkIHZhcmlhbnQgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGNvbnN0IGNo
YXIqIGFyZ3VtZW50IGluc3RlYWQKKyAgICAgICAgICBvZiBDRlN0cmluZ1JlZiBzaW5jZSB0aGVy
ZSBhcmUgZW5jb2RpbmcgaXNzdWVzIHVzaW5nIENGU1RSKCkKKyAgICAgICAgICB3aXRoIGNoYXJh
Y3RlcnMgYWJvdmUgQVNDSUkgMTI3LgorCiAyMDIxLTExLTAzICBKb29uZ2h1biBQYXJrICA8amg3
MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBib3JkZXItcmFkaXVzIGlubGluZSBzdHls
ZSBzaG91bGQgc2VyaWFsaXplIHdpdGggdmFsaWQgc3ludGF4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2NjM2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMxOS4uMDcz
MGE1YzRmOTFkNDM2ZjAxOTM0NjY2ZWIxZjI2MjQ5YjQ2MGIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTA2ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8g
Y2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMyNjg2PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ5
OTQzNDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tOgorICAgICAgICAoV2ViTG9j
YWxpemVkU3RyaW5nSW50ZXJuYWwpOgorICAgICAgICAtIFVzZSBsb2NhbGl6ZWROU1N0cmluZygp
IGluc3RlYWQgb2YgbG9jYWxpemVkU3RyaW5nKCkgdG8KKyAgICAgICAgICBlbGltaW5hdGUgdGhl
IG5lZWQgdG8gY29udmVydCBmcm9tCisgICAgICAgICAgQ0ZTdHJpbmcgLT4gU3RyaW5nIC0+IE5T
U3RyaW5nLgorCiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAppbmRleCBkOTMzOTAx
YzVmYTBjZmM0YTFjOGNjZWUyYzVhMDkwNWZjODFkOWE5Li44ZjY0NmU3ZGM0ZTI3ODdmZmYyNWMy
NzYzOWY5NzhkZDVhY2EwNmEwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4
dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbApAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vZW52IHBlcmwKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE4Niw3ICsxODYsNyBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAgICAgICAg
ICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICRl
eHBlY3RlZCA9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNybyA9fiAv
KFdFQl8pP1VJXyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmluZWQgJGtl
eSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VCXyk/VUko
X0ZPUk1BVCk/XyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmluZWQgJGtl
eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRGLTggaGVy
ZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOwogICAgICAgICAgICAg
ICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIGhhbmRsZVN0
cmluZzoKICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZvdW5kICR0
b2tlbiBidXQgZXhwZWN0ZWQgJGV4cGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICRleHBl
Y3RlZCA9ICIiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKCR0b2tl
biA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HKF9LRVkpPyhfSU5URVJOQUwpPyQvKSB8fCAoJHRv
a2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX1NUUklOR19X
SVRIX01ORU1PTklDJC8pKSB7CisgICAgICAgICAgICAgICAgaWYgKCgkdG9rZW4gPX4gLyhXRUJf
KT9VSV8oQ0YpP1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VC
X1VJX0ZPUk1BVF8oQ0YpP1NUUklORyhfS0VZKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05T
U1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSkg
ewogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAgICAgICAg
ICAgICRtYWNybyA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gdW5k
ZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4
IDExNzNlZjZhMWIyODczOGYxMDExMGFiMGM3Mzg5YWVhZjU4NDFjNjQuLjFhYTVjNmQzM2NjMTYx
NmEzYTcxN2MxYTZjZjNkMDRjODgyNGY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw2ICszNCw5
IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShD
RikKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgorI2Vu
ZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTQzLDI0ICs0Niwy
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNl
ZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVm
ZXJlbmNlCi0vLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4x
OTA1IHN0YW5kYXJkLgotU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0
LCAuLi4pCi17CiAjaWYgVVNFKENGKQorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhDRlN0
cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikKK3sKICAgICB2YV9saXN0
IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAgICBBTExP
V19OT05MSVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0VO
RAorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRB
cmd1bWVudHMoMCwgMCwgZm9ybWF0LCBhcmd1bWVudHMpKTsKIAogICAgIHZhX2VuZChhcmd1bWVu
dHMpOworICAgIENGUmVsZWFzZShmb3JtYXQpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Ci0j
ZWxpZiBVU0UoR0xJQikKK30KKyNlbHNlCisvLyBCZWNhdXNlIHxmb3JtYXR8IGlzIHVzZWQgYXMg
dGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQsIGl0IGNhbm5vdCBiZSBhIHJlZmVyZW5j
ZQorLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAxOC43LzMgb2YgdGhlIEMrKyBOMTkwNSBz
dGFuZGFyZC4KK1N0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pCit7CisjaWYgVVNFKEdMSUIpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAgdmFf
c3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJlc3VsdChn
X3N0cmR1cF92cHJpbnRmKGZvcm1hdC51dGY4KCkuZGF0YSgpLCBhcmd1bWVudHMpKTsKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQsIGFyZ3VtZW50
cykpOwogICAgIHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHJlc3VsdC5nZXQoKSk7CiAjZWxzZQpAQCAtNjgsMTQgKzc0LDU1IEBAIFN0cmluZyBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogICAgIHJldHVybiBmb3JtYXQ7CiAj
ZW5kaWYKIH0KKyNlbmRpZgorCisjaWYgVVNFKENGKQorI2lmICFQTEFURk9STShXSU4pCitzdGF0
aWMgQ0ZCdW5kbGVSZWYgd2ViQ29yZUJ1bmRsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0
aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJDb3JlIikpOworICAgIEFTU0VSVChidW5k
bGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0KCk7Cit9CisjZW5kaWYKKwor
Q0ZTdHJpbmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQoreworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNwYXRjaCBx
dWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KKyAgICAvLyBTZWUgTG9hZFdl
YkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90
Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJLaXRCdW5kbGUoKTsKKyNlbHNl
CisgICAgQ0ZCdW5kbGVSZWYgYnVuZGxlID0gd2ViQ29yZUJ1bmRsZSgpOworI2VuZGlmCisgICAg
YXV0byByZXN1bHQgPSBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoYnVuZGxlLCBrZXksIG5v
dEZvdW5kLCBudWxscHRyKTsKKworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaWYgKHJlc3VsdCA9
PSBub3RGb3VuZCkgeworICAgICAgICBjaGFyIGtleUNTdHJpbmdbMjU2XTsKKyAgICAgICAgQ0ZT
dHJpbmdHZXRDU3RyaW5nKGtleSwga2V5Q1N0cmluZywgc2l6ZW9mKGtleUNTdHJpbmcpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAh
PSBub3RGb3VuZCwgIkNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAnJXMnIGluIGJ1
bmRsZSIsIGtleUNTdHJpbmcpOworICAgIH0KKyNlbmRpZgogCi0jaWYgIVVTRShDRikKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQogCitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtl
eSkKK3sKKyAgICByZXR1cm4gYWRvcHRDRihsb2NhbGl6ZWRDRlN0cmluZyhrZXkpKS5nZXQoKTsK
K30KKyNlbHNlCiBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKIHsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChrZXksIHN0cmxlbihrZXkpKTsKIH0KLQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIzMyw5ICsyODAsOSBAQCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0
ZWRTdHJpbmcpCiB7CiAjaWYgVVNFKENGKQogICAgIGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9IHRy
dW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygp
OwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJMb29r
IFVwIOKAnCVA4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3
b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29r
IFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3Ry
aW5nLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlc+KAnSIsICJMb29rIFVwIGNvbnRleHQg
bWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRl
bShzZWxlY3RlZFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiTG9vayBVcCDigJwlc+KAnSIsICJMb29r
IFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCB0cnVuY2F0ZWRTdHJp
bmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sg
VXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVj
dGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwogI2Vu
ZGlmCkBAIC0yNDYsNyArMjkzLDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcElu
RGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1RyYW5zbGF0ZShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogICAg
IGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVj
dGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNv
bnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkcoIlRyYW5zbGF0ZSDigJwlQOKAnSIsICJUcmFuc2xhdGUgY29udGV4dCBtZW51IGl0ZW0g
d2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwogfQogCiAjZW5k
aWYKQEAgLTgyNCw3ICs4NzEsNyBAQCBTdHJpbmcgcGx1Z2luVG9vU21hbGxUZXh0KCkKIAogU3Ry
aW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcykKIHsKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVkIGZpbGVzIiwg
IkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxl
IHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51bWJlck9mRmls
ZXMpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJ
TkcoIiVkIGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2Vs
ZWN0ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVz
IiksIG51bWJlck9mRmlsZXMpOwogfQogCiBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpCkBA
IC04NDYsMTEgKzg5MywxMSBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGF1dG8gaGVpZ2h0ID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgYXV0byBo
ZWlnaHRTdHJpbmcgPSBhZG9wdENGKENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51
bWJlcigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAICVAw5clQCBwaXhlbHMiLCAi
d2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24g
c3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lkdGhT
dHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndp
bmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5
bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3Ry
aW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxz
IiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0
aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiJXMgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEg
c3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBm
aWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogI2Vs
c2UKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIjxmaWxl
bmFtZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CisgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiPGZpbGVuYW1lPiAl
ZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2Vz
IG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKICNlbmRpZgogfQogCkBAIC05
NzIsMTIgKzEwMTksMTIgQEAgU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZs
b2F0IHRpbWUpCiAgICAgc2Vjb25kcyAlPSA2MDsKIAogICAgIGlmIChkYXlzKQotICAgICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgZGF5cyAlMiRk
IGhvdXJzICUzJGQgbWludXRlcyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRl
eHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRl
cyAlNCRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRy
b2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRheSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7CiAgICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJh
Y2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49
IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGhvdXJzICUy
JGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVz
LCBzZWNvbmRzKTsKICAgICBpZiAobWludXRlcykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFj
Y2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0g
NjAgc2Vjb25kcyIpLCBtaW51dGVzLCBzZWNvbmRzKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBz
ZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwg
bWludXRlcywgc2Vjb25kcyk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiJTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMp
OwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKQEAgLTEw
MzgsMTMgKzEwODUsMTMgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNo
VGV4dCgpCiAjaWYgIVBMQVRGT1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb1No
b3J0VGV4dChpbnQsIGludCBtaW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hv
cnRlciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJVc2UgYXQgbGVh
c3QgJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBl
bGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgi
KSwgbWluTGVuZ3RoKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKIFN0cmluZyB2YWxpZGF0
aW9uTWVzc2FnZVRvb0xvbmdUZXh0KGludCwgaW50IG1heExlbmd0aCkKIHsKLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQg
Y2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50
cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4
TGVuZ3RoKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
U1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBt
YXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CiB9CiAjZW5kaWYKICNlbmRpZgpA
QCAtMTA1Miw5ICsxMDk5LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQo
aW50LCBpbnQgbWF4TGVuZ3RoKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZs
b3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQg
Zm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1p
bmltdW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29u
dHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29u
dHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0
ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZP
Uk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxv
d2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRhdGEoKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShtaW5pbXVtKTsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
cmFuZ2UgdW5kZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250
cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7CkBAIC0xMDY0LDkg
KzExMTEsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29u
c3QgU3RyaW5nJiBtaW5pbXVtKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxv
d1RleHQoY29uc3QgU3RyaW5nJiBtYXhpbXVtKQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBsZXNz
IHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGlt
dW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBl
cXVhbCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
d2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1
YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdp
dGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0udXRmOCgpLmRh
dGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NU
UklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4g
YWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0udXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShtYXhpbXVtKTsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygicmFuZ2Ugb3Zl
cmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGgg
dmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIik7CkBAIC0xMTA5LDcgKzExNTYsNyBA
QCBTdHJpbmcgdGV4dFRyYWNrQXV0b21hdGljTWVudUl0ZW1UZXh0KCkKIAogU3RyaW5nIGFkZFRy
YWNrTGFiZWxBc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJh
Y2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3Vh
Z2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5H
X0tFWSgiJUAgKCVAKSIsICIlQCAoJUApIChhdWRpby90ZXh0IHRyYWNrKSIsICJBdWRpby9UZXh0
IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFiZWwgYW5kIGxh
bmd1YWdlIG9mIHRoZSB0cmFjaywgaW4gdGhlIGZvcm0gb2YgJ0xhbmd1YWdlIChMYWJlbCknLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhYmVsLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxheU5hbWUo
KQpAQCAtMTEyMSw3ICsxMTY4LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDbG9zZWRDYXB0
aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zRGlzcGxheU5hbWUo
KTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVko
IiVAIENDIiwgIiVAIENDICh0ZXh0IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4dCB0cmFj
ayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBs
b2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2FwdGlvbnNEaXNwbGF5TmFtZSgp
CkBAIC0xMTMzLDcgKzExODAsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2FwdGlvbnMi
LCAiJUAgQ2FwdGlvbnMgKHRleHQgdHJhY2spIiwgIkNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENhcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5H
X0tFWSgiJUAgQ2FwdGlvbnMiLCAiJUAgQ2FwdGlvbnMgKHRleHQgdHJhY2spIiwgIkNhcHRpb25z
IHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFn
ZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENhcHRpb25zJykuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25z
RGlzcGxheU5hbWUoKQpAQCAtMTE0NSw3ICsxMTkyLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tp
bmREZXNjcmlwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNEaXNw
bGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RS
SU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAodGV4dCB0cmFjayki
LCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1
ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9u
cycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9u
cyIsICIlQCBEZXNjcmlwdGlvbnMgKHRleHQgdHJhY2spIiwgIkRlc2NyaXB0aW9ucyB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDaGFwdGVyc0Rpc3BsYXlO
YW1lKCkKQEAgLTExNTcsNyArMTIwNCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2hhcHRl
cnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDaGFwdGVyc0Rpc3BsYXlOYW1lKCk7Ci0gICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFw
dGVycyIsICIlQCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBk
aXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2Nh
bGUgKGUuZy4gJ0VuZ2xpc2ggQ2hhcHRlcnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkdfS0VZKCIlQCBDaGFwdGVycyIsICIlQCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hh
cHRlcnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxh
bmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2hhcHRlcnMnKS4iKSwgdGV4dC5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRNZXRhZGF0
YURpc3BsYXlOYW1lKCkKQEAgLTExNjksNyArMTIxNiw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tL
aW5kTWV0YWRhdGFTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRNZXRhZGF0YURpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBNZXRhZGF0YSIsICIlQCBNZXRhZGF0YSAodGV4dCB0cmFjaykiLCAiTWV0YWRhdGEgdGV4
dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFu
ZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggTWV0YWRhdGEnKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBNZXRhZGF0YSIsICIlQCBNZXRhZGF0YSAodGV4dCB0cmFj
aykiLCAiTWV0YWRhdGEgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVk
ZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggTWV0YWRhdGEnKS4i
KSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tp
bmRTREhEaXNwbGF5TmFtZSgpCkBAIC0xMTgxLDcgKzEyMjgsNyBAQCBTdHJpbmcgYWRkVGV4dFRy
YWNrS2luZFNESFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1lKCk7Ci0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBT
REgiLCAiJUAgU0RIICh0ZXh0IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3IgaGFyZCBv
ZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwgdGV4dC5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0IHRyYWNr
KSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3IgaGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRp
c3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2Fs
ZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRFYXN5UmVhZGVyRGlzcGxheU5hbWUoKQpAQCAtMTE5
Myw3ICsxMjQwLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRFYXN5UmVhZGVyU3VmZml4KGNv
bnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0ZXh0VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBFYXN5IFJlYWRlciIs
ICIlQCBFYXN5IFJlYWRlciAodGV4dCB0cmFjaykiLCAiRWFzeSBSZWFkZXIgKGkuZS4gM3JkLWdy
YWRlIGxldmVsKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBFYXN5IFJlYWRlcicpLiIp
LCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVyIiwgIiVA
IEVhc3kgUmVhZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQtZ3JhZGUg
bGV2ZWwpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBs
YW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRm9y
Y2VkRGlzcGxheU5hbWUoKQpAQCAtMTIwNSw3ICsxMjUyLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFj
a0tpbmRGb3JjZWRTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFtZSgp
OwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgi
JUAgRm9yY2VkIiwgIiVAIEZvcmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNU
UklOR19LRVkoIiVAIEZvcmNlZCIsICIlQCBGb3JjZWQgKHRleHQgdHJhY2spIiwgIkZvcmNlZCB0
ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2Ug
YW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBGb3JjZWQnKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlz
cGxheU5hbWUoKQpAQCAtMTIxNyw3ICsxMjY0LDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5k
RGVzY3JpcHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3Bs
YXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJ
TkdfS0VZKCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjayki
LCAiRGVzY3JpcHRpb25zIGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlv
bnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlwdGlv
bnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjaykiLCAiRGVzY3JpcHRpb25zIGF1ZGlv
IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5k
L29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURp
c3BsYXlOYW1lKCkKQEAgLTEyMjksNyArMTI3Niw3IEBAIFN0cmluZyBhZGRBdWRpb1RyYWNrS2lu
ZENvbW1lbnRhcnlTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeURpc3BsYXlO
YW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdf
S0VZKCIlQCBDb21tZW50YXJ5IiwgIiVAIENvbW1lbnRhcnkgKGF1ZGlvIHRyYWNrKSIsICJDb21t
ZW50YXJ5IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUg
bGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDb21tZW50YXJ5JykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21t
ZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ29tbWVudGFyeScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
fQogCiAjZW5kaWYgLy8gVVNFKENGKQpAQCAtMTI1Niw5ICsxMzAzLDkgQEAgU3RyaW5nIHVzZUJs
b2NrZWRQbHVnSW5Db250ZXh0TWVudVRpdGxlKCkKIFN0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlL
ZXljaGFpbkxhYmVsKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lKQogewog
I2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNU
UklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNp
bmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNh
dGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFzdGVyIEtl
eSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGlu
IEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiJXMgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNh
dGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6
ZWRBcHBsaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJXMgV2ViQ3J5cHRvIE1hc3RlciBLZXki
LCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBL
ZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7CiAjZWxz
ZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCI8YXBwbGljYXRpb24+IFdlYkNyeXB0byBNYXN0
ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBr
ZXkgaW4gS2V5Y2hhaW4iKS5yZXBsYWNlKCI8YXBwbGljYXRpb24+IiwgbG9jYWxpemVkQXBwbGlj
YXRpb25OYW1lKTsKICNlbmRpZgpAQCAtMTMzMiwxMiArMTM3OSwxMiBAQCBTdHJpbmcgdW5hY2Nl
cHRhYmxlVExTQ2VydGlmaWNhdGUoKQogLy8gaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgdG8gaGVs
cCB1c2VycyB0byBtYWtlIGRlY2lzaW9ucy4KIFN0cmluZyBtYWtlQ3JlZGVudGlhbFRvdWNoSURQ
cm9tcHRUaXRsZShjb25zdCBTdHJpbmcmIGJ1bmRsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWlu
KQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCLi
gJwlQOKAnSB3b3VsZCBsaWtlIHRvIHVzZSBUb3VjaCBJRCBmb3Ig4oCcJUDigJ0uIiwgIkFsbG93
IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHVzZSBUb3VjaCBJRCB0byBzaWduIGluIHRvIHRoZSBz
cGVjaWZpZWQgd2Vic2l0ZSBvbiB0aGlzIGRldmljZSIpLCBidW5kbGVOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdv
dWxkIGxpa2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNp
ZmllZCBidW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3
ZWJzaXRlIG9uIHRoaXMgZGV2aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2V0QXNzZXJ0
aW9uVG91Y2hJRFByb21wdFRpdGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Q0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKAnS4iLCAi
QWxsb3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdl
YnNpdGUiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHNpZ24gaW4gdG8g4oCc
JUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHNpZ24gaW4gdG8gdGhlIHNw
ZWNpZmllZCB3ZWJzaXRlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9t
YWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZ2VuZXJpY1RvdWNoSURQ
cm9tcHRUaXRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgK
aW5kZXggZDg1NmEwZDcwYmM5MGVkNGYwYTY0MTAzZDI3ODE2MmI0ZDIyMmIxOC4uMTA4Yjg2M2I2
ZWRiOGQwNGQ0ZjhmM2FmNDNhNjQwNzgwNjRmZTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjksNiArMjks
MTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2lu
Y2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5oPgorI2VuZGlmCisKICNpZiBVU0UoR0xJ
QikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KICNlbmRpZgpAQCAtMzc3LDcgKzM4MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZShjb25zdCBTdHJpbmcmIHNlbGVjdGVk
U3RyaW5nKTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNL
QUdFKQorI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQorI2RlZmluZSBXRUJfVUlfU1RSSU5H
KHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZ1dpbihzdHJpbmcp
CisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2Vi
Q29yZTo6bG9jYWxpemVkU3RyaW5nV2luKGtleSkKKyNkZWZpbmUgV0VCX1VJX1NUUklOR19XSVRI
X01ORU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmdXaW4oc3RyaW5nKQorI2VsaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oV0lOKQorI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJpbmcs
IGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihrZXkpKQor
I2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25pYywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2VsaWYg
VVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQogI2RlZmluZSBXRUJfVUlfU1RS
SU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKHN0cmlu
ZykpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikg
V2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJ
X1NUUklOR19XSVRIX01ORU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0aW9uKSBXZWJD
b3JlOjpsb2NhbGl6ZWRTdHJpbmcoXyhtbmVtb25pYykpCkBAIC0zODcsMTggKzM5OSw0OSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyhz
dHJpbmcsIG1uZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKHN0
cmluZykKICNlbmRpZgogCi0jaWYgVVNFKENGKQotLy8gVGhpcyBpcyBleGFjdGx5IGFzIFdFQl9V
SV9TVFJJTkcsIGJ1dCByZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3RyaW5nIGlzIG5vdCBzY2FubmVk
IGJ5IG5vbi1DRiBwb3J0cy4KLSNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3Jp
cHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCi0jZGVmaW5lIFdFQl9VSV9D
RlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmcoa2V5KQorI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQorI2RlZmluZSBXRUJfVUlf
Rk9STUFUX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRDRlN0
cmluZ1dpbihzdHJpbmcpCisjZWxpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU4pCisjZGVmaW5l
IFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2Fs
aXplZENGU3RyaW5nKENGU1RSKHN0cmluZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChH
RVRURVhUX1BBQ0tBR0UpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIChfKHN0cmluZykpCisjZWxzZQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklO
RyhzdHJpbmcsIGRlc2NyaXB0aW9uKSAoc3RyaW5nKQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpICYm
IFBMQVRGT1JNKFdJTikKKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRp
b24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZ1dpbihzdHJpbmcpCisjZGVmaW5lIFdFQl9VSV9D
RlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmdXaW4oa2V5KQorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nV2luKHN0cmluZykKKyNkZWZpbmUg
V0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJD
b3JlOjpsb2NhbGl6ZWRDRlN0cmluZ1dpbihrZXkpCisgICAgV0VCQ09SRV9FWFBPUlQgQ0ZTdHJp
bmdSZWYgbG9jYWxpemVkQ0ZTdHJpbmdXaW4oY29uc3QgY2hhcioga2V5KSBDRl9GT1JNQVRfQVJH
VU1FTlQoMSkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
bG9jYWxpemVkU3RyaW5nV2luKGNvbnN0IGNoYXIqIGtleSk7CisjZWxpZiBVU0UoQ0YpICYmICFQ
TEFURk9STShXSU4pCisjZGVmaW5lIFdFQl9VSV9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9u
KSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJ
X0NGU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhDRlNUUihrZXkpKQorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKHN0cmlu
ZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZENGU3RyaW5nKENGU1RSKHN0cmluZykp
CisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlw
dGlvbikgV2ViQ29yZTo6bG9jYWxpemVkQ0ZTdHJpbmcoQ0ZTVFIoa2V5KSkKICNlbmRpZgogCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmIGxvY2FsaXplZENGU3Ry
aW5nKENGU3RyaW5nUmVmIGtleSkgQ0ZfRk9STUFUX0FSR1VNRU5UKDEpIENGX1JFVFVSTlNfUkVU
QUlORUQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmlu
Z1JlZiBrZXkpOworI2Vsc2UKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3Ry
aW5nKGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhT
dHJpbmcgZm9ybWF0LCAuLi4pOworI2VuZGlmCisKKyNpZiBVU0UoQ0YpCisgICAgU3RyaW5nIGZv
cm1hdExvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3Jt
YXQsIC4uLikgQ0ZfRk9STUFUX0ZVTkNUSU9OKDEsIDIpOworI2Vsc2UKKyAgICBTdHJpbmcgZm9y
bWF0TG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigxLCAyKTsKKyNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KICNkZWZpbmUgV0VCX1VJ
X05TU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5n
KHN0cmluZykKLSAgICBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmco
TlNTdHJpbmcgKmtleSkgTlNfRk9STUFUX0FSR1VNRU5UKDEpOworICAgIGlubGluZSBOU19GT1JN
QVRfQVJHVU1FTlQoMSkgTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5nICprZXkp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHROUyhicmlkZ2VfY2FzdChsb2NhbGl6ZWRDRlN0
cmluZyhicmlkZ2VfY2FzdChrZXkpKSkpLmF1dG9yZWxlYXNlKCk7CisgICAgfQogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQppbmRleCBmYzM2YmZjYTI1ZjAzMGI5
ZjgyOWMyNGI1Yjk1ZWYyNmQyYTRhMGYzLi40MjE2ZDQ5YTA1NjFlMDk2YjA0OTJmNDc3MTM3NmY3
NWJjNWE0NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2Nh
bGl6ZWRTdHJpbmdzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjQgKzM1LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1OU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkK
LXsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGEg
ZGlzcGF0Y2ggcXVldWUgd2hlbiBpbml0aWFsaXppbmcgc3RyaW5ncyBvbiBpT1MuCi0gICAgLy8g
U2VlIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzIGFuZCA8cmRhcjovL3Byb2JsZW0vNzkwMjQ3Mz4u
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNlbmRpZgotCi0gICAgc3RhdGljIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUu
V2ViQ29yZSJdOwotICAgIHJldHVybiBbYnVuZGxlIGxvY2FsaXplZFN0cmluZ0ZvcktleTprZXkg
dmFsdWU6QCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIgdGFibGU6bnVsbHB0cl07Ci19Ci0K
LVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxs
KSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplZE5TU3RyaW5nKChfX2JyaWRnZSBOU1N0cmluZyAqKWtl
eVN0cmluZy5nZXQoKSk7Ci19Ci0KIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkK
IHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1l
Iik7CkBAIC03OSw3ICs2MSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNw
b3RsaWdodCgpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsKICAgICBh
dXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IFBBTDo6ZGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxh
eU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkco
IlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1l
bnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1l
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBj
b250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJv
dmlkZXJOYW1lLmdldCgpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250
cygpCkBAIC0yMzMsNyArMjE1LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0
cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwg
Ik5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFp
biBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjQ1LDcgKzIyNyw3
IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyhzaXplX3QgY291bnQpCiAgICAgY2Fz
ZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiMSBJdGVtIiwgIlByZXNlbnQgdGhl
IGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4gd2hlbiBhIHNpbmdsZSA8b3B0aW9uPiBpcyBzZWxl
Y3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2VudCB0aGUgbnVt
YmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxl
bWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2VudCB0aGUg
bnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBsZT4g
ZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKICAgICB9CiB9CiAKQEAgLTI3OCw3ICsyNjAs
NyBAQCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKQogCiBTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJu
IFtOU1N0cmluZyBsb2NhbGl6ZWRTdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIlVz
ZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgQCJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9y
IGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0g
YWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoXTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFj
dGVyKHMpIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdp
dGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5n
dGgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCmluZGV4IDFlNzllMTA4NDdkNzBkY2E1
NGYxOTIzOTFjODE0NTljMjNlNmM2ODIuLjM0YzI5YzE3MGFkYWE4MGQ2MGM1NDgzYjI3ODBlNjE4
ZGU1MDMwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxp
emVkU3RyaW5nc1dpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI3LDIxIEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJXZWJDb3Jl
SW5zdGFuY2VIYW5kbGUuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVT
RShDRikKLSNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZCdW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKENGKQotU3RyaW5nIGxvY2FsaXplZFN0cmlu
Zyhjb25zdCBjaGFyKiBrZXkpCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRDRlN0cmluZ1dpbihjb25z
dCBjaGFyKiBrZXkpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN0YXRp
YyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3Vu
ZCIpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJl
c3VsdCA9IGFkb3B0Q0YoQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXlT
dHJpbmcuZ2V0KCksIDAsIHdlYktpdEJ1bmRsZSgpLCBub3RGb3VuZCwgMCkpOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQg
bG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CisgICAgYXV0byBrZXlTdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkobnVsbHB0ciwga2V5
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICByZXR1cm4g
bG9jYWxpemVkQ0ZTdHJpbmcoa2V5U3RyaW5nLmdldCgpKTsKK30KIAotICAgIHJldHVybiByZXN1
bHQuZ2V0KCk7CitTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2luKGNvbnN0IGNoYXIqIGtleSkKK3sK
KyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05v
Q29weShudWxscHRyLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgIHJldHVybiBhZG9wdENGKGxvY2FsaXplZENGU3RyaW5nKGtleVN0cmluZy5nZXQo
KSkpLmdldCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCmluZGV4IDll
NjU2OWY3YWM3MTQxMThkZDBiZjM2YzFjOTlmMmYzNzZiZTUxMjYuLmE3NzVlZWM2NmYwNGU0NjJh
ZWI3MGFjZmEwMWFkNjJhYzZhY2Y1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
MSArMjYsMTIgQEAKICNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLmgiCiAK
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU1N0cmluZyAqV2Vi
TG9jYWxpemVkU3RyaW5nSW50ZXJuYWwoY29uc3QgY2hhcioga2V5KQogewotICAgIHJldHVybiBs
b2NhbGl6ZWRTdHJpbmcoa2V5KTsKKyAgICAvLyBGSVhNRTogQ2hhbmdlIGNhbGxlcnMgdG8gdXNl
IE5TU3RyaW5nIGxpdGVyYWxzIHRvIGVsaW1pbmF0ZSB0aGlzIHN0ZXAuCisgICAgYXV0byBrZXlT
dHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoMCwga2V5LCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICByZXR1cm4gbG9j
YWxpemVkTlNTdHJpbmcoYnJpZGdlX2Nhc3Qoa2V5U3RyaW5nLmdldCgpKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443494</attachid>
            <date>2021-11-06 17:09:00 -0700</date>
            <delta_ts>2021-11-07 08:12:46 -0800</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-232686-20211106170859.patch</filename>
            <type>text/plain</type>
            <size>41643</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmYWFkYTVhMWJiMWU0
NDg0YWZmZjUxNGNjMjkyZWJiM2M0NmM2Ny4uMjk5MjFmMmUwMjc5ZDU3MTU2ZDhhMDcxOTdlYWYy
NjQ4MTEyZTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMS0xMS0wNiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIG9yCisgICAgICAgIGNvbnN0IGNoYXIqIEMtc3RyaW5ncyB0byBhY2NvbXBsaXNoIHRo
aXMgd2l0aCBDb3JlRm91bmRhdGlvbgorICAgICAgICBtYWNyb3MuICBOb24tQXBwbGUgcGxhdGZv
cm1zIGNvbnRpbnVlIHRvIHVzZSBjb25zdCBjaGFyKiBmb3IKKyAgICAgICAgZm9ybWF0IHN0cmlu
Z3MgdG8gYWxsb3cgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIGZvcm1hdCBzdHJpbmdzLgorCisgICAg
ICAgIFRvIHRoaXMgZW5kIGxvY2FsaXplZCBzdHJpbmdzIHBhc3NlZCB0byBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoKQorICAgICAgICBtdXN0IHVzZSBhIFdFQl9VSV9GT1JNQVRfKigpIG1hY3JvIG9u
IGFsbCBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvCisgICAgICAgIGRvIHNvIHdpbGwgcmVzdWx0IGlu
IGEgY29tcGlsZXIgZXJyb3IsIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVAorICAgICAgICBtYWNy
b3MgcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1p
bmF0ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4g
dXNpbmcgV0VCX1VJX05TU3RyaW5nKCkvbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhl
CisgICAgICAgIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJl
bW92ZXMgdGhlIG5lZWQgdG8KKyAgICAgICAgY29udmVydCBmcm9tIENGL05TU3RyaW5nIC0+IFdU
Rjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvcgorICAgICAgICBsb2NhbGl6ZWQgZm9ybWF0IHN0
cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5w
bDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgZm9sbG93aW5nIG5ldyBt
YWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Nyb3NzLXBsYXRmb3Jt
XQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAgICAgIG8gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRm
b3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRm
b3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZvcm1hdCBjaGVja2lu
ZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlvbnMgaW4gTG9jYWxp
emVkU3RyaW5ncy5oLCB3aGljaCBhbGxvd3MgdGhlCisgICAgICAgICAgQUxMT1dfTk9OTElURVJB
TF9GT1JNQVRfQkVHSU4vRU5EIG1hY3JvcyB0byBiZSByZW1vdmVkIGhlcmUuCisgICAgICAgIC0g
Tm90ZSB0aGF0IGBmb3JtYXRgIGlzIG1hcmtlZCBhcyBDRl9SRUxFQVNFU19BUkdVTUVOVCBvbiBB
cHBsZQorICAgICAgICAgIHBsYXRmb3JtcyBiZWNhdXNlIGxvY2FsaXplZEZvcm1hdFN0cmluZygp
IGNhbid0IHVzZSBhIHJldHVybgorICAgICAgICAgIHR5cGUgb2YgUmV0YWluUHRyPD4gYW5kIGFs
c28gdXNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpLCBhbmQgd2UKKyAgICAgICAgICB3YW50IHRvIGF2
b2lkIGF1dG9yZWxlYXNpbmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2Vi
Q29yZTo6d2ViQ29yZUJ1bmRsZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdl
dHRpbmcgYSBDRkJ1bmRsZVJlZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRv
IGEgZnVuY3Rpb24gdGhhdCdzIHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4K
KyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0cmluZyk6IEFkZC4KKyAgICAgICAg
LSBUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBhICsxIHJldGFpbmVkIENGU3RyaW5nUmVmICh0byBh
dm9pZAorICAgICAgICAgIGF1dG9yZWxlYXNpbmcgaXQpIHNpbmNlIENGX0ZPUk1BVF9BUkdVTUVO
VCgpIHdvbid0IGFsbG93IGEKKyAgICAgICAgICByZXR1cm4gdHlwZSBvZiBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+LgorICAgICAgICAtIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBp
cyBhbHdheXMgY29uc3VtZWQgYnkKKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSwg
d2hpY2ggcmVsZWFzZXMgaXRzIGBmb3JtYXRgCisgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmKSk6IEFkZC4KKyAgICAgICAg
LSBUaGlzIG1ldGhvZCB3YXMgY29udmVydGVkIGZyb20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgor
ICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBhbmQgZnJvbSBsb2NhbGl6ZWRTdHJp
bmcoKSBpbgorICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NXaW4uY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqKSk6CisgICAgICAgIC0gQ29kZSBmb3Ig
VVNFKENGKSB3YXMgY29udmVydGVkIGZyb20gdGhlIHNhbWUgbWV0aG9kIGluCisgICAgICAgICAg
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tLgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vU2hvcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjph
ZGRUcmFja0xhYmVsQXNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2lu
ZENsb3NlZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tp
bmRDYXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRGVz
Y3JpcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRDaGFw
dGVyc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kTWV0YWRhdGFT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZFNESFN1ZmZpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZpeCk6CisgICAg
ICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRm9yY2VkU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjp3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VDcmVkZW50aWFsVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEFzc2VydGlvblRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIC0gVXNlIFdFQl9VSV9GT1JN
QVRfU1RSSU5HKCkgZm9yIGNyb3NzLXBsYXRmb3JtIFVJIGZvcm1hdAorICAgICAgICAgIHN0cmlu
Z3MsIGFuZCB1c2UgV0VCX1VJX0ZPUkFNVF9DRlNUUklOR1tfS0VZXSgpIGZvciBBcHBsZQorICAg
ICAgICAgIHBsYXRmb3JtIFVJIGZvcm1hdCBzdHJpbmdzLgorCisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5oOgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9TVFJJTkcpOiBBZGQu
CisgICAgICAgIC0gQ3Jvc3MtcGxhdGZvcm0gbWFjcm8gZm9yIFVJIGZvcm1hdCBzdHJpbmdzLgor
ICAgICAgICAtIE5vdGUgdGhhdCBub24tVVNFKENGKSBtYWNyb3MgZXNzZW50aWFsbHkgZG8gbm90
aGluZyBzaW5jZQorICAgICAgICAgIGxvY2FsaXplZFN0cmluZygpIGp1c3QgY29udmVydHMgY29u
c3QgY2hhciogdG8gV1RGOjpTdHJpbmcKKyAgICAgICAgICAod2hpY2ggd2FzIHByZXZpb3VzbHkg
Y29udmVydGVkIGJhY2sgdG8gY29uc3QgY2hhciopLCBhbmQKKyAgICAgICAgICBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoKSBub3cgdGFrZXMgYSBjb25zdCBjaGFyKi4KKyAgICAgICAgKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tF
WSk6IEFkZC4KKyAgICAgICAgLSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYXMgZm9ybWF0IHN0cmlu
ZyBhcmd1bWVudHMgdG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0cmluZyk6IEFkZC4KKyAgICAgICAgLSBEZWNs
YXJlIGEgbmV3IGZ1bmN0aW9uIGZvciBVU0UoQ0YpIHRoYXQgaXMgcGFzc2VkIHRvCisgICAgICAg
ICAgZm9ybWF0TG9jYWxpemVkU3RyaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmcoQ0ZTdHJpbmdSZWYpKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgYSBuZXcgZnVuY3Rp
b24gZm9yIFVTRShDRikgdGhhdCB0YWtlcyBhIENGU3RyaW5nUmVmCisgICAgICAgICAgYXJndW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAt
IENoYW5nZSB0byB1c2UgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRmb3Jtcywg
YW5kCisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3JtcyBz
byBmb3JtYXQgbWFjcm9zIG1heQorICAgICAgICAgIGJlIGFkZGVkIHRvIHRoZSBkZWxhcmF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOgorICAgICAgICAtIFJlLWlt
cGxlbWVudCBhcyBhbiBpbmxpbmUgZnVuY3Rpb24gdXNpbmcKKyAgICAgICAgICBsb2NhbGl6ZWRG
b3JtYXRTdHJpbmcoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmlu
Z3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZE5TU3RyaW5nKTogRGVsZXRl
LgorICAgICAgICAtIE1vdmVkIHRvIExvY2FsaXplZFN0cmluZ3MuaC4KKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsaXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6
ZWRTdHJpbmdzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJj
aFdlYik6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Omh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAgICAgICAgLSBTd2l0Y2gg
ZnJvbSBXRUJfVUlfU1RSSU5HKCkgdG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygpIGR1ZSB0bwor
ICAgICAgICAgIHRoZSBuZXcgcnVsZSBmb3IgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLgorICAg
ICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6CisgICAgICAgIC0g
U3dpdGNoIGZyb20gK1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0Ol0gYW5kCisgICAgICAgICAg
V0VCX1VJX05TU1RSSU5HKCkgdG8gV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKCkgYW5k
CisgICAgICAgICAgV0VCX1VJX0ZPUk1BVF9DRlNUUklORygpIGZvciBjb25zaXN0ZW5jeS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBs
b2NhbGl6ZWRTdHJpbmcoKSBpbiBMb2NhbGl6ZWRTdHJpbmdzLmNwcC4KKwogMjAyMS0xMS0wMyAg
Sm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgYm9yZGVy
LXJhZGl1cyBpbmxpbmUgc3R5bGUgc2hvdWxkIHNlcmlhbGl6ZSB3aXRoIHZhbGlkIHN5bnRheApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDRmOGM2OTFhODU4ZGNjYzNiYThmNTkzMjRh
MTZlNjIyOTM0NWIzMTkuLjA3MzBhNWM0ZjkxZDQzNmYwMTkzNDY2NmViMWYyNjI0OWI0NjBiMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0w
NiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVy
IHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29u
c2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5t
bToKKyAgICAgICAgKFdlYkxvY2FsaXplZFN0cmluZ0ludGVybmFsKToKKyAgICAgICAgLSBVc2Ug
bG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0ZWFkIG9mIGxvY2FsaXplZFN0cmluZygpIHRvCisgICAg
ICAgICAgZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNvbnZlcnQgZnJvbQorICAgICAgICAgIENGU3Ry
aW5nIC0+IFN0cmluZyAtPiBOU1N0cmluZy4KKwogMjAyMS0xMS0wMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgaU9TIGJ1aWxkIGZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJp
bmdzLnBsIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmlu
Z3MucGwKaW5kZXggZDkzMzkwMWM1ZmEwY2ZjNGExYzhjY2VlMmM1YTA5MDVmYzgxZDlhOS4uOGY2
NDZlN2RjNGUyNzg3ZmZmMjVjMjc2MzlmOTc4ZGQ1YWNhMDZhMCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKKysrIGIvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKQEAgLTEs
NiArMSw2IEBACiAjIS91c3IvYmluL2VudiBwZXJsCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODYsNyArMTg2LDcgQEAgaGFuZGxlU3Ry
aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRGLTggaGVy
ZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRVSVN0cmluZyA9ICRzdHJpbmc7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSV8oQ0YpP1NUUklOR19LRVkoX0lOVEVSTkFMKT8k
LykgYW5kICFkZWZpbmVkICRrZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRt
YWNybyA9fiAvKFdFQl8pP1VJKF9GT1JNQVQpP18oQ0YpP1NUUklOR19LRVkoX0lOVEVSTkFMKT8k
LykgYW5kICFkZWZpbmVkICRrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6
IFZhbGlkYXRlIFVURi04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0gJHN0
cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIsIjsKQEAgLTI0NSw3
ICsyNDUsNyBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcigk
ZmlsZSwgJC4sICJmb3VuZCAkdG9rZW4gYnV0IGV4cGVjdGVkICRleHBlY3RlZCIpOwogICAgICAg
ICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKCgkdG9rZW4gPX4gLyhXRUJfKT9VSV8oQ0YpP1NUUklORyhfS0VZKT8oX0lO
VEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4g
PX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSkgeworICAgICAgICAgICAgICAgIGlm
ICgoJHRva2VuID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJTkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8p
IHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9GT1JNQVRfKENGKT9TVFJJTkcoX0tFWSk/JC8pIHx8ICgk
dG9rZW4gPX4gL1dFQl9VSV9OU1NUUklORyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5H
X1dJVEhfTU5FTU9OSUMkLykpIHsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIigi
OwogICAgICAgICAgICAgICAgICAgICAkbWFjcm8gPSAkdG9rZW47CiAgICAgICAgICAgICAgICAg
ICAgICRVSVN0cmluZyA9IHVuZGVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmNwcAppbmRleCAxMTczZWY2YTFiMjg3MzhmMTAxMTBhYjBjNzM4OWFlYWY1ODQx
YzY0Li5mMjUzYTc1NzUyM2NiN2E3NWJjZjQzZWY0YzY2ZjIwNjRkOWY0YTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtMzQsNiArMzQsOSBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmg+CiAKICNpZiBVU0UoQ0YpCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIldlYkNv
cmVCdW5kbGVXaW4uaCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRp
ZgogCkBAIC00MywyNCArNDYsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBCZWNh
dXNlIHxmb3JtYXR8IGlzIHVzZWQgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQs
IGl0IGNhbm5vdCBiZSBhIHJlZmVyZW5jZQotLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAx
OC43LzMgb2YgdGhlIEMrKyBOMTkwNSBzdGFuZGFyZC4KLVN0cmluZyBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQotewogI2lmIFVTRShDRikKK1N0cmluZyBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgZm9ybWF0LCAu
Li4pCit7CiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBm
b3JtYXQpOwogCi0gICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfQkVHSU4KLSAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAs
IGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMpKTsKLSAgICBBTExPV19O
T05MSVRFUkFMX0ZPUk1BVF9FTkQKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdCwgYXJndW1lbnRzKSk7CiAK
ICAgICB2YV9lbmQoYXJndW1lbnRzKTsKKyAgICBDRlJlbGVhc2UoZm9ybWF0KTsKICAgICByZXR1
cm4gcmVzdWx0LmdldCgpOwotI2VsaWYgVVNFKEdMSUIpCit9CisjZWxzZQorLy8gQmVjYXVzZSB8
Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBj
YW5ub3QgYmUgYSByZWZlcmVuY2UKKy8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8z
IG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQuCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworI2lmIFVTRShHTElCKQogICAgIHZhX2xpc3Qg
YXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQudXRmOCgpLmRhdGEoKSwg
YXJndW1lbnRzKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVwX3Zwcmlu
dGYoZm9ybWF0LCBhcmd1bWVudHMpKTsKICAgICB2YV9lbmQoYXJndW1lbnRzKTsKICAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQuZ2V0KCkpOwogI2Vsc2UKQEAgLTY4LDE2ICs3NCw2
MyBAQCBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICAg
ICByZXR1cm4gZm9ybWF0OwogI2VuZGlmCiB9CisjZW5kaWYKIAotI2lmICFVU0UoQ0YpCisjaWYg
VVNFKENGKQorI2lmICFQTEFURk9STShXSU4pCitzdGF0aWMgQ0ZCdW5kbGVSZWYgd2ViQ29yZUJ1
bmRsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJl
Zj4+IGJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5h
cHBsZS5XZWJDb3JlIikpOworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBi
dW5kbGUuZ2V0KCkuZ2V0KCk7Cit9CisjZW5kaWYKIAotU3RyaW5nIGxvY2FsaXplZFN0cmluZyhj
b25zdCBjaGFyKiBrZXkpCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRGb3JtYXRTdHJpbmcoY29uc3Qg
Y2hhcioga2V5KQogewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtl
eSkpOworICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nTm9Db3B5KG51bGxwdHIsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0
b3JOdWxsKSk7CisgICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZyhrZXlTdHJpbmcuZ2V0KCkpOwog
fQogCitDRlN0cmluZ1JlZiBsb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KQoreworI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNwYXRj
aCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KKyAgICAvLyBTZWUgTG9h
ZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2VuZGlmCisKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
bm90Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKKworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJLaXRCdW5kbGUoKTsKKyNl
bHNlCisgICAgQ0ZCdW5kbGVSZWYgYnVuZGxlID0gd2ViQ29yZUJ1bmRsZSgpOworI2VuZGlmCisg
ICAgYXV0byByZXN1bHQgPSBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoYnVuZGxlLCBrZXks
IG5vdEZvdW5kLCBudWxscHRyKTsKKworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaWYgKHJlc3Vs
dCA9PSBub3RGb3VuZCkgeworICAgICAgICBjaGFyIGtleUNTdHJpbmdbMjU2XTsKKyAgICAgICAg
Q0ZTdHJpbmdHZXRDU3RyaW5nKGtleSwga2V5Q1N0cmluZywgc2l6ZW9mKGtleUNTdHJpbmcpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3Vs
dCAhPSBub3RGb3VuZCwgIkNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAnJXMnIGlu
IGJ1bmRsZSIsIGtleUNTdHJpbmcpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KICNlbmRpZgogCitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkK
K3sKKyNpZiBVU0UoQ0YpCisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmdOb0NvcHkobnVsbHB0ciwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICByZXR1cm4gYWRvcHRDRihsb2NhbGl6ZWRTdHJpbmco
a2V5U3RyaW5nLmdldCgpKSkuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGtleSwgc3RybGVuKGtleSkpOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKIAogc3RhdGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShjb25zdCBT
dHJpbmcmIG9yaWdpbmFsKQpAQCAtMjMzLDkgKzI4Niw5IEBAIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsK
ICNpZiBVU0UoQ0YpCiAgICAgYXV0byBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5n
Rm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0i
LCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0
ZWRDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX0NGU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxvb2sgVXAgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwog
I2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfU1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVt
KHNlbGVjdGVkU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9V
SV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1l
bnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5j
YXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CiAjZW5kaWYKQEAgLTI0Niw3
ICsyOTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJh
bnNsYXRlKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7CiAgICAgYXV0byBzZWxlY3Rl
ZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNy
ZWF0ZUNGU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Q0ZTVFJJTkcoIlRyYW5zbGF0ZSDigJwlQOKAnSIsICJUcmFuc2xhdGUgY29udGV4dCBtZW51IGl0
ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiVHJhbnNs
YXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVk
IHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAtODI0LDcg
Kzg3Nyw3IEBAIFN0cmluZyBwbHVnaW5Ub29TbWFsbFRleHQoKQogCiBTdHJpbmcgbXVsdGlwbGVG
aWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8gZGVz
Y3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRy
b2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7CisgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiJWQgZmlsZXMi
LCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZp
bGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZG
aWxlcyk7CiB9CiAKIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKQEAgLTg0NiwxMSArODk5
LDExIEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgYXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBhdXRvIGhlaWdodFN0cmluZyA9
IGFkb3B0Q0YoQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1h
dHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwg
aGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiVAICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZv
ciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCki
KSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhl
aWdodFN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVzICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRp
dGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBu
b3QgeCkiKSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RS
SU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAjZWxzZQotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQg
cGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRp
cGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSku
cmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNl
KCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTk3MiwxMiArMTAyNSwx
MiBAQCBTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKICAg
ICBzZWNvbmRzICU9IDYwOwogCiAgICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBt
aW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBz
ZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9S
TUFUX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vjb25k
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZh
bHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKICAgICBpZiAo
aG91cnMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiJTEkZCBob3VycyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkg
aGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWludXRlcyIp
LCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUz
JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxl
ciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwog
ICAgIGlmIChtaW51dGVzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBo
ZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiks
IG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJTEkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBt
ZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMpOworICAg
ICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIl
MSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBt
ZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51dGVzLCBzZWNv
bmRzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RS
SU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNv
bnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CiB9CiAKIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQpAQCAtMTAzOCwxMyArMTA5MSwx
MyBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKICNpZiAh
UExBVEZPUk0oR1RLKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vU2hvcnRUZXh0KGludCwg
aW50IG1pbkxlbmd0aCkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWlu
aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtaW5MZW5ndGgpOworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0
ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGgg
YSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtaW5MZW5ndGgp
OwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9v
TG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXJzIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1
ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhMZW5ndGgpOworICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBu
byBtb3JlIHRoYW4gJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0g
Y29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1heGltdW0gYWxsb3dl
ZCBsZW5ndGgiKSwgbWF4TGVuZ3RoKTsKIH0KICNlbmRpZgogI2VuZGlmCkBAIC0xMDUyLDkgKzEx
MDUsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhM
ZW5ndGgpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29uc3Qg
U3RyaW5nJiBtaW5pbXVtKQogewogI2lmIFVTRShDRikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xz
IHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9GT1JNQVRfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
ICVAIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZh
bHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv
ICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZh
bHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIiksIG1pbmltdW0udXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygi
VmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxv
d2VkIG1pbmltdW0iKSwgbWluaW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG1pbmltdW0pOwogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSB1bmRlcmZs
b3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFs
dWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKTsKQEAgLTEwNjQsOSArMTExNyw5IEBAIFN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1p
bmltdW0pCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChjb25zdCBT
dHJpbmcmIG1heGltdW0pCiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhp
Z2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIsICJW
YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdo
ZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJWYWx1ZSBt
dXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9y
IGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGlt
dW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1h
eGltdW0pOwogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJyYW5nZSBvdmVyZmxvdyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIg
dGhhbiBhbGxvd2VkIG1heGltdW0iKTsKQEAgLTExMDksNyArMTE2Miw3IEBAIFN0cmluZyB0ZXh0
VHJhY2tBdXRvbWF0aWNNZW51SXRlbVRleHQoKQogCiBTdHJpbmcgYWRkVHJhY2tMYWJlbEFzU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAICglQCkiLCAi
JUAgKCVAKSAoYXVkaW8vdGV4dCB0cmFjaykiLCAiQXVkaW8vVGV4dCB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhYmVsIGFuZCBsYW5ndWFnZSBvZiB0aGUgdHJh
Y2ssIGluIHRoZSBmb3JtIG9mICdMYW5ndWFnZSAoTGFiZWwpJy4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCAoJUAp
IiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ugb2YgdGhl
IHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgbGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0
cmluZyB0ZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpCkBAIC0xMTIxLDcg
KzExNzQsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENsb3NlZENhcHRpb25zU3VmZml4KGNv
bnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0ZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ0MiLCAiJUAg
Q0MgKHRleHQgdHJhY2spIiwgIkNsb3NlZCBjYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFt
ZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAn
RW5nbGlzaCBDQycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIEND
IiwgIiVAIENDICh0ZXh0IHRyYWNrKSIsICJDbG9zZWQgY2FwdGlvbnMgdGV4dCB0cmFjayBkaXNw
bGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUg
KGUuZy4gJ0VuZ2xpc2ggQ0MnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0K
IAogU3RyaW5nIHRleHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExMzMsNyAr
MTE4Niw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRl
eHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBDYXB0aW9u
cyAodGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2gg
Q2FwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0
aW9ucyIsICIlQCBDYXB0aW9ucyAodGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBk
aXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2Nh
bGUgKGUuZy4gJ0VuZ2xpc2ggQ2FwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgp
CkBAIC0xMTQ1LDcgKzExOTgsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZERlc2NyaXB0aW9u
c1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBE
ZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zICh0ZXh0IHRyYWNrKSIsICJEZXNjcmlwdGlv
bnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1
YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2Ny
aXB0aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBu
YW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcu
ICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZENoYXB0ZXJzRGlzcGxheU5hbWUoKQpAQCAtMTE1
Nyw3ICsxMjEwLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRDaGFwdGVyc1N1ZmZpeChjb25z
dCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdGV4dFRyYWNrS2luZENoYXB0ZXJzRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENoYXB0ZXJzIiwgIiVAIENo
YXB0ZXJzICh0ZXh0IHRyYWNrKSIsICJDaGFwdGVycyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBm
b3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5n
bGlzaCBDaGFwdGVycycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJl
dHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVA
IENoYXB0ZXJzIiwgIiVAIENoYXB0ZXJzICh0ZXh0IHRyYWNrKSIsICJDaGFwdGVycyB0ZXh0IHRy
YWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29y
IGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDaGFwdGVycycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUo
KQpAQCAtMTE2OSw3ICsxMjIyLDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRNZXRhZGF0YVN1
ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKTsKLSAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIE1ldGFkYXRh
IiwgIiVAIE1ldGFkYXRhICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNrIGRpc3Bs
YXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAo
ZS5nLiAnRW5nbGlzaCBNZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklO
R19LRVkoIiVAIE1ldGFkYXRhIiwgIiVAIE1ldGFkYXRhICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0
YSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3Vh
Z2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBNZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZFNESERpc3BsYXlO
YW1lKCkKQEAgLTExODEsNyArMTIzNCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kU0RIU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kU0RIRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREgg
KHRleHQgdHJhY2spIiwgIlNESCAoaS5lLiBkZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIFNESCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwgIlNESCAoaS5l
LiBkZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZv
cm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmds
aXNoIFNESCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcg
dGV4dFRyYWNrS2luZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpCkBAIC0xMTkzLDcgKzEyNDYsNyBA
QCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZEVhc3lSZWFkZXJTdWZmaXgoY29uc3QgU3RyaW5nJiB0
ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFj
a0tpbmRFYXN5UmVhZGVyRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIEVhc3kgUmVhZGVyIiwgIiVAIEVhc3kgUmVh
ZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRlciAoaS5lLiAzcmQtZ3JhZGUgbGV2ZWwpIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVhc3kgUmVhZGVyJykuIiksIHRleHQuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIg
KHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFt
ZSgpCkBAIC0xMjA1LDcgKzEyNTgsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZEZvcmNlZFN1
ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEZvcmNlZERpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAi
JUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUg
Zm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0Vu
Z2xpc2ggRm9yY2VkJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAg
Rm9yY2VkIiwgIiVAIEZvcmNlZCAodGV4dCB0cmFjaykiLCAiRm9yY2VkIHRleHQgdHJhY2sgZGlz
cGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxl
IChlLmcuICdFbmdsaXNoIEZvcmNlZCcpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogfQogCiBTdHJpbmcgYXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpCkBA
IC0xMjE3LDcgKzEyNzAsNyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKTsKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIERl
c2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKGF1ZGlvIHRyYWNrKSIsICJEZXNjcmlwdGlv
bnMgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5n
dWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNj
cmlwdGlvbnMgKGF1ZGlvIHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogfQogCiBTdHJpbmcgYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKQpA
QCAtMTIyOSw3ICsxMjgyLDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1
ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gYXVkaW9UcmFja0tpbmRDb21tZW50YXJ5RGlzcGxheU5hbWUoKTsKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIENvbW1l
bnRhcnkiLCAiJUAgQ29tbWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1lbnRhcnkgYXVkaW8g
dHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQv
b3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDb21tZW50YXJ5IiwgIiVAIENvbW1lbnRhcnkgKGF1ZGlv
IHRyYWNrKSIsICJDb21tZW50YXJ5IGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhh
dCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDb21t
ZW50YXJ5JykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZiAv
LyBVU0UoQ0YpCkBAIC0xMjU2LDkgKzEzMDksOSBAQCBTdHJpbmcgdXNlQmxvY2tlZFBsdWdJbkNv
bnRleHRNZW51VGl0bGUoKQogU3RyaW5nIHdlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwo
Y29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpCiB7CiAjaWYgVVNFKENGKQot
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCBXZWJD
cnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0
byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2Yg
YXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwg
bG9jYWxpemVkQXBwbGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VsaWYg
VVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5H
KCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xl
IFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9u
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfU1RSSU5HKCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFw
cGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxv
Y2FsaXplZEFwcGxpY2F0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkcoIjxhcHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFt
ZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFp
biIpLnJlcGxhY2UoIjxhcHBsaWNhdGlvbj4iLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpOwog
I2VuZGlmCkBAIC0xMzMyLDEyICsxMzg1LDEyIEBAIFN0cmluZyB1bmFjY2VwdGFibGVUTFNDZXJ0
aWZpY2F0ZSgpCiAvLyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCB0byBoZWxwIHVzZXJzIHRvIG1h
a2UgZGVjaXNpb25zLgogU3RyaW5nIG1ha2VDcmVkZW50aWFsVG91Y2hJRFByb21wdFRpdGxlKGNv
bnN0IFN0cmluZyYgYnVuZGxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxk
IGxpa2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmll
ZCBidW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJz
aXRlIG9uIHRoaXMgZGV2aWNlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
ZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1
c2UgVG91Y2ggSUQgZm9yIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0
byB1c2UgVG91Y2ggSUQgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhp
cyBkZXZpY2UiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZXRBc3NlcnRpb25Ub3VjaElEUHJv
bXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikK
IHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygi4oCc
JUDigJ0gd291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3Bl
Y2lmaWVkIGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIpLCBidW5k
bGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxpa2UgdG8gc2lnbiBpbiB0byDigJwlQOKAnS4iLCAiQWxs
b3cgdGhlIHNwZWNpZmllZCBidW5kbGUgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNp
dGUiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZW5lcmljVG91Y2hJRFByb21wdFRpdGxlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRleCBkODU2YTBk
NzBiYzkwZWQ0ZjBhNjQxMDNkMjc4MTYyYjRkMjIyYjE4Li4yN2M2NDRiZmQzNjE0M2ZkMmIxOTc3
MzdmZTU0Yzg2NTljMDkxMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSw2ICsyOSwxMCBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorI2lmZGVmIF9fT0JKQ19fCisjaW5jbHVkZSA8d3RmL2Nv
Y29hL1R5cGVDYXN0c0NvY29hLmg+CisjZW5kaWYKKwogI2lmIFVTRShHTElCKSAmJiBkZWZpbmVk
KEdFVFRFWFRfUEFDS0FHRSkKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2VuZGlmCkBA
IC0zODgsMTcgKzM5MiwzNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFVT
RShDRikKLS8vIFRoaXMgaXMgZXhhY3RseSBhcyBXRUJfVUlfU1RSSU5HLCBidXQgcmVuYW1lZCB0
byBlbnN1cmUgdGhlIHN0cmluZyBpcyBub3Qgc2Nhbm5lZCBieSBub24tQ0YgcG9ydHMuCisjZGVm
aW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6Omxv
Y2FsaXplZEZvcm1hdFN0cmluZyhzdHJpbmcpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChH
RVRURVhUX1BBQ0tBR0UpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIChfKHN0cmluZykpCisjZWxzZQorI2RlZmluZSBXRUJfVUlfRk9STUFUX1NUUklO
RyhzdHJpbmcsIGRlc2NyaXB0aW9uKSAoc3RyaW5nKQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpCiAj
ZGVmaW5lIFdFQl9VSV9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2Nh
bGl6ZWRTdHJpbmcoc3RyaW5nKQogI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywg
a2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKGtleSkKKyNkZWZpbmUg
V0VCX1VJX0ZPUk1BVF9DRlNUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2Nh
bGl6ZWRGb3JtYXRTdHJpbmcoc3RyaW5nKQorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5H
X0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0
cmluZyhrZXkpCisgICAgQ0ZTdHJpbmdSZWYgbG9jYWxpemVkRm9ybWF0U3RyaW5nKGNvbnN0IGNo
YXIqIGtleSkgQ0ZfRk9STUFUX0FSR1VNRU5UKDEpIENGX1JFVFVSTlNfUkVUQUlORUQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtl
eSkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpOwotICAgIFN0cmluZyBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKTsKKworI2lmIFVTRShDRikKKyAgICBT
dHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIENGX1JFTEVBU0VTX0FSR1VN
RU5UIGZvcm1hdCwgLi4uKSBDRl9GT1JNQVRfRlVOQ1RJT04oMSwgMik7CisjZWxzZQorICAgIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDEsIDIpOworI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwogI2RlZmlu
ZSBXRUJfVUlfTlNTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVk
TlNTdHJpbmcoc3RyaW5nKQotICAgIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpsb2NhbGl6ZWRO
U1N0cmluZyhOU1N0cmluZyAqa2V5KSBOU19GT1JNQVRfQVJHVU1FTlQoMSk7CisgICAgaW5saW5l
IE5TX0ZPUk1BVF9BUkdVTUVOVCgxKSBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJp
bmcgKmtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmlkZ2VfY2FzdChhZG9wdENGKGxvY2Fs
aXplZFN0cmluZyhicmlkZ2VfY2FzdChrZXkpKSkuYXV0b3JlbGVhc2UoKSk7CisgICAgfQogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQppbmRleCBmYzM2YmZjYTI1
ZjAzMGI5ZjgyOWMyNGI1Yjk1ZWYyNmQyYTRhMGYzLi40MjE2ZDQ5YTA1NjFlMDk2YjA0OTJmNDc3
MTM3NmY3NWJjNWE0NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjQgKzM1LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcg
KmtleSkKLXsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBDYW4gYmUgY2FsbGVk
IG9uIGEgZGlzcGF0Y2ggcXVldWUgd2hlbiBpbml0aWFsaXppbmcgc3RyaW5ncyBvbiBpT1MuCi0g
ICAgLy8gU2VlIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzIGFuZCA8cmRhcjovL3Byb2JsZW0vNzkw
MjQ3Mz4uCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNlbmRpZgotCi0gICAgc3RhdGlj
IE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20u
YXBwbGUuV2ViQ29yZSJdOwotICAgIHJldHVybiBbYnVuZGxlIGxvY2FsaXplZFN0cmluZ0Zvcktl
eTprZXkgdmFsdWU6QCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIgdGFibGU6bnVsbHB0cl07
Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0
b3JOdWxsKSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplZE5TU3RyaW5nKChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtleVN0cmluZy5nZXQoKSk7Ci19Ci0KIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxh
YmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZp
bGVuYW1lIik7CkBAIC03OSw3ICs2MSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hJblNwb3RsaWdodCgpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsK
ICAgICBhdXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IFBBTDo6ZGVmYXVsdFNlYXJjaFByb3ZpZGVy
RGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9T
VFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlk
ZXJOYW1lLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92
aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2Vh
cmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1No
b3dGb250cygpCkBAIC0yMzMsNyArMjE1LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgp
CiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9t
ICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIp
LCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBr
ZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjQ1LDcg
KzIyNyw3IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyhzaXplX3QgY291bnQpCiAg
ICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiMSBJdGVtIiwgIlByZXNl
bnQgdGhlIGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4gd2hlbiBhIHNpbmdsZSA8b3B0aW9uPiBp
cyBzZWxlY3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2VudCB0
aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBs
ZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJlc2Vu
dCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBtdWx0
aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKICAgICB9CiB9CiAKQEAgLTI3OCw3
ICsyNjAsNyBAQCBTdHJpbmcgZm9ybUNvbnRyb2xEb25lQnV0dG9uVGl0bGUoKQogCiBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiB7Ci0gICAg
cmV0dXJuIFtOU1N0cmluZyBsb2NhbGl6ZWRTdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklO
RyhAIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgQCJWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFuIG1h
eGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoXTsKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQg
Y2hhcmFjdGVyKHMpIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1l
bnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBt
YXhMZW5ndGgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCmluZGV4IDFlNzllMTA4NDdk
NzBkY2E1NGYxOTIzOTFjODE0NTljMjNlNmM2ODIuLmI5Mzg3MTQ2NjUzYWFkM2Q5MmMwNmIwYjQ0
M2U3YTRjOGJkMDA4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzYgKzI3LDEwIEBACiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJX
ZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAot
I2lmIFVTRShDRikKLSNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCi0jaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGKQotU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LQotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3Ry
aW5nIG5vdCBmb3VuZCIpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1
bHRWYWx1ZShrZXlTdHJpbmcuZ2V0KCksIDAsIHdlYktpdEJ1bmRsZSgpLCBub3RGb3VuZCwgMCkp
OwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5vdEZvdW5kLCAiY291
bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0LmdldCgpOwotfQotI2VuZGlmCi0KIFN0cmluZyB1cGxvYWRGaWxlVGV4
dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCmlu
ZGV4IDllNjU2OWY3YWM3MTQxMThkZDBiZjM2YzFjOTlmMmYzNzZiZTUxMjYuLjdkZDhhOTA4NzRh
YzY1ZDYwMWNkZmMyZjA3NDdkMWRiNTA1ZDdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFs
LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU1N0cmlu
ZyAqV2ViTG9jYWxpemVkU3RyaW5nSW50ZXJuYWwoY29uc3QgY2hhcioga2V5KQogewotICAgIHJl
dHVybiBsb2NhbGl6ZWRTdHJpbmcoa2V5KTsKKyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZyhi
cmlkZ2VfY2FzdChrZXlTdHJpbmcuZ2V0KCkpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443511</attachid>
            <date>2021-11-07 08:12:48 -0800</date>
            <delta_ts>2021-11-09 09:29:06 -0800</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-232686-20211107081247.patch</filename>
            <type>text/plain</type>
            <size>41684</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFmY2VkZDdjN2I5YTYz
ZDEwOTAwZmNkMTRlOWNkODBlNDE0ZTU3NS4uNDE0NTFmMGRhOGEzOWQyNjkwNzY2NzljNzczNmM1
M2FkYjE2MzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMS0xMS0wNyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0
aGUgY29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQg
cGxhY2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAg
ICBwb3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBv
YmplY3RzIG9yCisgICAgICAgIGNvbnN0IGNoYXIqIEMtc3RyaW5ncyB0byBhY2NvbXBsaXNoIHRo
aXMgd2l0aCBDb3JlRm91bmRhdGlvbgorICAgICAgICBtYWNyb3MuICBOb24tQXBwbGUgcGxhdGZv
cm1zIGNvbnRpbnVlIHRvIHVzZSBjb25zdCBjaGFyKiBmb3IKKyAgICAgICAgZm9ybWF0IHN0cmlu
Z3MgdG8gYWxsb3cgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIGZvcm1hdCBzdHJpbmdzLgorCisgICAg
ICAgIFRvIHRoaXMgZW5kIGxvY2FsaXplZCBzdHJpbmdzIHBhc3NlZCB0byBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoKQorICAgICAgICBtdXN0IHVzZSBhIFdFQl9VSV9GT1JNQVRfKigpIG1hY3JvIG9u
IGFsbCBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvCisgICAgICAgIGRvIHNvIHdpbGwgcmVzdWx0IGlu
IGEgY29tcGlsZXIgZXJyb3IsIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVAorICAgICAgICBtYWNy
b3MgcmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1p
bmF0ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4g
dXNpbmcgV0VCX1VJX05TU1RSSU5HKCkvbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhl
CisgICAgICAgIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJl
bW92ZXMgdGhlIG5lZWQgdG8KKyAgICAgICAgY29udmVydCBmcm9tIENGL05TU3RyaW5nIC0+IFdU
Rjo6U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvcgorICAgICAgICBsb2NhbGl6ZWQgZm9ybWF0IHN0
cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5w
bDoKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgZm9sbG93aW5nIG5ldyBt
YWNyb3M6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Nyb3NzLXBsYXRmb3Jt
XQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAgICAgIG8gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRm
b3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRm
b3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZvcm1hdCBjaGVja2lu
ZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlvbnMgaW4gTG9jYWxp
emVkU3RyaW5ncy5oLCB3aGljaCBhbGxvd3MgdGhlCisgICAgICAgICAgQUxMT1dfTk9OTElURVJB
TF9GT1JNQVRfQkVHSU4vRU5EIG1hY3JvcyB0byBiZSByZW1vdmVkIGhlcmUuCisgICAgICAgIC0g
Tm90ZSB0aGF0IGBmb3JtYXRgIGlzIG1hcmtlZCBhcyBDRl9SRUxFQVNFU19BUkdVTUVOVCBvbiBB
cHBsZQorICAgICAgICAgIHBsYXRmb3JtcyBiZWNhdXNlIGxvY2FsaXplZEZvcm1hdFN0cmluZygp
IGNhbid0IHVzZSBhIHJldHVybgorICAgICAgICAgIHR5cGUgb2YgUmV0YWluUHRyPD4gYW5kIGFs
c28gdXNlIENGX0ZPUk1BVF9BUkdVTUVOVCgpLCBhbmQgd2UKKyAgICAgICAgICB3YW50IHRvIGF2
b2lkIGF1dG9yZWxlYXNpbmcgdGhlIENGU3RyaW5nUmVmIHJldHVybmVkLgorICAgICAgICAoV2Vi
Q29yZTo6d2ViQ29yZUJ1bmRsZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdl
dHRpbmcgYSBDRkJ1bmRsZVJlZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRv
IGEgZnVuY3Rpb24gdGhhdCdzIHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4K
KyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0cmluZyk6IEFkZC4KKyAgICAgICAg
LSBUaGlzIG1ldGhvZCBtdXN0IHJldHVybiBhICsxIHJldGFpbmVkIENGU3RyaW5nUmVmICh0byBh
dm9pZAorICAgICAgICAgIGF1dG9yZWxlYXNpbmcgaXQpIHNpbmNlIENGX0ZPUk1BVF9BUkdVTUVO
VCgpIHdvbid0IGFsbG93IGEKKyAgICAgICAgICByZXR1cm4gdHlwZSBvZiBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+LgorICAgICAgICAtIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBp
cyBhbHdheXMgY29uc3VtZWQgYnkKKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSwg
d2hpY2ggcmVsZWFzZXMgaXRzIGBmb3JtYXRgCisgICAgICAgICAgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmKSk6IEFkZC4KKyAgICAgICAg
LSBUaGlzIG1ldGhvZCB3YXMgY29udmVydGVkIGZyb20gbG9jYWxpemVkTlNTdHJpbmcoKSBpbgor
ICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NDb2NvYS5tbSBhbmQgZnJvbSBsb2NhbGl6ZWRTdHJp
bmcoKSBpbgorICAgICAgICAgIExvY2FsaXplZFN0cmluZ3NXaW4uY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqKSk6CisgICAgICAgIC0gQ29kZSBmb3Ig
VVNFKENGKSB3YXMgY29udmVydGVkIGZyb20gdGhlIHNhbWUgbWV0aG9kIGluCisgICAgICAgICAg
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tLgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vU2hvcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjph
ZGRUcmFja0xhYmVsQXNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2lu
ZENsb3NlZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tp
bmRDYXB0aW9uc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRGVz
Y3JpcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRDaGFw
dGVyc1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kTWV0YWRhdGFT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVGV4dFRyYWNrS2luZFNESFN1ZmZpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZpeCk6CisgICAg
ICAgIChXZWJDb3JlOjphZGRUZXh0VHJhY2tLaW5kRm9yY2VkU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZEF1ZGlvVHJhY2tLaW5kQ29tbWVudGFyeVN1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjp3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VDcmVkZW50aWFsVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEFzc2VydGlvblRvdWNoSURQcm9tcHRUaXRsZSk6CisgICAgICAgIC0gVXNlIFdFQl9VSV9GT1JN
QVRfU1RSSU5HKCkgZm9yIGNyb3NzLXBsYXRmb3JtIFVJIGZvcm1hdAorICAgICAgICAgIHN0cmlu
Z3MsIGFuZCB1c2UgV0VCX1VJX0ZPUkFNVF9DRlNUUklOR1tfS0VZXSgpIGZvciBBcHBsZQorICAg
ICAgICAgIHBsYXRmb3JtIFVJIGZvcm1hdCBzdHJpbmdzLgorCisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5oOgorICAgICAgICAoV0VCX1VJX0ZPUk1BVF9TVFJJTkcpOiBBZGQu
CisgICAgICAgIC0gQ3Jvc3MtcGxhdGZvcm0gbWFjcm8gZm9yIFVJIGZvcm1hdCBzdHJpbmdzLgor
ICAgICAgICAtIE5vdGUgdGhhdCBub24tVVNFKENGKSBtYWNyb3MgZXNzZW50aWFsbHkgZG8gbm90
aGluZyBzaW5jZQorICAgICAgICAgIGxvY2FsaXplZFN0cmluZygpIGp1c3QgY29udmVydHMgY29u
c3QgY2hhciogdG8gV1RGOjpTdHJpbmcKKyAgICAgICAgICAod2hpY2ggd2FzIHByZXZpb3VzbHkg
Y29udmVydGVkIGJhY2sgdG8gY29uc3QgY2hhciopLCBhbmQKKyAgICAgICAgICBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoKSBub3cgdGFrZXMgYSBjb25zdCBjaGFyKi4KKyAgICAgICAgKFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tF
WSk6IEFkZC4KKyAgICAgICAgLSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYXMgZm9ybWF0IHN0cmlu
ZyBhcmd1bWVudHMgdG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0cmluZyk6IEFkZC4KKyAgICAgICAgLSBEZWNs
YXJlIGEgbmV3IGZ1bmN0aW9uIGZvciBVU0UoQ0YpIHRoYXQgaXMgcGFzc2VkIHRvCisgICAgICAg
ICAgZm9ybWF0TG9jYWxpemVkU3RyaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmcoQ0ZTdHJpbmdSZWYpKTogQWRkLgorICAgICAgICAtIERlY2xhcmUgYSBuZXcgZnVuY3Rp
b24gZm9yIFVTRShDRikgdGhhdCB0YWtlcyBhIENGU3RyaW5nUmVmCisgICAgICAgICAgYXJndW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAt
IENoYW5nZSB0byB1c2UgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9yIEFwcGxlIHBsYXRmb3Jtcywg
YW5kCisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3JtcyBz
byBmb3JtYXQgbWFjcm9zIG1heQorICAgICAgICAgIGJlIGFkZGVkIHRvIHRoZSBkZWxhcmF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcpOgorICAgICAgICAtIFJlLWlt
cGxlbWVudCBhcyBhbiBpbmxpbmUgZnVuY3Rpb24gdXNpbmcgbG9jYWxpemVkU3RyaW5nKCkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3Zl
ZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmguCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJp
bmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92ZWQgdG8gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAo
V2ViQ29yZTo6a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpodG1s
U2VsZWN0TXVsdGlwbGVJdGVtcyk6CisgICAgICAgIC0gU3dpdGNoIGZyb20gV0VCX1VJX1NUUklO
RygpIHRvIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoKSBkdWUgdG8KKyAgICAgICAgICB0aGUgbmV3
IHJ1bGUgZm9yIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OnZh
bGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQpOgorICAgICAgICAtIFN3aXRjaCBmcm9tICtbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpdIGFuZAorICAgICAgICAgIFdFQl9VSV9OU1NUUklORygp
IHRvIFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZFN0cmluZygpIGFuZAorICAgICAgICAgIFdFQl9V
SV9GT1JNQVRfQ0ZTVFJJTkcoKSBmb3IgY29uc2lzdGVuY3kuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92ZWQgdG8gbG9jYWxpemVkU3RyaW5nKCkg
aW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisKIDIwMjEtMTEtMDYgIFR5bGVyIFdpbGNvY2sgIDx0
eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogV2ViS2l0MSBQbHVnaW5WaWV3QmFzZSBv
YmplY3RzIHdpdGggYW4gYXNzb2NpYXRlZCB3aWRnZXQoKS0+cGxhdGZvcm1XaWRnZXQoKSBzaG91
bGQgYmUgY29uc2lkZXJlZCBhdHRhY2htZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDY0NzZmNGJjZjhhMGJhMDJkY2Y3YjY1ZjJhOTRkZDUxOGZlZWI4ZTkuLjhkMWE3MmRiNTA1
NjFlMWNiNDY1NTJiYjZhMGEzOGI5ZmY3YjYyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0wNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxv
Y2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbToKKyAgICAgICAgKFdlYkxvY2FsaXplZFN0
cmluZ0ludGVybmFsKToKKyAgICAgICAgLSBVc2UgbG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0ZWFk
IG9mIGxvY2FsaXplZFN0cmluZygpIHRvCisgICAgICAgICAgZWxpbWluYXRlIHRoZSBuZWVkIHRv
IGNvbnZlcnQgZnJvbQorICAgICAgICAgIENGU3RyaW5nIC0+IFN0cmluZyAtPiBOU1N0cmluZy4K
KwogMjAyMS0xMS0wNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9tIGZyb20gc3ZuLndlYmtpdC5vcmcgcmVw
b3NpdG9yeSBhcyBvZiByMjg1MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMv
ZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCmluZGV4IGQ5MzM5MDFjNWZhMGNmYzRhMWM4
Y2NlZTJjNWEwOTA1ZmM4MWQ5YTkuLmMzODBmMWQ1MGE0NWJlMjQyMjQ2YjFjMWRjNTk2ZDk5ZDUw
YTdhYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6
YWJsZS1zdHJpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2Nh
bGl6YWJsZS1zdHJpbmdzLnBsCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAog
Ci0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTg2LDcgKzE4Niw3IEBAIGhhbmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMg
RklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAkVUlT
dHJpbmcgPSAkc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwi
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VCXyk/VUlfKENG
KT9TVFJJTkdfS0VZKF9JTlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSV8oRk9STUFUXyk/KENG
KT9TVFJJTkdfS0VZKF9JTlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAg
ICAgICAgICAgICAgICAgJGtleSA9ICRzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAk
ZXhwZWN0ZWQgPSAiLCI7CkBAIC0yNDUsNyArMjQ1LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAg
ICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBl
Y3RlZCAkZXhwZWN0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/
VUlfKENGKT9TVFJJTkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9V
SV9OU1NUUklORyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMk
LykpIHsKKyAgICAgICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhGT1JNQVRf
KT8oQ0YpP1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJ
X05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQv
KSkgewogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAgICAg
ICAgICAgICRtYWNybyA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5nID0g
dW5kZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmlu
ZGV4IDExNzNlZjZhMWIyODczOGYxMDExMGFiMGM3Mzg5YWVhZjU4NDFjNjQuLmYyNTNhNzU3NTIz
Y2I3YTc1YmNmNDNlZjRjNjZmMjA2NGQ5ZjRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw2ICsz
NCw5IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFVT
RShDRikKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgor
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTQzLDI0ICs0
NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEJlY2F1c2UgfGZvcm1hdHwgaXMg
dXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEg
cmVmZXJlbmNlCi0vLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysr
IE4xOTA1IHN0YW5kYXJkLgotU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9y
bWF0LCAuLi4pCi17CiAjaWYgVVNFKENGKQorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhD
RlN0cmluZ1JlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCBmb3JtYXQsIC4uLikKK3sKICAgICB2YV9s
aXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAgICBB
TExPV19OT05MSVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFU
X0VORAorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRB
bmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LCBhcmd1bWVudHMpKTsKIAogICAgIHZhX2VuZChhcmd1
bWVudHMpOworICAgIENGUmVsZWFzZShmb3JtYXQpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7
Ci0jZWxpZiBVU0UoR0xJQikKK30KKyNlbHNlCisvLyBCZWNhdXNlIHxmb3JtYXR8IGlzIHVzZWQg
YXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdmFfc3RhcnQsIGl0IGNhbm5vdCBiZSBhIHJlZmVy
ZW5jZQorLy8gdHlwZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAxOC43LzMgb2YgdGhlIEMrKyBOMTkw
NSBzdGFuZGFyZC4KK1N0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pCit7CisjaWYgVVNFKEdMSUIpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAg
dmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJlc3Vs
dChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdC51dGY4KCkuZGF0YSgpLCBhcmd1bWVudHMpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihmb3JtYXQsIGFyZ3Vt
ZW50cykpOwogICAgIHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHJlc3VsdC5nZXQoKSk7CiAjZWxzZQpAQCAtNjgsMTYgKzc0LDYzIEBAIFN0cmluZyBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogICAgIHJldHVybiBmb3JtYXQ7
CiAjZW5kaWYKIH0KKyNlbmRpZgogCi0jaWYgIVVTRShDRikKKyNpZiBVU0UoQ0YpCisjaWYgIVBM
QVRGT1JNKFdJTikKK3N0YXRpYyBDRkJ1bmRsZVJlZiB3ZWJDb3JlQnVuZGxlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlID0gQ0ZC
dW5kbGVHZXRCdW5kbGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29tLmFwcGxlLldlYkNvcmUiKSk7
CisgICAgQVNTRVJUKGJ1bmRsZS5nZXQoKSk7CisgICAgcmV0dXJuIGJ1bmRsZS5nZXQoKS5nZXQo
KTsKK30KKyNlbmRpZgogCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkK
K0NGU3RyaW5nUmVmIGxvY2FsaXplZEZvcm1hdFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7Ci0g
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CisgICAgYXV0byBr
ZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkobnVsbHB0
ciwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBy
ZXR1cm4gbG9jYWxpemVkU3RyaW5nKGtleVN0cmluZy5nZXQoKSk7CiB9CiAKK0NGU3RyaW5nUmVm
IGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpCit7CisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5p
dGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgorICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3Ry
aW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+LgorICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBub3RGb3VuZCA9IENGU1RS
KCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOworCisjaWYgUExBVEZPUk0oV0lOKQorICAg
IENGQnVuZGxlUmVmIGJ1bmRsZSA9IHdlYktpdEJ1bmRsZSgpOworI2Vsc2UKKyAgICBDRkJ1bmRs
ZVJlZiBidW5kbGUgPSB3ZWJDb3JlQnVuZGxlKCk7CisjZW5kaWYKKyAgICBhdXRvIHJlc3VsdCA9
IENGQnVuZGxlQ29weUxvY2FsaXplZFN0cmluZyhidW5kbGUsIGtleSwgbm90Rm91bmQsIG51bGxw
dHIpOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBpZiAocmVzdWx0ID09IG5vdEZvdW5kKSB7
CisgICAgICAgIGNoYXIga2V5Q1N0cmluZ1syNTZdOworICAgICAgICBDRlN0cmluZ0dldENTdHJp
bmcoa2V5LCBrZXlDU3RyaW5nLCBzaXplb2Yoa2V5Q1N0cmluZyksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAi
Q291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICclcycgaW4gYnVuZGxlIiwga2V5Q1N0
cmluZyk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQogI2VuZGlmCiAK
K1N0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQoreworI2lmIFVTRShDRikK
KyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05v
Q29weShudWxscHRyLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgIHJldHVybiBhZG9wdENGKGxvY2FsaXplZFN0cmluZyhrZXlTdHJpbmcuZ2V0KCkp
KS5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4o
a2V5KSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCiBzdGF0aWMg
U3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKGNvbnN0IFN0cmluZyYgb3JpZ2luYWwp
CkBAIC0yMzMsOSArMjg2LDkgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAg
ICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRl
eHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNl
bGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg
4oCcJXPigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQi
KSwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJ
TkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNl
bGVjdGVkIHdvcmQiKSwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcp
LnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBV
cCDigJw8c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKICNlbmRpZgpAQCAtMjQ2LDcgKzI5OSw3IEBAIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFN0cmluZykKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGUoY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFN0cmluZykKIHsKICAgICBhdXRvIHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVu
Y2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVHJhbnNs
YXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0ZSBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVk
IHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJUcmFuc2xhdGUg4oCcJUDigJ0iLCAi
VHJhbnNsYXRlIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3Rl
ZENGU3RyaW5nLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC04MjQsNyArODc3LDcgQEAgU3RyaW5n
IHBsdWdpblRvb1NtYWxsVGV4dCgpCiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVu
c2lnbmVkIG51bWJlck9mRmlsZXMpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVy
IG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBt
dWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNj
cmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJv
bCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKIH0KIAogU3Ry
aW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQpAQCAtODQ2LDExICs4OTksMTEgQEAgU3RyaW5nIGlt
YWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICBhdXRvIGhlaWdodCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlw
ZSwgJmhlaWdodEludCkpOwogICAgIGF1dG8gaGVpZ2h0U3RyaW5nID0gYWRvcHRDRihDRk51bWJl
ckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWln
aHQuZ2V0KCkpKTsKIAotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25l
IGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNU
UklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBp
bWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgp
KTsKICNlbGlmIFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJXMgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRh
bG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFt
ZS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVzICVkw5clZCBw
aXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlw
bGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICNlbHNlCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93
IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9s
LCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5h
bWU+IiwgZmlsZW5hbWUpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIjxmaWxlbmFtZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBm
aWxlbmFtZSk7CiAjZW5kaWYKIH0KIApAQCAtOTcyLDEyICsxMDI1LDEyIEBAIFN0cmluZyBsb2Nh
bGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCB0aW1lKQogICAgIHNlY29uZHMgJT0gNjA7
CiAKICAgICBpZiAoZGF5cykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAlMyRkIG1pbnV0ZXMgJTQkZCBzZWNv
bmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUg
dmFsdWUgPj0gMSBkYXkiKSwgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRk
IGRheXMgJTIkZCBob3VycyAlMyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwg
ZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwogICAgIGlmIChob3VycykKLSAgICAgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRkIGhvdXJzICUy
JGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVz
LCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX1NUUklORygiJTEkZCBob3VycyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFj
Y2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0g
NjAgbWludXRlcyIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CiAgICAgaWYgKG1pbnV0ZXMp
Ci0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJTEk
ZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVk
aWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25k
cyk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlMSRk
IHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIg
dGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRk
IHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIg
dGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgc2Vjb25k
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZh
bHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nVGV4dCgpCkBAIC0xMDM4LDEzICsxMDkxLDEzIEBAIFN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQogI2lmICFQTEFURk9STShHVEspCiBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9ydFRleHQoaW50LCBpbnQgbWluTGVuZ3RoKQog
ewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVXNlIGF0
IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVu
Z3RoIiksIG1pbkxlbmd0aCk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfRk9STUFUX1NUUklORygiVXNlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIg
dGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGlu
dCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBt
YXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX1NUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBj
aGFyYWN0ZXJzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpLCBtYXhM
ZW5ndGgpOwogfQogI2VuZGlmCiAjZW5kaWYKQEAgLTEwNTIsOSArMTEwNSw5IEBAIFN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KGludCwgaW50IG1heExlbmd0aCkKIFN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1pbmltdW0p
CiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIsICJW
YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dl
ciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklO
RygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBh
bGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlm
IFVTRShHTElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBh
bGxvd2VkIG1pbmltdW0iKSwgbWluaW11bS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0
IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBt
aW5pbXVtLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWluaW11bSk7
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9u
IG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFs
bG93ZWQgbWluaW11bSIpOwpAQCAtMTA2NCw5ICsxMTE3LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIFN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4aW11bSkK
IHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Q0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0
aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi
VmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dl
ZCBtYXhpbXVtIiksIG1heGltdW0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0Uo
R0xJQikKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlZh
bHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQg
bWF4aW11bSIpLCBtYXhpbXVtLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250
cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLnV0
ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWF4aW11bSk7CiAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBm
b3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4
aW11bSIpOwpAQCAtMTEwOSw3ICsxMTYyLDcgQEAgU3RyaW5nIHRleHRUcmFja0F1dG9tYXRpY01l
bnVJdGVtVGV4dCgpCiAKIFN0cmluZyBhZGRUcmFja0xhYmVsQXNTdWZmaXgoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgKCVAKSIsICIlQCAoJUApIChhdWRpby90
ZXh0IHRyYWNrKSIsICJBdWRpby9UZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBp
bmNsdWRlcyB0aGUgbGFiZWwgYW5kIGxhbmd1YWdlIG9mIHRoZSB0cmFjaywgaW4gdGhlIGZvcm0g
b2YgJ0xhbmd1YWdlIChMYWJlbCknLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxh
YmVsLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAICglQCkiLCAiJUAgKCVAKSAoYXVk
aW8vdGV4dCB0cmFjaykiLCAiQXVkaW8vVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRo
YXQgaW5jbHVkZXMgdGhlIGxhYmVsIGFuZCBsYW5ndWFnZSBvZiB0aGUgdHJhY2ssIGluIHRoZSBm
b3JtIG9mICdMYW5ndWFnZSAoTGFiZWwpJy4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBsYWJlbC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tp
bmRDbG9zZWRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExMjEsNyArMTE3NCw3IEBAIFN0cmlu
ZyBhZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tp
bmRDbG9zZWRDYXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjayki
LCAiQ2xvc2VkIGNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGlu
Y2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiks
IHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ0MiLCAiJUAgQ0MgKHRleHQg
dHJhY2spIiwgIkNsb3NlZCBjYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBD
QycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRy
YWNrS2luZENhcHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTEzMyw3ICsxMTg2LDcgQEAgU3RyaW5n
IGFkZFRleHRUcmFja0tpbmRDYXB0aW9uc1N1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAg
ICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZENhcHRp
b25zRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9DRlNUUklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0IHRyYWNrKSIs
ICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9ucycpLiIpLCB0
ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRp
b25zICh0ZXh0IHRyYWNrKSIsICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3Jt
YXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlz
aCBDYXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJp
bmcgdGV4dFRyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExNDUsNyArMTE5
OCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25zU3VmZml4KGNvbnN0IFN0
cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0
ZXh0VHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIl
QCBEZXNjcmlwdGlvbnMgKHRleHQgdHJhY2spIiwgIkRlc2NyaXB0aW9ucyB0ZXh0IHRyYWNrIGRp
c3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2Fs
ZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zICh0ZXh0IHRy
YWNrKSIsICJEZXNjcmlwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQg
aW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3Jp
cHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0
ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgpCkBAIC0xMTU3LDcgKzEyMTAsNyBAQCBT
dHJpbmcgYWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0VHJhY2tLaW5k
Q2hhcHRlcnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMiLCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJh
Y2spIiwgIkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1
ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENoYXB0ZXJzJyku
IiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMiLCAiJUAg
Q2hhcHRlcnMgKHRleHQgdHJhY2spIiwgIkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxheSBuYW1l
IGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdF
bmdsaXNoIENoYXB0ZXJzJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAK
IFN0cmluZyB0ZXh0VHJhY2tLaW5kTWV0YWRhdGFEaXNwbGF5TmFtZSgpCkBAIC0xMTY5LDcgKzEy
MjIsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZE1ldGFkYXRhU3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0
VHJhY2tLaW5kTWV0YWRhdGFEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEg
KHRleHQgdHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1l
dGFkYXRhJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRh
dGEiLCAiJUAgTWV0YWRhdGEgKHRleHQgdHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlz
cGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxl
IChlLmcuICdFbmdsaXNoIE1ldGFkYXRhJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kU0RIRGlzcGxheU5hbWUoKQpAQCAtMTE4MSw3
ICsxMjM0LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRTREhTdWZmaXgoY29uc3QgU3RyaW5n
JiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRU
cmFja0tpbmRTREhEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgU0RIIiwgIiVAIFNESCAodGV4dCB0cmFjaykiLCAi
U0RIIChpLmUuIGRlYWYgYW5kL29yIGhhcmQgb2YgaGVhcmluZykgdGV4dCB0cmFjayBkaXNwbGF5
IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUu
Zy4gJ0VuZ2xpc2ggU0RIJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgi
JUAgU0RIIiwgIiVAIFNESCAodGV4dCB0cmFjaykiLCAiU0RIIChpLmUuIGRlYWYgYW5kL29yIGhh
cmQgb2YgaGVhcmluZykgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVk
ZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggU0RIJykuIiksIHRl
eHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kRWFz
eVJlYWRlckRpc3BsYXlOYW1lKCkKQEAgLTExOTMsNyArMTI0Niw3IEBAIFN0cmluZyBhZGRUZXh0
VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYg
KHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEVhc3lSZWFkZXJE
aXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIgKHRleHQgdHJhY2sp
IiwgIkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0cmFjayBkaXNwbGF5
IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUu
Zy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkdfS0VZKCIlQCBFYXN5IFJlYWRlciIsICIlQCBFYXN5IFJlYWRlciAodGV4dCB0cmFjaykiLCAi
RWFzeSBSZWFkZXIgKGkuZS4gM3JkLWdyYWRlIGxldmVsKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFt
ZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAn
RW5nbGlzaCBFYXN5IFJlYWRlcicpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
fQogCiBTdHJpbmcgdGV4dFRyYWNrS2luZEZvcmNlZERpc3BsYXlOYW1lKCkKQEAgLTEyMDUsNyAr
MTI1OCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kRm9yY2VkU3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0ZXh0
VHJhY2tLaW5kRm9yY2VkRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIEZvcmNlZCIsICIlQCBGb3JjZWQgKHRleHQg
dHJhY2spIiwgIkZvcmNlZCB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBGb3JjZWQnKS4i
KSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9y
Y2VkICh0ZXh0IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0
IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2gg
Rm9yY2VkJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBh
dWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTEyMTcsNyArMTI3MCw3
IEBAIFN0cmluZyBhZGRBdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc1N1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXVk
aW9UcmFja0tpbmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVA
IERlc2NyaXB0aW9ucyAoYXVkaW8gdHJhY2spIiwgIkRlc2NyaXB0aW9ucyBhdWRpbyB0cmFjayBk
aXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2Nh
bGUgKGUuZy4gJ0VuZ2xpc2ggRGVzY3JpcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfRk9STUFU
X0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0aW9ucyAoYXVkaW8g
dHJhY2spIiwgIkRlc2NyaXB0aW9ucyBhdWRpbyB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRo
YXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRGVz
Y3JpcHRpb25zJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmlu
ZyBhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpCkBAIC0xMjI5LDcgKzEyODIs
NyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRp
b1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21t
ZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ29tbWVudGFyeScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19L
RVkoIiVAIENvbW1lbnRhcnkiLCAiJUAgQ29tbWVudGFyeSAoYXVkaW8gdHJhY2spIiwgIkNvbW1l
bnRhcnkgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBs
YW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENvbW1lbnRhcnknKS4iKSwgdGV4
dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogI2VuZGlmIC8vIFVTRShDRikKQEAgLTEy
NTYsOSArMTMwOSw5IEBAIFN0cmluZyB1c2VCbG9ja2VkUGx1Z0luQ29udGV4dE1lbnVUaXRsZSgp
CiBTdHJpbmcgd2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hhaW5MYWJlbChjb25zdCBTdHJpbmcmIGxv
Y2FsaXplZEFwcGxpY2F0aW9uTmFtZSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5
IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4g
S2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNU
UklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNp
bmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNh
dGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVzIFdlYkNyeXB0byBN
YXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3Rl
ciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9TVFJJ
TkcoIiVzIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiwgIk5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5n
bGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRp
b25OYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
PGFwcGxpY2F0aW9uPiBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9u
J3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIikucmVwbGFjZSgiPGFw
cGxpY2F0aW9uPiIsIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKQEAgLTEzMzIs
MTIgKzEzODUsMTIgQEAgU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKIC8vIGlu
Zm9ybWF0aW9uIGlzIHByb3ZpZGVkIHRvIGhlbHAgdXNlcnMgdG8gbWFrZSBkZWNpc2lvbnMuCiBT
dHJpbmcgbWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5k
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91
Y2ggSUQgZm9yIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2Ug
VG91Y2ggSUQgdG8gc2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZp
Y2UiKSwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtlIHRvIHVzZSBUb3VjaCBJRCBmb3Ig
4oCcJUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRvIHVzZSBUb3VjaCBJRCB0
byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSBvbiB0aGlzIGRldmljZSIpLCBidW5k
bGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIH0KIAogU3RyaW5nIGdldEFzc2VydGlvblRvdWNoSURQcm9tcHRUaXRsZShjb25zdCBT
dHJpbmcmIGJ1bmRsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCLigJwlQOKAnSB3b3VsZCBsaWtl
IHRvIHNpZ24gaW4gdG8g4oCcJUDigJ0uIiwgIkFsbG93IHRoZSBzcGVjaWZpZWQgYnVuZGxlIHRv
IHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRlIiksIGJ1bmRsZU5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0g
d291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVk
IGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIpLCBidW5kbGVOYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IH0KIAogU3RyaW5nIGdlbmVyaWNUb3VjaElEUHJvbXB0VGl0bGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IGQ4NTZhMGQ3MGJjOTBlZDRmMGE2NDEw
M2QyNzgxNjJiNGQyMjJiMTguLjI3YzY0NGJmZDM2MTQzZmQyYjE5NzczN2ZlNTRjODY1OWMwOTEw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzI5LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCisjaWZkZWYgX19PQkpDX18KKyNpbmNsdWRlIDx3dGYvY29jb2EvVHlwZUNhc3RzQ29j
b2EuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdF
KQogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjZW5kaWYKQEAgLTM4OCwxNyArMzkyLDM2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgVVNFKENGKQotLy8gVGhpcyBp
cyBleGFjdGx5IGFzIFdFQl9VSV9TVFJJTkcsIGJ1dCByZW5hbWVkIHRvIGVuc3VyZSB0aGUgc3Ry
aW5nIGlzIG5vdCBzY2FubmVkIGJ5IG5vbi1DRiBwb3J0cy4KKyNkZWZpbmUgV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkRm9ybWF0U3Ry
aW5nKHN0cmluZykKKyNlbGlmIFVTRShHTElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkK
KyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgKF8oc3Ry
aW5nKSkKKyNlbHNlCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3Jp
cHRpb24pIChzdHJpbmcpCisjZW5kaWYKKworI2lmIFVTRShDRikKICNkZWZpbmUgV0VCX1VJX0NG
U1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJp
bmcpCiAjZGVmaW5lIFdFQl9VSV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9u
KSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NG
U1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZEZvcm1hdFN0cmlu
ZyhzdHJpbmcpCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkRm9ybWF0U3RyaW5nKGtleSkKKyAgICBD
RlN0cmluZ1JlZiBsb2NhbGl6ZWRGb3JtYXRTdHJpbmcoY29uc3QgY2hhcioga2V5KSBDRl9GT1JN
QVRfQVJHVU1FTlQoMSkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKKyAgICBXRUJDT1JFX0VYUE9SVCBD
RlN0cmluZ1JlZiBsb2NhbGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYga2V5KSBDRl9SRVRVUk5TX1JF
VEFJTkVEOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3Ry
aW5nKGNvbnN0IGNoYXIqIGtleSk7Ci0gICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhT
dHJpbmcgZm9ybWF0LCAuLi4pOworCisjaWYgVVNFKENGKQorICAgIFN0cmluZyBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoQ0ZTdHJpbmdSZWYgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgZm9ybWF0LCAuLi4p
IENGX0ZPUk1BVF9GVU5DVElPTigxLCAyKTsKKyNlbHNlCisgICAgU3RyaW5nIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYo
MSwgMik7CisjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCiAjZGVmaW5lIFdFQl9VSV9OU1NUUklO
RyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyhzdHJpbmcp
Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5n
ICprZXkpIE5TX0ZPUk1BVF9BUkdVTUVOVCgxKTsKKyAgICBpbmxpbmUgTlNfRk9STUFUX0FSR1VN
RU5UKDEpIE5TU3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGFkb3B0Q0YobG9jYWxpemVkU3RyaW5nKGJyaWRn
ZV9jYXN0KGtleSkpKS5hdXRvcmVsZWFzZSgpKTsKKyAgICB9CiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmluZGV4IGZjMzZiZmNhMjVmMDMwYjlmODI5YzI0YjVi
OTVlZjI2ZDJhNGEwZjMuLjQyMTZkNDlhMDU2MWUwOTZiMDQ5MmY0NzcxMzc2Zjc1YmM1YTQ1ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmlu
Z3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNSwyNCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLU5TU3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5KQotewotI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNwYXRjaCBx
dWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KLSAgICAvLyBTZWUgTG9hZFdl
YkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotI2VuZGlmCi0KLSAgICBzdGF0aWMgTlNCdW5kbGUgKmJ1bmRs
ZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07
Ci0gICAgcmV0dXJuIFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5OmtleSB2YWx1ZTpAImxv
Y2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIiB0YWJsZTpudWxscHRyXTsKLX0KLQotU3RyaW5nIGxv
Y2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHko
MCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBy
ZXR1cm4gbG9jYWxpemVkTlNTdHJpbmcoKF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdl
dCgpKTsKLX0KLQogU3RyaW5nIGNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKQogewogICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsKQEAgLTc5
LDcgKzYxLDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkK
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQogewogICAgIGF1dG8gc2VhcmNo
UHJvdmlkZXJOYW1lID0gUEFMOjpkZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSgpOwot
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiU2VhcmNoIHdp
dGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOwor
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi
U2VhcmNoIHdpdGggJUAiLCAiU2VhcmNoIHdpdGggc2VhcmNoIHByb3ZpZGVyIGNvbnRleHQgbWVu
dSBpdGVtIHdpdGggcHJvdmlkZXIgbmFtZSBpbnNlcnRlZCIpLCBzZWFyY2hQcm92aWRlck5hbWUu
Z2V0KCkpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKQEAgLTIz
Myw3ICsyMTUsNyBAQCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdl
bktleWNoYWluSXRlbU5hbWUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBr
ZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
Rk9STUFUX0NGU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBnZW5l
cmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNDUsNyArMjI3LDcgQEAgU3RyaW5n
IGh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKHNpemVfdCBjb3VudCkKICAgICBjYXNlIDE6CiAgICAg
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCIxIEl0ZW0iLCAiUHJlc2VudCB0aGUgZWxlbWVudCA8
c2VsZWN0IG11bHRpcGxlPiB3aGVuIGEgc2luZ2xlIDxvcHRpb24+IGlzIHNlbGVjdGVkIChpT1Mg
b25seSkiKTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIiV6dSBJdGVtcyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Ygc2Vs
ZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChpT1Mg
b25seSkiKSwgY291bnQpOworICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiV6dSBJdGVtcyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Yg
c2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChp
T1Mgb25seSkiKSwgY291bnQpOwogICAgIH0KIH0KIApAQCAtMjc4LDcgKzI2MCw3IEBAIFN0cmlu
ZyBmb3JtQ29udHJvbERvbmVCdXR0b25UaXRsZSgpCiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVRvb0xvbmdUZXh0KGludCwgaW50IG1heExlbmd0aCkKIHsKLSAgICByZXR1cm4gW05TU3RyaW5n
IGxvY2FsaXplZFN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiVXNlIG5vIG1vcmUg
dGhhbiAlZCBjaGFyYWN0ZXIocykiLCBAIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250
cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxl
bmd0aCIpLCBtYXhMZW5ndGhdOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX0ZPUk1BVF9DRlNUUklORygiVXNlIG5vIG1vcmUgdGhhbiAlZCBjaGFyYWN0ZXIocykiLCAi
VmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVl
IHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CiB9CiAK
ICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggMWU3OWUxMDg0N2Q3MGRjYTU0ZjE5MjM5MWM4
MTQ1OWMyM2U2YzY4Mi4uYjkzODcxNDY2NTNhYWQzZDkyYzA2YjBiNDQzZTdhNGM4YmQwMDhlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywzNiArMjcsMTAgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhh
bmRsZS5oIgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKENGKQotI2lu
Y2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1
bmRsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0YpCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNo
YXIqIGtleSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc3RhdGljIENG
U3RyaW5nUmVmIG5vdEZvdW5kID0gQ0ZTVFIoImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIik7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0
ID0gYWRvcHRDRihDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleVN0cmlu
Zy5nZXQoKSwgMCwgd2ViS2l0QnVuZGxlKCksIG5vdEZvdW5kLCAwKSk7Ci0gICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShyZXN1bHQuZ2V0KCkgIT0gbm90Rm91bmQsICJjb3VsZCBub3QgZmluZCBsb2Nh
bGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKLQotICAgIHJldHVybiByZXN1bHQu
Z2V0KCk7Ci19Ci0jZW5kaWYKLQogU3RyaW5nIHVwbG9hZEZpbGVUZXh0KCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0KaW5kZXggOWU2NTY5ZjdhYzcx
NDExOGRkMGJmMzZjMWM5OWYyZjM3NmJlNTEyNi4uN2RkOGE5MDg3NGFjNjVkNjAxY2RmYzJmMDc0
N2QxZGI1MDVkN2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxMSBA
QAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5TU3RyaW5nICpXZWJMb2NhbGl6ZWRT
dHJpbmdJbnRlcm5hbChjb25zdCBjaGFyKiBrZXkpCiB7Ci0gICAgcmV0dXJuIGxvY2FsaXplZFN0
cmluZyhrZXkpOworICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhDU3RyaW5nTm9Db3B5KDAsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0
b3JOdWxsKSk7CisgICAgcmV0dXJuIGxvY2FsaXplZE5TU3RyaW5nKGJyaWRnZV9jYXN0KGtleVN0
cmluZy5nZXQoKSkpOwogfQo=
</data>
<flag name="review"
          id="468256"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445106</attachid>
            <date>2021-11-24 12:59:57 -0800</date>
            <delta_ts>2021-11-24 14:26:38 -0800</delta_ts>
            <desc>Patch v9 for landing</desc>
            <filename>bug-232686-20211124125956.patch</filename>
            <type>text/plain</type>
            <size>46288</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFjNzllNTI1MDFiNDU1
ZDk1ZjhkMzMwZTM3NGJkMzFjMzNhOWRiNi4uZGE5Mjk3MGM0NjNjZWNjMWZjOTVhNTgwN2QxNDM3
ZjRhYTY5YmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0xMS0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0aGUg
Y29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgcGxh
Y2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAgICBw
b3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBvYmpl
Y3RzIG9yCisgICAgICAgIGNvbnN0IGNoYXIqIEMtc3RyaW5ncyB0byBhY2NvbXBsaXNoIHRoaXMg
d2l0aCBDb3JlRm91bmRhdGlvbgorICAgICAgICBtYWNyb3MuICBOb24tQXBwbGUgcGxhdGZvcm1z
IGNvbnRpbnVlIHRvIHVzZSBjb25zdCBjaGFyKiBmb3IKKyAgICAgICAgZm9ybWF0IHN0cmluZ3Mg
dG8gYWxsb3cgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIGZvcm1hdCBzdHJpbmdzLgorCisgICAgICAg
IFRvIHRoaXMgZW5kIGxvY2FsaXplZCBzdHJpbmdzIHBhc3NlZCB0byBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoKQorICAgICAgICBtdXN0IHVzZSBhIFdFQl9VSV9GT1JNQVRfKigpIG1hY3JvIG9uIGFs
bCBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvCisgICAgICAgIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEg
Y29tcGlsZXIgZXJyb3IsIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVAorICAgICAgICBtYWNyb3Mg
cmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0
ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNp
bmcgV0VCX1VJX05TU1RSSU5HKCkvbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhlCisg
ICAgICAgIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92
ZXMgdGhlIG5lZWQgdG8KKyAgICAgICAgY29udmVydCBmcm9tIENGL05TU3RyaW5nIC0+IFdURjo6
U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvcgorICAgICAgICBsb2NhbGl6ZWQgZm9ybWF0IHN0cmlu
Z3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbDoK
KyAgICAgICAgKGlzRm9ybWF0TWFjcm8pOiBBZGQuCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9y
IHBhcnNpbmcgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zIHdpdGggdmFyaWFkaWMKKyAgICAgICAg
ICBwYXJhbWV0ZXIgbGlzdHM6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Ny
b3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAg
ICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3Ry
aW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9y
IEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9y
IG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZv
cm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlv
bnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZUJ1bmRs
ZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdldHRpbmcgYSBDRkJ1bmRsZVJl
ZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRvIGEgZnVuY3Rpb24gdGhhdCdz
IHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlMb2NhbGl6ZWRTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gVGhpcyBtZXRob2Qgd2FzIGNv
bnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW0gYW5kIGZyb20gbG9jYWxpemVkU3RyaW5nKCkgaW4KKyAgICAgICAgICBM
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
ZyhDRlN0cmluZ1JlZikpOiBBZGQuCisgICAgICAgIC0gQXZvaWRzIHJ1bnRpbWUgY3JlYXRpb24g
b2YgQ0ZTdHJpbmdSZWYgb24gbm9uLVdpbmRvd3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisgICAg
ICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciopKToKKyAgICAgICAgLSBD
b2RlIGZvciBVU0UoQ0YpIHdhcyBjb252ZXJ0ZWQgZnJvbSB0aGUgc2FtZSBtZXRob2QgaW4KKyAg
ICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0sIGJ1dCBvbmx5IHVzZWQgb24gV2luZG93
cyBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1l
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9y
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjphZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRl
eHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJh
Y2tLaW5kU0RIU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5
UmVhZGVyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3Vm
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAg
ICAgLSBVc2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9y
bWF0CisgICAgICAgICAgc3RyaW5ncywgYW5kIHVzZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HW19L
RVldKCkgZm9yIEFwcGxlCisgICAgICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisg
ICAgICAgIC0gTWFrZSBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSBhbiBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWwgb2YKKyAgICAgICAgICBXRUJfVUlfRk9STUFUX1tDRl1TVFJJTkcoKSBtYWNyb3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlf
U1RSSU5HKTogQWRkLgorICAgICAgICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAg
IChXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMpOiBBZGQuCisgICAgICAgIChXRUJfVUlfQ0ZT
VFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfQ0ZTVFJJTkdfS0VZKTogQWRkLgorICAgICAg
ICAtIEFkZCBVU0UoQ0YpLXNwZWNpZmljIG1hY3JvcyB0byBhdm9pZCBDRlN0cmluZ1JlZiBhbGxv
Y2F0aW9ucworICAgICAgICAgIGF0IHJ1bnRpbWUuICBUaGUgQXBwbGUgV2luZG93cyBwb3J0IGNh
biBub3QgdXNlIHRoZXNlIGJlY2F1c2UKKyAgICAgICAgICBpdCB1c2VzIGEgZGVmYXVsdCBlbmNv
ZGluZyBvZiBNYWMgUm9tYW4gZm9yIENGU1RSKCkuCisgICAgICAgIChXRUJfVUlfRk9STUFUX1NU
UklORyk6IEFkZC4KKyAgICAgICAgLSBDcm9zcy1wbGF0Zm9ybSBtYWNybyBmb3IgVUkgZm9ybWF0
IHN0cmluZ3MuCisgICAgICAgIC0gTm90ZSB0aGF0IG5vbi1VU0UoQ0YpIG1hY3JvcyBlc3NlbnRp
YWxseSBkbyBub3RoaW5nIHNpbmNlCisgICAgICAgICAgbG9jYWxpemVkU3RyaW5nKCkganVzdCBj
b252ZXJ0cyBjb25zdCBjaGFyKiB0byBXVEY6OlN0cmluZworICAgICAgICAgICh3aGljaCB3YXMg
cHJldmlvdXNseSBjb252ZXJ0ZWQgYmFjayB0byBjb25zdCBjaGFyKiksIGFuZAorICAgICAgICAg
IGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtlcyBhIGNvbnN0IGNoYXIqLgorICAgICAg
ICAoV0VCX1VJX0ZPUk1BVF9DRlNUUklORyk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKTogQWRkLgorICAgICAgICAtIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBhcyBm
b3JtYXQgc3RyaW5nIGFyZ3VtZW50cyB0bworICAgICAgICAgIGZvcm1hdExvY2FsaXplZFN0cmlu
ZygpLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkRm9ybWF0U3RyaW5nKTogQWRkLgorICAg
ICAgICAtIERlY2xhcmUgYSBuZXcgZnVuY3Rpb24gZm9yIFVTRShDRikgdGhhdCBpcyBwYXNzZWQg
dG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZikpOiBBZGQuCisgICAgICAgIC0gRGVjbGFyZSBh
IG5ldyBmdW5jdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2VzIGEgQ0ZTdHJpbmdSZWYKKyAgICAg
ICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZFN0cmluZyk6
CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdSZWYgZm9ybWF0YCBmb3IgVVNFKENG
KSBwbGF0Zm9ybXMKKyAgICAgICAgICAoZXhjZXB0IFdpbmRvd3MpLCBhbmQgYGNvbnN0IGNoYXIq
IGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3JtcworICAgICAgICAgIHNvIGZvcm1hdCBtYWNyb3Mg
bWF5IGJlIGFkZGVkIHRvIHRoZSBkZWxhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxp
emVkTlNTdHJpbmcpOgorICAgICAgICAtIFJlLWltcGxlbWVudCBhcyBhbiBpbmxpbmUgZnVuY3Rp
b24gdXNpbmcgbG9jYWxpemVkU3RyaW5nKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9M
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWROU1N0
cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmguCisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92
ZWQgdG8gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAoV2ViQ29yZTo6a2V5Z2VuS2V5Y2hhaW5JdGVt
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyk6CisgICAg
ICAgIC0gU3dpdGNoIGZyb20gV0VCX1VJX1NUUklORygpIHRvIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcoKSBkdWUgdG8KKyAgICAgICAgICB0aGUgbmV3IHJ1bGUgZm9yIGxvY2FsaXplZCBmb3JtYXQg
c3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQp
OgorICAgICAgICAtIFN3aXRjaCBmcm9tICtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpdIGFu
ZAorICAgICAgICAgIFdFQl9VSV9OU1NUUklORygpIHRvIFdlYkNvcmU6OmZvcm1hdExvY2FsaXpl
ZFN0cmluZygpIGFuZAorICAgICAgICAgIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoKSBmb3IgY29u
c2lzdGVuY3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBEZWxldGUuCisgICAgICAg
IC0gTW92ZWQgdG8gbG9jYWxpemVkU3RyaW5nKCkgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisK
IDIwMjEtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEZhY3RvciBjaGlsZCBjaGFuZ2UgaW52YWxpZGF0aW9uIGludG8gY2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDYxYWRjZDkzYzk0MTM3NWI2YTIzMzlk
NzAyNmExMDAwODU1OWQyM2IuLjliMDkyM2EyYTYzNTFiNjFmOTdjYWMyYWUzZjJmOTg4Zjk0MDQ2
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1h
dCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjMyNjg2PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ5OTQzNDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKGFkZF9jdXN0b21fY29tbWFuZDogeGdldHRleHQpOgorICAgICAgICAtIEFkZCBXRUJfVUlf
Rk9STUFUX1NUUklORyB0byBsaXN0IG9mIG1hY3JvcyBjb250YWluaW5nCisgICAgICAgICAgbG9j
YWxpemFibGUgc3RyaW5ncy4KKwogMjAyMS0wOS0xMyAgUGlvdHIgRHLEhWcgIDxwaW90cmRyYWdA
Z21haWwuY29tPgogCiAgICAgICAgIFtHVEtdW2wxMG5dIFVwZGF0ZWQgUG9saXNoIHRyYW5zbGF0
aW9uIG9mIFdlYktpdEdUSyBmb3IgMi4zNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDZlNzFhZDM4MmUyN2M4MzBhNTI1YWQ5NTBmMzMzZjQ5YTJlMTVjY2MuLjUwMWQ1MDFhYjM4MDE3
ZjFkOGY5ZTgxYzliZWZkYzJkN2Y2ZjE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2Fs
aXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbToKKyAgICAgICAgKFdlYkxvY2FsaXplZFN0cmluZ0lu
dGVybmFsKToKKyAgICAgICAgLSBVc2UgbG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0ZWFkIG9mIGxv
Y2FsaXplZFN0cmluZygpIHRvCisgICAgICAgICAgZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNvbnZl
cnQgZnJvbQorICAgICAgICAgIENGU3RyaW5nIC0+IFN0cmluZyAtPiBOU1N0cmluZy4KKwogMjAy
MS0xMS0xNiAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5n
cy5wbCBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdz
LnBsCmluZGV4IGQ5MzM5MDFjNWZhMGNmYzRhMWM4Y2NlZTJjNWEwOTA1ZmM4MWQ5YTkuLmM5N2I5
NDg2YzJkNGYzNTk5NTg5MWRjNjcwYWY0MTU0Nzg4MWU5M2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCkBAIC0xLDYg
KzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE4LDYgKzExOCw4IEBAIGZvciBteSAkZGly
IChAZGlyZWN0b3JpZXNUb1NraXApIHsKIAogbXkgQGZpbGVzID0gKCBzcGxpdCAiXG4iLCBgZmlu
ZCAkcXVvdGVkRGlyZWN0b3JpZXNTdHJpbmcgXFwoIC1uYW1lICIqLmgiIC1vIC1uYW1lICIqLm0i
IC1vIC1uYW1lICIqLm1tIiAtbyAtbmFtZSAiKi5jIiAtbyAtbmFtZSAiKi5jcHAiIFxcKWAgKTsK
IAorc3ViIGlzRm9ybWF0TWFjcm8oJCkgeyByZXR1cm4gKCRfWzBdID1+IC8oV0VCXyk/VUlfRk9S
TUFUXy8pOyB9CisKIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBuZXh0IGlmICRm
aWxlID1+IC9cL1x3K0xvY2FsaXphYmxlU3RyaW5nc1x3KlwuaCQvIHx8ICRmaWxlID1+IC9cL0xv
Y2FsaXplZFN0cmluZ3NcLmgkLzsKIApAQCAtMTMzLDYgKzEzNSw3IEBAIGZvciBteSAkZmlsZSAo
c29ydCBAZmlsZXMpIHsKICAgICBteSAkVUlTdHJpbmc7CiAgICAgbXkgJGtleTsKICAgICBteSAk
Y29tbWVudDsKKyAgICBteSAkaXNGb3JtYXQ7CiAgICAgbXkgJG1uZW1vbmljOwogICAgIAogICAg
IG15ICRzdHJpbmc7CkBAIC0xODYsMTIgKzE4OSwxNCBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAg
ICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNy
byA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VC
Xyk/VUlfKEZPUk1BVF8pPyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRG
LTggaGVyZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOworICAgICAg
ICAgICAgICAgICAgICAgICAgJGlzRm9ybWF0ID0gaXNGb3JtYXRNYWNybygkbWFjcm8pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgoJG1hY3JvID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykgYW5k
ICFkZWZpbmVkICRtbmVtb25pYykgewogICAgICAgICAgICAgICAgICAgICAgICAgJG1uZW1vbmlj
ID0gJHN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpc0Zvcm1hdCA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzaWYgKCFkZWZpbmVkICRjb21tZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAj
IEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwpAQCAtMjQxLDExICsyNDYsMTEgQEAgaGFuZGxl
U3RyaW5nOgogICAgICAgICAgICAgICAgICAgICAkXyA9ICIiOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRleHBlY3RlZCBhbmQg
JGV4cGVjdGVkIG5lICR0b2tlbikgeworICAgICAgICAgICAgICAgIGlmICgoISRpc0Zvcm1hdCBh
bmQgJGV4cGVjdGVkIGFuZCAkZXhwZWN0ZWQgbmUgJHRva2VuKSBvciAoJGlzRm9ybWF0IGFuZCAk
ZXhwZWN0ZWQgZXEgIikiIGFuZCAkdG9rZW4gbmUgIiwiKSkgewogICAgICAgICAgICAgICAgICAg
ICBlbWl0RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0
ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJ
TkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9OU1NUUklORyQv
KSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhGT1JNQVRfKT8oQ0YpP1NUUklO
RyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05TU1RSSU5HJC8p
IHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSkgewogICAgICAg
ICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAgICAgICAgICAgICRtYWNy
byA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gdW5kZWY7CkBAIC0y
NTMsNiArMjU4LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAgICAkY29tbWVu
dCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAkbW5lbW9uaWMgPSB1bmRlZjsKICAgICAg
ICAgICAgICAgICAgICAgJG1hY3JvTGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICAkaXNG
b3JtYXQgPSBpc0Zvcm1hdE1hY3JvKCR0b2tlbik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JHRva2VuIGVxICIoIiBvciAkdG9rZW4gZXEgIlsiKSB7CiAgICAgICAgICAgICAgICAgICAgICsr
JG5lc3RpbmdMZXZlbCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7CiAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggMTE3M2VmNmExYjI4
NzM4ZjEwMTEwYWIwYzczODlhZWFmNTg0MWM2NC4uY2Y1ZDBlMDI2Y2RmODMzNzIyZTUxY2FjMGJj
YzdmMTM0YTYyNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjZW5kaWYKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDMsMjQgKzQ2LDM4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNv
bmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVuY2UKLS8vIHR5
cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQu
Ci1TdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKKyNpZiBV
U0UoQ0YpICYmICFQTEFURk9STShXSU4pCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENG
U3RyaW5nUmVmIGZvcm1hdCwgLi4uKQogewotI2lmIFVTRShDRikKICAgICB2YV9saXN0IGFyZ3Vt
ZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAgICBBTExPV19OT05M
SVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0VORAorICAg
IGF1dG8gbG9jYWxpemVkRm9ybWF0ID0gY29weUxvY2FsaXplZFN0cmluZyhmb3JtYXQpOworQUxM
T1dfTk9OTElURVJBTF9GT1JNQVRfQkVHSU4KKyAgICAvLyBUaGUgJ2Zvcm1hdCcgcGFyYW1ldGVy
IGlzIGFscmVhZHkgY2hlY2tlZCBmb3IgY29ycmVjdCBwbGFjZWhvbGRlcnMgYW5kIHBhcmFtZXRl
cnMuCisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFu
ZEFyZ3VtZW50cygwLCAwLCBsb2NhbGl6ZWRGb3JtYXQuZ2V0KCksIGFyZ3VtZW50cykpOworQUxM
T1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAKKyAgICB2YV9lbmQoYXJndW1lbnRzKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmdldCgpOworfQorI2Vsc2UKKy8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNl
ZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVm
ZXJlbmNlCisvLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4x
OTA1IHN0YW5kYXJkLgorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikKK3sKKyNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKKyAgICBhdXRvIGNm
Rm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KG51bGxwdHIs
IGZvcm1hdCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
dmFfbGlzdCBhcmd1bWVudHM7CisgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOworICAg
IGF1dG8gbG9jYWxpemVkRm9ybWF0ID0gY29weUxvY2FsaXplZFN0cmluZyhjZkZvcm1hdC5nZXQo
KSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFu
ZEFyZ3VtZW50cygwLCAwLCBsb2NhbGl6ZWRGb3JtYXQuZ2V0KCksIGFyZ3VtZW50cykpOwogICAg
IHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiAjZWxpZiBVU0Uo
R0xJQikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZv
cm1hdCk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVwX3ZwcmludGYoZm9y
bWF0LnV0ZjgoKS5kYXRhKCksIGFyZ3VtZW50cykpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJl
c3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdCwgYXJndW1lbnRzKSk7CiAgICAgdmFfZW5kKGFy
Z3VtZW50cyk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVzdWx0LmdldCgpKTsKICNl
bHNlCkBAIC02OCwxNCArODUsNjIgQEAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJp
bmcgZm9ybWF0LCAuLi4pCiAgICAgcmV0dXJuIGZvcm1hdDsKICNlbmRpZgogfQorI2VuZGlmCiAK
LSNpZiAhVVNFKENGKQorI2lmIFVTRShDRikKKyNpZiAhUExBVEZPUk0oV0lOKQorc3RhdGljIENG
QnVuZGxlUmVmIHdlYkNvcmVCdW5kbGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVu
dGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViQ29yZSIpKTsKKyAgICBBU1NFUlQoYnVuZGxlLmdl
dCgpKTsKKyAgICByZXR1cm4gYnVuZGxlLmdldCgpLmdldCgpOworfQorI2VuZGlmCiAKK1JldGFp
blB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpCit7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhIGRp
c3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgorICAgIC8vIFNl
ZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+Lgor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOworCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIENGQnVuZGxlUmVmIGJ1bmRsZSA9IHdlYktpdEJ1bmRsZSgp
OworI2Vsc2UKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJDb3JlQnVuZGxlKCk7CisjZW5k
aWYKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5TG9jYWxpemVkU3RyaW5n
KGJ1bmRsZSwga2V5LCBub3RGb3VuZCwgbnVsbHB0cikpOworCisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBpZiAocmVzdWx0LmdldCgpID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNoYXIga2V5Q1N0
cmluZ1syNTZdOworICAgICAgICBDRlN0cmluZ0dldENTdHJpbmcoa2V5LCBrZXlDU3RyaW5nLCBz
aXplb2Yoa2V5Q1N0cmluZyksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5vdEZvdW5kLCAiQ291bGQgbm90IGZpbmQg
bG9jYWxpemFibGUgc3RyaW5nICclcycgaW4gYnVuZGxlIiwga2V5Q1N0cmluZyk7CisgICAgfQor
I2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpICYm
ICFQTEFURk9STShXSU4pCitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtleSkK
K3sKKyAgICByZXR1cm4gY29weUxvY2FsaXplZFN0cmluZyhrZXkpLmdldCgpOworfQorI2Vsc2UK
IFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogeworI2lmIFVTRShDRikK
KyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05v
Q29weShudWxscHRyLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgIHJldHVybiBjb3B5TG9jYWxpemVkU3RyaW5nKGtleVN0cmluZy5nZXQoKSkuZ2V0
KCk7CisjZWxzZQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkp
OworI2VuZGlmCiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0y
MzMsOSArMjk4LDkgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRv
IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0
cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVu
dSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAg
ICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29r
IFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIsIHNlbGVjdGVkQ0ZTdHJp
bmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVt
KHNlbGVjdGVkU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3
aXRoIHNlbGVjdGVkIHdvcmQiLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0
cmluZykudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJM
b29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdG
b3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwogI2VuZGlmCkBAIC0yNDYsNyArMzExLDcgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcm
IHNlbGVjdGVkU3RyaW5nKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZShjb25z
dCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogICAgIGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9
IHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJU
cmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0ZSBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsK
IH0KIAogI2VuZGlmCkBAIC04MjQsNyArODg5LDcgQEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4
dCgpCiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmls
ZXMpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
ZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVk
IGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBu
dW1iZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVkIGZpbGVz
IiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBm
aWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiwgbnVtYmVyT2ZG
aWxlcyk7CiB9CiAKIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKQEAgLTg0NiwxMSArOTEx
LDExIEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgYXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBhdXRvIGhlaWdodFN0cmluZyA9
IGFkb3B0Q0YoQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1h
dHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwg
aGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi
JUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIsIGZpbGVuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vs
aWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIFdFQl9V
SV9GT1JNQVRfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBz
dGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiwgZmls
ZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICNlbHNl
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8ZmlsZW5h
bWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2Ug
KHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOworICAgIHJldHVybiBX
RUJfVUlfRk9STUFUX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+
IiwgZmlsZW5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTk3MiwxMiArMTAzNywxMiBAQCBTdHJpbmcg
bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKICAgICBzZWNvbmRzICU9
IDYwOwogCiAgICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQg
c2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0
aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAg
ICAgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAl
MyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBt
ZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiLCBkYXlzLCBob3VycywgbWludXRl
cywgc2Vjb25kcyk7CiAgICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vj
b25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1l
IHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAg
ICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUz
JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxl
ciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CiAg
ICAgaWYgKG1pbnV0ZXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwg
bWludXRlcywgc2Vjb25kcyk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CisgICAg
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25k
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZh
bHVlID49IDYwIHNlY29uZHMiLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBm
b3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIsIHNlY29uZHMpOwog
fQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKQEAgLTEwMzgs
MTMgKzExMDMsMTMgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4
dCgpCiAjaWYgIVBMQVRGT1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb1Nob3J0
VGV4dChpbnQsIGludCBtaW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0
aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRl
ciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAgICByZXR1cm4g
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9y
dGVyIHRoYW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIsIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQs
IGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhh
biBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CisgICAgcmV0dXJuIFdFQl9V
SV9GT1JNQVRfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0
ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiwgbWF4TGVuZ3RoKTsKIH0KICNlbmRpZgog
I2VuZGlmCkBAIC0xMDUyLDkgKzExMTcsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29M
b25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVtKQogewogI2lmIFVTRShDRikKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVz
dCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZv
ciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmlt
dW0iKSwgbWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
JUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFs
dWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAl
cyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1
ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX1NUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNv
bnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iLCBtaW5pbXVtLnV0
ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWluaW11bSk7CiAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWlu
aW11bSIpOwpAQCAtMTA2NCw5ICsxMTI5LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4aW11bSkKIHsKICNpZiBV
U0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkco
IlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93
ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVy
biBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iLCBtYXhpbXVtLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0
byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2
YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBj
b250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIsIG1heGltdW0u
dXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXhpbXVtKTsKICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBt
YXhpbXVtIik7CkBAIC0xMTA5LDcgKzExNzQsNyBAQCBTdHJpbmcgdGV4dFRyYWNrQXV0b21hdGlj
TWVudUl0ZW1UZXh0KCkKIAogU3RyaW5nIGFkZFRyYWNrTGFiZWxBc1N1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlv
L3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9y
bSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
bGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1
ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJl
bCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExh
YmVsKScuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3Bs
YXlOYW1lKCkKQEAgLTExMjEsNyArMTE4Niw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2xv
c2VkQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3Bs
YXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJ
TkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDQyIs
ICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENDJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAog
U3RyaW5nIHRleHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExMzMsNyArMTE5
OCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5n
JiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRU
cmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBDYXB0aW9ucyAo
dGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRo
YXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2Fw
dGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VC
X1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0
IHRyYWNrKSIsICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBp
bmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9u
cycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJh
Y2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTE0NSw3ICsxMjEwLDcgQEAgU3Ry
aW5nIGFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tp
bmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0
aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1l
IGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdF
bmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwg
IiVAIERlc2NyaXB0aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgp
CkBAIC0xMTU3LDcgKzEyMjIsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMi
LCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJhY2spIiwgIkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENoYXB0ZXJzJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFwdGVycyIsICIl
QCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ2hhcHRlcnMnKS4iLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQog
CiBTdHJpbmcgdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKQpAQCAtMTE2OSw3ICsx
MjM0LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4
dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIE1ldGFkYXRhIiwgIiVAIE1ldGFkYXRh
ICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBN
ZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBX
RUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEgKHRl
eHQgdHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1ldGFk
YXRhJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRU
cmFja0tpbmRTREhEaXNwbGF5TmFtZSgpCkBAIC0xMTgxLDcgKzEyNDYsNyBAQCBTdHJpbmcgYWRk
VGV4dFRyYWNrS2luZFNESFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3Ig
aGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwg
dGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9D
RlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwgIlNESCAoaS5lLiBk
ZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1h
dCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNo
IFNESCcpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0
VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1lKCkKQEAgLTExOTMsNyArMTI1OCw3IEBAIFN0
cmluZyBhZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2lu
ZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIg
KHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVA
IEVhc3kgUmVhZGVyIiwgIiVAIEVhc3kgUmVhZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRl
ciAoaS5lLiAzcmQtZ3JhZGUgbGV2ZWwpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVh
c3kgUmVhZGVyJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5n
IHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFtZSgpCkBAIC0xMjA1LDcgKzEyNzAsNyBAQCBT
dHJpbmcgYWRkVGV4dFRyYWNrS2luZEZvcmNlZFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7
CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEZv
cmNlZERpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJG
b3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxh
bmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiksIHRleHQuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdf
S0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5h
bWUoKQpAQCAtMTIxNyw3ICsxMjgyLDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kRGVzY3Jp
cHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjaykiLCAiRGVz
Y3JpcHRpb25zIGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4i
KSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKGF1ZGlv
IHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERl
c2NyaXB0aW9ucycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmlu
ZyBhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpCkBAIC0xMjI5LDcgKzEyOTQs
NyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRp
b1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21t
ZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ29tbWVudGFyeScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIl
QCBDb21tZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNw
bGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUg
KGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFyeScpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiB9CiAKICNlbmRpZiAvLyBVU0UoQ0YpCkBAIC0xMjU2LDkgKzEzMjEsOSBAQCBTdHJpbmcg
dXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51VGl0bGUoKQogU3RyaW5nIHdlYkNyeXB0b01hc3Rl
cktleUtleWNoYWluTGFiZWwoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUp
CiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9u
J3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFw
cGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBs
aWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIsIGxvY2Fs
aXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShH
TElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMg
V2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJD
cnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlcyBXZWJD
cnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0
byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0Zjgo
KS5kYXRhKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiPGFwcGxpY2F0aW9u
PiBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdl
YkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIikucmVwbGFjZSgiPGFwcGxpY2F0aW9uPiIs
IGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKQEAgLTEzMzIsMTIgKzEzOTcsMTIg
QEAgU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKIC8vIGluZm9ybWF0aW9uIGlz
IHByb3ZpZGVkIHRvIGhlbHAgdXNlcnMgdG8gbWFrZSBkZWNpc2lvbnMuCiBTdHJpbmcgbWFrZUNy
ZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25z
dCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91Y2ggSUQgZm9yIOKA
nCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2UgVG91Y2ggSUQgdG8g
c2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZpY2UiKSwgYnVuZGxl
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxp
a2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmllZCBi
dW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRl
IG9uIHRoaXMgZGV2aWNlIiwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21h
aW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZXRBc3NlcnRpb25Ub3Vj
aElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
Rygi4oCcJUDigJ0gd291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0
aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIp
LCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0g
d291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVk
IGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIsIGJ1bmRsZU5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
fQogCiBTdHJpbmcgZ2VuZXJpY1RvdWNoSURQcm9tcHRUaXRsZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggZDg1NmEwZDcwYmM5MGVkNGYwYTY0MTAz
ZDI3ODE2MmI0ZDIyMmIxOC4uYjBkYWU0YzUzZmNhNTUxOTM0N2ViNDQzNjExMDlhMzJkYmJiMjg1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2Nv
YS5oPgorI2VuZGlmCisKICNpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0Up
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNlbmRpZgpAQCAtMzc3LDExICszODEsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7CiAjZW5kaWYKIAotI2lmIFVTRShH
TElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9S
TShXSU4pCisjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdf
S0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENG
U1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyhzdHJpbmcsIG1u
ZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmlu
ZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjZGVmaW5l
IFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3Ry
aW5nKF8oc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRl
c2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ18oa2V5LCBzdHJpbmcpKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25pYywgZGVzY3Jp
cHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKG1uZW1vbmljKSkKICNlbHNlCisvLyBX
b3JrIGFyb3VuZCBkZWZhdWx0IE1hYyBSb21hbiBlbmNvZGluZyBvZiBDRlNUUigpIGZvciBBcHBs
ZSBXaW5kb3dzIHBvcnQuCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlv
bikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKHN0cmluZykKICNkZWZpbmUgV0VCX1VJX1NUUklO
R19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmco
a2V5KQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25p
YywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCkBAIC0zODks
MTYgKzM5OCw1MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoQ0YpCiAvLyBUaGlz
IGlzIGV4YWN0bHkgYXMgV0VCX1VJX1NUUklORywgYnV0IHJlbmFtZWQgdG8gZW5zdXJlIHRoZSBz
dHJpbmcgaXMgbm90IHNjYW5uZWQgYnkgbm9uLUNGIHBvcnRzLgorI2lmIFBMQVRGT1JNKFdJTikK
Ky8vIFdvcmsgYXJvdW5kIGRlZmF1bHQgTWFjIFJvbWFuIGVuY29kaW5nIG9mIENGU1RSKCkgZm9y
IEFwcGxlIFdpbmRvd3MgcG9ydC4KICNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCiAjZGVmaW5lIFdFQl9V
SV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmcoa2V5KQorI2Vsc2UKKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmlu
ZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKENGU1RSKGtleSkpCisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBr
ZXkpOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU4pCisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpOworI2Vsc2UK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtl
eSk7Ci0gICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4p
OworI2VuZGlmCisKKyNpZiBVU0UoQ0YpCisjaWYgUExBVEZPUk0oV0lOKQorLy8gV29yayBhcm91
bmQgZGVmYXVsdCBNYWMgUm9tYW4gZW5jb2Rpbmcgb2YgQ0ZTVFIoKSBmb3IgQXBwbGUgV2luZG93
cyBwb3J0LgorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRp
b24sIC4uLikgV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKHN0cmluZywgX19WQV9BUkdT
X18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNj
cmlwdGlvbiwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoa2V5LCBfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbiwg
Li4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoc3RyaW5nLCBfX1ZBX0FSR1NfXykK
KyNlbHNlCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlv
biwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoc3RyaW5nKSwgX19W
QV9BUkdTX18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbiwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIo
a2V5KSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywg
ZGVzY3JpcHRpb24sIC4uLikgV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU1RSKHN0
cmluZyksIF9fVkFfQVJHU19fKQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyNlbGlmIFVTRShH
TElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9T
VFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgKF8oc3RyaW5nKSkKKyNlbHNlCisjZGVmaW5lIFdF
Ql9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIChzdHJpbmcpCisjZW5kaWYK
KworI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTikKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxp
emVkU3RyaW5nKENGU3RyaW5nUmVmIGZvcm1hdCwgLi4uKSBDRl9GT1JNQVRfRlVOQ1RJT04oMSwg
Mik7CisjZWxzZQorICAgIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOworI2VuZGlmCiAKICNpZmRl
ZiBfX09CSkNfXwogI2RlZmluZSBXRUJfVUlfTlNTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikg
V2ViQ29yZTo6bG9jYWxpemVkTlNTdHJpbmcoc3RyaW5nKQotICAgIFdFQkNPUkVfRVhQT1JUIE5T
U3RyaW5nICpsb2NhbGl6ZWROU1N0cmluZyhOU1N0cmluZyAqa2V5KSBOU19GT1JNQVRfQVJHVU1F
TlQoMSk7CisgICAgaW5saW5lIE5TX0ZPUk1BVF9BUkdVTUVOVCgxKSBOU1N0cmluZyAqbG9jYWxp
emVkTlNTdHJpbmcoTlNTdHJpbmcgKmtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmlkZ2Vf
Y2FzdChjb3B5TG9jYWxpemVkU3RyaW5nKGJyaWRnZV9jYXN0KGtleSkpLmF1dG9yZWxlYXNlKCkp
OworICAgIH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KaW5k
ZXggZmMzNmJmY2EyNWYwMzBiOWY4MjljMjRiNWI5NWVmMjZkMmE0YTBmMy4uY2M2ZGZlMzBlYjg2
YmFhNzBhYjI4MWNjZjk3ODkwYmM5ZTBiNmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI0ICsz
NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTlNTdHJpbmcgKmxvY2FsaXplZE5TU3Ry
aW5nKE5TU3RyaW5nICprZXkpCi17Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8g
Q2FuIGJlIGNhbGxlZCBvbiBhIGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmlu
Z3Mgb24gaU9TLgotICAgIC8vIFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6
Ly9wcm9ibGVtLzc5MDI0NzM+LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jZW5kaWYK
LQotICAgIHN0YXRpYyBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVu
dGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKLSAgICByZXR1cm4gW2J1bmRsZSBsb2NhbGl6
ZWRTdHJpbmdGb3JLZXk6a2V5IHZhbHVlOkAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiIHRh
YmxlOm51bGxwdHJdOwotfQotCi1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtl
eSkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZygoX19i
cmlkZ2UgTlNTdHJpbmcgKilrZXlTdHJpbmcuZ2V0KCkpOwotfQotCiBTdHJpbmcgY29weUltYWdl
VW5rbm93bkZpbGVMYWJlbCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInVua25vd24i
LCAiVW5rbm93biBmaWxlbmFtZSIpOwpAQCAtNzksNyArNjEsNyBAQCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nl
YXJjaFdlYigpCiB7CiAgICAgYXV0byBzZWFyY2hQcm92aWRlck5hbWUgPSBQQUw6OmRlZmF1bHRT
ZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2gg
cHJvdmlkZXIgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiks
IHNlYXJjaFByb3ZpZGVyTmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZT
VFJJTkcoIlNlYXJjaCB3aXRoICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250
ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiLCBzZWFyY2hQcm92aWRl
ck5hbWUuZ2V0KCkpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkK
QEAgLTIzMyw3ICsyMTUsNyBAQCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5n
IGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFt
ZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkco
IktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZ
R0VOIHRhZyIsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMjQ1LDcgKzIyNyw3IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlw
bGVJdGVtcyhzaXplX3QgY291bnQpCiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJ
X1NUUklORygiMSBJdGVtIiwgIlByZXNlbnQgdGhlIGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4g
d2hlbiBhIHNpbmdsZSA8b3B0aW9uPiBpcyBzZWxlY3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5H
KCIlenUgSXRlbXMiLCAiUHJlc2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0
ZW1zIGluIGEgPHNlbGVjdCBtdWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsK
KyAgICAgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiV6dSBJdGVtcyIsICJQcmVz
ZW50IHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8c2VsZWN0IG11
bHRpcGxlPiBlbGVtZW50IChpT1Mgb25seSkiLCBjb3VudCk7CiAgICAgfQogfQogCkBAIC0yNzgs
NyArMjYwLDcgQEAgU3RyaW5nIGZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCkKIAogU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAg
IHJldHVybiBbTlNTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJ
TkcoQCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBt
YXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aF07CisgICAgcmV0dXJuIFdFQl9VSV9G
T1JNQVRfQ0ZTVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9y
dGVyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIsIG1heExlbmd0aCk7CiB9CiAKICNpZiBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8v
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ01ha2VMaXN0
cy50eHQKaW5kZXggZDAzMDFjMzQ4ODNjMTgzODY5ZWU0Yjg3YmMyNTRjNzAzZDNjMmJkYi4uMmQ1
Zjg0YzhjNjY4ZDg0NWRhMmFjNDExOWQ3Y2UyNjNmODczZTdlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9wby9DTWFrZUxpc3RzLnR4dApAQCAtMjUsNiArMjUsNyBAQCBhZGRf
Y3VzdG9tX2NvbW1hbmQoCiAgICAgICAgICAgICAtLXBhY2thZ2UtbmFtZT0id2Via2l0Z3RrIgog
ICAgICAgICAgICAgLS1rZXl3b3JkPV8KICAgICAgICAgICAgIC0ta2V5d29yZD1OXworICAgICAg
ICAgICAgLS1rZXl3b3JkPVdFQl9VSV9GT1JNQVRfU1RSSU5HOjEKICAgICAgICAgICAgIC0ta2V5
d29yZD1XRUJfVUlfU1RSSU5HOjEKICAgICAgICAgICAgIC0ta2V5d29yZD1XRUJfVUlfU1RSSU5H
X0tFWTozYywxCiAgICAgICAgICAgICAtLWtleXdvcmQ9V0VCX1VJX1NUUklOR19XSVRIX01ORU1P
TklDOjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRT
dHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAppbmRleCAxZTc5ZTEwODQ3ZDcwZGNhNTRmMTkyMzkxYzgxNDU5YzIzZTZjNjgy
Li5iOTM4NzE0NjY1M2FhZDNkOTJjMDZiMGI0NDNlN2E0YzhiZDAwOGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDM2
ICsyNywxMCBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCi0jaW5j
bHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSAiV2ViQ29y
ZUJ1bmRsZVdpbi5oIgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2lmIFVTRShDRikKLVN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90
Rm91bmQgPSBDRlNUUigibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKLQotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0
b3JOdWxsKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENG
Q29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCB3
ZWJLaXRCdW5kbGUoKSwgbm90Rm91bmQsIDApKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJl
c3VsdC5nZXQoKSAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmlu
ZyAlcyBpbiBidW5kbGUiLCBrZXkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLX0KLSNl
bmRpZgotCiBTdHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxl
U3RyaW5nc0ludGVybmFsLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbQppbmRleCA5ZTY1NjlmN2FjNzE0MTE4ZGQwYmYzNmMx
Yzk5ZjJmMzc2YmU1MTI2Li43ZGQ4YTkwODc0YWM2NWQ2MDFjZGZjMmYwNzQ3ZDFkYjUwNWQ3YjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxl
U3RyaW5nc0ludGVybmFsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJX
ZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogTlNTdHJpbmcgKldlYkxvY2FsaXplZFN0cmluZ0ludGVybmFs
KGNvbnN0IGNoYXIqIGtleSkKIHsKLSAgICByZXR1cm4gbG9jYWxpemVkU3RyaW5nKGtleSk7Cisg
ICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0Nv
cHkoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAg
ICByZXR1cm4gbG9jYWxpemVkTlNTdHJpbmcoYnJpZGdlX2Nhc3Qoa2V5U3RyaW5nLmdldCgpKSk7
CiB9Cg==
</data>
<flag name="commit-queue"
          id="470241"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445110</attachid>
            <date>2021-11-24 13:48:48 -0800</date>
            <delta_ts>2021-11-24 17:39:21 -0800</delta_ts>
            <desc>Patch v10 for landing</desc>
            <filename>bug-232686-20211124134847.patch</filename>
            <type>text/plain</type>
            <size>46384</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFjNzllNTI1MDFiNDU1
ZDk1ZjhkMzMwZTM3NGJkMzFjMzNhOWRiNi4uZGE5Mjk3MGM0NjNjZWNjMWZjOTVhNTgwN2QxNDM3
ZjRhYTY5YmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0xMS0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBhbGxvdyB0aGUg
Y29tcGlsZXIgdG8gY2hlY2sKKyAgICAgICAgZm9ybWF0IHN0cmluZ3MgdG8gZW5zdXJlIHRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIGFuZCB0eXBlIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgcGxh
Y2Vob2xkZXJzIGFyZSB1c2VkLiAgVGhlIGVwaXBoYW55IHRvIG1ha2UgdGhpcworICAgICAgICBw
b3NzaWJsZSB3YXMgdGhhdCBBcHBsZSBwbGF0Zm9ybXMgbWF5IHVzZSBDRlN0cmluZ1JlZiBvYmpl
Y3RzIG9yCisgICAgICAgIGNvbnN0IGNoYXIqIEMtc3RyaW5ncyB0byBhY2NvbXBsaXNoIHRoaXMg
d2l0aCBDb3JlRm91bmRhdGlvbgorICAgICAgICBtYWNyb3MuICBOb24tQXBwbGUgcGxhdGZvcm1z
IGNvbnRpbnVlIHRvIHVzZSBjb25zdCBjaGFyKiBmb3IKKyAgICAgICAgZm9ybWF0IHN0cmluZ3Mg
dG8gYWxsb3cgdGhlIGNvbXBpbGVyIHRvIGNoZWNrIGZvcm1hdCBzdHJpbmdzLgorCisgICAgICAg
IFRvIHRoaXMgZW5kIGxvY2FsaXplZCBzdHJpbmdzIHBhc3NlZCB0byBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoKQorICAgICAgICBtdXN0IHVzZSBhIFdFQl9VSV9GT1JNQVRfKigpIG1hY3JvIG9uIGFs
bCBwbGF0Zm9ybXMuICBGYWlsdXJlIHRvCisgICAgICAgIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEg
Y29tcGlsZXIgZXJyb3IsIHRob3VnaCwgc2luY2Ugbm9uLUZPUk1BVAorICAgICAgICBtYWNyb3Mg
cmV0dXJuIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0
ZXMgYXV0b3JlbGVhc2VkIE5TU3RyaW5nIG9iamVjdHMgZXhjZXB0CisgICAgICAgIHdoZW4gdXNp
bmcgV0VCX1VJX05TU1RSSU5HKCkvbG9jYWxpemVkTlNTdHJpbmcoKSBkaXJlY3RseSAodGhlCisg
ICAgICAgIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYXV0b3JlbGVhc2VkKSwgYW5kIGl0IHJlbW92
ZXMgdGhlIG5lZWQgdG8KKyAgICAgICAgY29udmVydCBmcm9tIENGL05TU3RyaW5nIC0+IFdURjo6
U3RyaW5nIC0+IENGL05TU3RyaW5nIGZvcgorICAgICAgICBsb2NhbGl6ZWQgZm9ybWF0IHN0cmlu
Z3MuCisKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbDoK
KyAgICAgICAgKGlzRm9ybWF0TWFjcm8pOiBBZGQuCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9y
IHBhcnNpbmcgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zIHdpdGggdmFyaWFkaWMKKyAgICAgICAg
ICBwYXJhbWV0ZXIgbGlzdHM6CisgICAgICAgICAgbyBXRUJfVUlfRk9STUFUX1NUUklORyAgW2Ny
b3NzLXBsYXRmb3JtXQorICAgICAgICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklORworICAgICAg
ICAgIG8gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkKKworICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3Ry
aW5nKToKKyAgICAgICAgLSBJbXBsZW1lbnQgdXNpbmcgYENGU3RyaW5nUmVmIGZvcm1hdGAgZm9y
IEFwcGxlIHBsYXRmb3JtcywgYnV0CisgICAgICAgICAgYGNvbnN0IGNoYXIqIGZvcm1hdGAgZm9y
IG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgLSBVc2Ugb2YgdGhlc2UgdHlwZXMgYWxsb3dzIGZv
cm1hdCBjaGVja2luZyBtYWNyb3MgdG8gYmUgYWRkZWQKKyAgICAgICAgICB0byBkZWNsYXJhdGlv
bnMgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgorICAgICAgICAoV2ViQ29yZTo6d2ViQ29yZUJ1bmRs
ZSk6IEFkZC4KKyAgICAgICAgLSBFeHRyYWN0IGNvZGUgZm9yIGdldHRpbmcgYSBDRkJ1bmRsZVJl
ZiBmb3IgV2ViQ29yZS5mcmFtZXdvcmsKKyAgICAgICAgICBpbnRvIGEgZnVuY3Rpb24gdGhhdCdz
IHNpbWlsYXIgdG8gd2ViS2l0QnVuZGxlKCkgb24gV2luZG93cy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlMb2NhbGl6ZWRTdHJpbmcpOiBBZGQuCisgICAgICAgIC0gVGhpcyBtZXRob2Qgd2FzIGNv
bnZlcnRlZCBmcm9tIGxvY2FsaXplZE5TU3RyaW5nKCkgaW4KKyAgICAgICAgICBMb2NhbGl6ZWRT
dHJpbmdzQ29jb2EubW0gYW5kIGZyb20gbG9jYWxpemVkU3RyaW5nKCkgaW4KKyAgICAgICAgICBM
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
ZyhDRlN0cmluZ1JlZikpOiBBZGQuCisgICAgICAgIC0gQXZvaWRzIHJ1bnRpbWUgY3JlYXRpb24g
b2YgQ0ZTdHJpbmdSZWYgb24gbm9uLVdpbmRvd3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisgICAg
ICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciopKToKKyAgICAgICAgLSBD
b2RlIGZvciBVU0UoQ0YpIHdhcyBjb252ZXJ0ZWQgZnJvbSB0aGUgc2FtZSBtZXRob2QgaW4KKyAg
ICAgICAgICBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0sIGJ1dCBvbmx5IHVzZWQgb24gV2luZG93
cyBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1l
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9y
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrTGFiZWxBc1N1ZmZpeCk6CisgICAgICAgIChXZWJD
b3JlOjphZGRUZXh0VHJhY2tLaW5kQ2xvc2VkQ2FwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVGV4dFRyYWNrS2luZENhcHRpb25zU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRl
eHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjphZGRUZXh0VHJh
Y2tLaW5kU0RIU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRFYXN5
UmVhZGVyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRUcmFja0tpbmRGb3JjZWRT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmREZXNjcmlwdGlvbnNT
dWZmaXgpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3Vm
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNyZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXNzZXJ0aW9uVG91Y2hJRFByb21wdFRpdGxlKToKKyAgICAg
ICAgLSBVc2UgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoKSBmb3IgY3Jvc3MtcGxhdGZvcm0gVUkgZm9y
bWF0CisgICAgICAgICAgc3RyaW5ncywgYW5kIHVzZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HW19L
RVldKCkgZm9yIEFwcGxlCisgICAgICAgICAgcGxhdGZvcm0gVUkgZm9ybWF0IHN0cmluZ3MuCisg
ICAgICAgIC0gTWFrZSBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKSBhbiBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWwgb2YKKyAgICAgICAgICBXRUJfVUlfRk9STUFUX1tDRl1TVFJJTkcoKSBtYWNyb3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAgICAgIChXRUJfVUlf
U1RSSU5HKTogQWRkLgorICAgICAgICAoV0VCX1VJX1NUUklOR19LRVkpOiBBZGQuCisgICAgICAg
IChXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMpOiBBZGQuCisgICAgICAgIChXRUJfVUlfQ0ZT
VFJJTkcpOiBBZGQuCisgICAgICAgIChXRUJfVUlfQ0ZTVFJJTkdfS0VZKTogQWRkLgorICAgICAg
ICAtIEFkZCBVU0UoQ0YpLXNwZWNpZmljIG1hY3JvcyB0byBhdm9pZCBDRlN0cmluZ1JlZiBhbGxv
Y2F0aW9ucworICAgICAgICAgIGF0IHJ1bnRpbWUuICBUaGUgQXBwbGUgV2luZG93cyBwb3J0IGNh
biBub3QgdXNlIHRoZXNlIGJlY2F1c2UKKyAgICAgICAgICBpdCB1c2VzIGEgZGVmYXVsdCBlbmNv
ZGluZyBvZiBNYWMgUm9tYW4gZm9yIENGU1RSKCkuCisgICAgICAgIChXRUJfVUlfRk9STUFUX1NU
UklORyk6IEFkZC4KKyAgICAgICAgLSBDcm9zcy1wbGF0Zm9ybSBtYWNybyBmb3IgVUkgZm9ybWF0
IHN0cmluZ3MuCisgICAgICAgIC0gTm90ZSB0aGF0IG5vbi1VU0UoQ0YpIG1hY3JvcyBlc3NlbnRp
YWxseSBkbyBub3RoaW5nIHNpbmNlCisgICAgICAgICAgbG9jYWxpemVkU3RyaW5nKCkganVzdCBj
b252ZXJ0cyBjb25zdCBjaGFyKiB0byBXVEY6OlN0cmluZworICAgICAgICAgICh3aGljaCB3YXMg
cHJldmlvdXNseSBjb252ZXJ0ZWQgYmFjayB0byBjb25zdCBjaGFyKiksIGFuZAorICAgICAgICAg
IGZvcm1hdExvY2FsaXplZFN0cmluZygpIG5vdyB0YWtlcyBhIGNvbnN0IGNoYXIqLgorICAgICAg
ICAoV0VCX1VJX0ZPUk1BVF9DRlNUUklORyk6IEFkZC4KKyAgICAgICAgKFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKTogQWRkLgorICAgICAgICAtIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBhcyBm
b3JtYXQgc3RyaW5nIGFyZ3VtZW50cyB0bworICAgICAgICAgIGZvcm1hdExvY2FsaXplZFN0cmlu
ZygpLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkRm9ybWF0U3RyaW5nKTogQWRkLgorICAg
ICAgICAtIERlY2xhcmUgYSBuZXcgZnVuY3Rpb24gZm9yIFVTRShDRikgdGhhdCBpcyBwYXNzZWQg
dG8KKyAgICAgICAgICBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZikpOiBBZGQuCisgICAgICAgIC0gRGVjbGFyZSBh
IG5ldyBmdW5jdGlvbiBmb3IgVVNFKENGKSB0aGF0IHRha2VzIGEgQ0ZTdHJpbmdSZWYKKyAgICAg
ICAgICBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZFN0cmluZyk6
CisgICAgICAgIC0gQ2hhbmdlIHRvIHVzZSBgQ0ZTdHJpbmdSZWYgZm9ybWF0YCBmb3IgVVNFKENG
KSBwbGF0Zm9ybXMKKyAgICAgICAgICAoZXhjZXB0IFdpbmRvd3MpLCBhbmQgYGNvbnN0IGNoYXIq
IGZvcm1hdGAgZm9yIG90aGVyIHBsYXRmb3JtcworICAgICAgICAgIHNvIGZvcm1hdCBtYWNyb3Mg
bWF5IGJlIGFkZGVkIHRvIHRoZSBkZWxhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxp
emVkTlNTdHJpbmcpOgorICAgICAgICAtIFJlLWltcGxlbWVudCBhcyBhbiBpbmxpbmUgZnVuY3Rp
b24gdXNpbmcgbG9jYWxpemVkU3RyaW5nKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9M
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWROU1N0
cmluZyk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlZCB0byBMb2NhbGl6ZWRTdHJpbmdzLmguCisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBEZWxldGUuCisgICAgICAgIC0gTW92
ZWQgdG8gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAoV2ViQ29yZTo6a2V5Z2VuS2V5Y2hhaW5JdGVt
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyk6CisgICAg
ICAgIC0gU3dpdGNoIGZyb20gV0VCX1VJX1NUUklORygpIHRvIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJ
TkcoKSBkdWUgdG8KKyAgICAgICAgICB0aGUgbmV3IHJ1bGUgZm9yIGxvY2FsaXplZCBmb3JtYXQg
c3RyaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQp
OgorICAgICAgICAtIFN3aXRjaCBmcm9tICtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpdIGFu
ZAorICAgICAgICAgIFdFQl9VSV9OU1NUUklORygpIHRvIFdlYkNvcmU6OmZvcm1hdExvY2FsaXpl
ZFN0cmluZygpIGFuZAorICAgICAgICAgIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoKSBmb3IgY29u
c2lzdGVuY3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcpOiBEZWxldGUuCisgICAgICAg
IC0gTW92ZWQgdG8gbG9jYWxpemVkU3RyaW5nKCkgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCisK
IDIwMjEtMTEtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEZhY3RvciBjaGlsZCBjaGFuZ2UgaW52YWxpZGF0aW9uIGludG8gY2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IDYxYWRjZDkzYzk0MTM3NWI2YTIzMzlk
NzAyNmExMDAwODU1OWQyM2IuLjliMDkyM2EyYTYzNTFiNjFmOTdjYWMyYWUzZjJmOTg4Zjk0MDQ2
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1h
dCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjMyNjg2PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ5OTQzNDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKGFkZF9jdXN0b21fY29tbWFuZDogeGdldHRleHQpOgorICAgICAgICAtIEFkZCBXRUJfVUlf
Rk9STUFUX1NUUklORyB0byBsaXN0IG9mIG1hY3JvcyBjb250YWluaW5nCisgICAgICAgICAgbG9j
YWxpemFibGUgc3RyaW5ncy4KKwogMjAyMS0wOS0xMyAgUGlvdHIgRHLEhWcgIDxwaW90cmRyYWdA
Z21haWwuY29tPgogCiAgICAgICAgIFtHVEtdW2wxMG5dIFVwZGF0ZWQgUG9saXNoIHRyYW5zbGF0
aW9uIG9mIFdlYktpdEdUSyBmb3IgMi4zNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDZlNzFhZDM4MmUyN2M4MzBhNTI1YWQ5NTBmMzMzZjQ5YTJlMTVjY2MuLjUwMWQ1MDFhYjM4MDE3
ZjFkOGY5ZTgxYzliZWZkYzJkN2Y2ZjE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGxvY2Fs
aXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIzMjY4Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTk0MzQ1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5tbToKKyAgICAgICAgKFdlYkxvY2FsaXplZFN0cmluZ0lu
dGVybmFsKToKKyAgICAgICAgLSBVc2UgbG9jYWxpemVkTlNTdHJpbmcoKSBpbnN0ZWFkIG9mIGxv
Y2FsaXplZFN0cmluZygpIHRvCisgICAgICAgICAgZWxpbWluYXRlIHRoZSBuZWVkIHRvIGNvbnZl
cnQgZnJvbQorICAgICAgICAgIENGU3RyaW5nIC0+IFN0cmluZyAtPiBOU1N0cmluZy4KKwogMjAy
MS0xMS0xNiAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5n
cy5wbCBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdz
LnBsCmluZGV4IGQ5MzM5MDFjNWZhMGNmYzRhMWM4Y2NlZTJjNWEwOTA1ZmM4MWQ5YTkuLmM5N2I5
NDg2YzJkNGYzNTk5NTg5MWRjNjcwYWY0MTU0Nzg4MWU5M2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCkBAIC0xLDYg
KzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcGVybAogCi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE4LDYgKzExOCw4IEBAIGZvciBteSAkZGly
IChAZGlyZWN0b3JpZXNUb1NraXApIHsKIAogbXkgQGZpbGVzID0gKCBzcGxpdCAiXG4iLCBgZmlu
ZCAkcXVvdGVkRGlyZWN0b3JpZXNTdHJpbmcgXFwoIC1uYW1lICIqLmgiIC1vIC1uYW1lICIqLm0i
IC1vIC1uYW1lICIqLm1tIiAtbyAtbmFtZSAiKi5jIiAtbyAtbmFtZSAiKi5jcHAiIFxcKWAgKTsK
IAorc3ViIGlzRm9ybWF0TWFjcm8oJCkgeyByZXR1cm4gKCRfWzBdID1+IC8oV0VCXyk/VUlfRk9S
TUFUXy8pOyB9CisKIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBuZXh0IGlmICRm
aWxlID1+IC9cL1x3K0xvY2FsaXphYmxlU3RyaW5nc1x3KlwuaCQvIHx8ICRmaWxlID1+IC9cL0xv
Y2FsaXplZFN0cmluZ3NcLmgkLzsKIApAQCAtMTMzLDYgKzEzNSw3IEBAIGZvciBteSAkZmlsZSAo
c29ydCBAZmlsZXMpIHsKICAgICBteSAkVUlTdHJpbmc7CiAgICAgbXkgJGtleTsKICAgICBteSAk
Y29tbWVudDsKKyAgICBteSAkaXNGb3JtYXQ7CiAgICAgbXkgJG1uZW1vbmljOwogICAgIAogICAg
IG15ICRzdHJpbmc7CkBAIC0xODYsMTIgKzE4OSwxNCBAQCBoYW5kbGVTdHJpbmc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwogICAgICAgICAg
ICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNy
byA9fiAvKFdFQl8pP1VJXyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8oV0VC
Xyk/VUlfKEZPUk1BVF8pPyhDRik/U1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmlu
ZWQgJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRG
LTggaGVyZT8KICAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOworICAgICAg
ICAgICAgICAgICAgICAgICAgJGlzRm9ybWF0ID0gaXNGb3JtYXRNYWNybygkbWFjcm8pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiwiOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgoJG1hY3JvID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykgYW5k
ICFkZWZpbmVkICRtbmVtb25pYykgewogICAgICAgICAgICAgICAgICAgICAgICAgJG1uZW1vbmlj
ID0gJHN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpc0Zvcm1hdCA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzaWYgKCFkZWZpbmVkICRjb21tZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAj
IEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwpAQCAtMjQxLDExICsyNDYsMTEgQEAgaGFuZGxl
U3RyaW5nOgogICAgICAgICAgICAgICAgICAgICAkXyA9ICIiOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRleHBlY3RlZCBhbmQg
JGV4cGVjdGVkIG5lICR0b2tlbikgeworICAgICAgICAgICAgICAgIGlmICgoISRpc0Zvcm1hdCBh
bmQgJGV4cGVjdGVkIGFuZCAkZXhwZWN0ZWQgbmUgJHRva2VuKSBvciAoJGlzRm9ybWF0IGFuZCAk
ZXhwZWN0ZWQgZXEgIikiIGFuZCAkdG9rZW4gbmUgIiwiKSkgewogICAgICAgICAgICAgICAgICAg
ICBlbWl0RXJyb3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0
ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlfKENGKT9TVFJJ
TkcoX0tFWSk/KF9JTlRFUk5BTCk/JC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9OU1NUUklORyQv
KSB8fCAoJHRva2VuID1+IC9XRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMkLykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJXyhGT1JNQVRfKT8oQ0YpP1NUUklO
RyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05TU1RSSU5HJC8p
IHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSkgewogICAgICAg
ICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKCI7CiAgICAgICAgICAgICAgICAgICAgICRtYWNy
byA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgJFVJU3RyaW5nID0gdW5kZWY7CkBAIC0y
NTMsNiArMjU4LDcgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAgICAkY29tbWVu
dCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAkbW5lbW9uaWMgPSB1bmRlZjsKICAgICAg
ICAgICAgICAgICAgICAgJG1hY3JvTGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICAkaXNG
b3JtYXQgPSBpc0Zvcm1hdE1hY3JvKCR0b2tlbik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JHRva2VuIGVxICIoIiBvciAkdG9rZW4gZXEgIlsiKSB7CiAgICAgICAgICAgICAgICAgICAgICsr
JG5lc3RpbmdMZXZlbCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7CiAgICAgICAgICAgICAgICAg
ICAgICRleHBlY3RlZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggMTE3M2VmNmExYjI4
NzM4ZjEwMTEwYWIwYzczODlhZWFmNTg0MWM2NC4uY2Y1ZDBlMDI2Y2RmODMzNzIyZTUxY2FjMGJj
YzdmMTM0YTYyNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgiCisjZW5kaWYKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtNDMsMjQgKzQ2LDM4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNv
bmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVuY2UKLS8vIHR5
cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQu
Ci1TdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKKyNpZiBV
U0UoQ0YpICYmICFQTEFURk9STShXSU4pCitTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENG
U3RyaW5nUmVmIGZvcm1hdCwgLi4uKQogewotI2lmIFVTRShDRikKICAgICB2YV9saXN0IGFyZ3Vt
ZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKLSAgICBBTExPV19OT05M
SVRFUkFMX0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFyZ3VtZW50cykpOwotICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0VORAorICAg
IGF1dG8gbG9jYWxpemVkRm9ybWF0ID0gY29weUxvY2FsaXplZFN0cmluZyhmb3JtYXQpOworQUxM
T1dfTk9OTElURVJBTF9GT1JNQVRfQkVHSU4KKyAgICAvLyBUaGUgJ2Zvcm1hdCcgcGFyYW1ldGVy
IGlzIGFscmVhZHkgY2hlY2tlZCBmb3IgY29ycmVjdCBwbGFjZWhvbGRlcnMgYW5kIHBhcmFtZXRl
cnMuCisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFu
ZEFyZ3VtZW50cygwLCAwLCBsb2NhbGl6ZWRGb3JtYXQuZ2V0KCksIGFyZ3VtZW50cykpOworQUxM
T1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAKKyAgICB2YV9lbmQoYXJndW1lbnRzKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmdldCgpOworfQorI2Vsc2UKKy8vIEJlY2F1c2UgfGZvcm1hdHwgaXMgdXNl
ZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVm
ZXJlbmNlCisvLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4x
OTA1IHN0YW5kYXJkLgorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikKK3sKKyNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKKyAgICBhdXRvIGNm
Rm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KG51bGxwdHIs
IGZvcm1hdCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
dmFfbGlzdCBhcmd1bWVudHM7CisgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOworICAg
IGF1dG8gbG9jYWxpemVkRm9ybWF0ID0gY29weUxvY2FsaXplZFN0cmluZyhjZkZvcm1hdC5nZXQo
KSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFu
ZEFyZ3VtZW50cygwLCAwLCBsb2NhbGl6ZWRGb3JtYXQuZ2V0KCksIGFyZ3VtZW50cykpOwogICAg
IHZhX2VuZChhcmd1bWVudHMpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiAjZWxpZiBVU0Uo
R0xJQikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZv
cm1hdCk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0KGdfc3RyZHVwX3ZwcmludGYoZm9y
bWF0LnV0ZjgoKS5kYXRhKCksIGFyZ3VtZW50cykpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJl
c3VsdChnX3N0cmR1cF92cHJpbnRmKGZvcm1hdCwgYXJndW1lbnRzKSk7CiAgICAgdmFfZW5kKGFy
Z3VtZW50cyk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVzdWx0LmdldCgpKTsKICNl
bHNlCkBAIC02OCwxNCArODUsNjIgQEAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJp
bmcgZm9ybWF0LCAuLi4pCiAgICAgcmV0dXJuIGZvcm1hdDsKICNlbmRpZgogfQorI2VuZGlmCiAK
LSNpZiAhVVNFKENGKQorI2lmIFVTRShDRikKKyNpZiAhUExBVEZPUk0oV0lOKQorc3RhdGljIENG
QnVuZGxlUmVmIHdlYkNvcmVCdW5kbGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVu
dGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViQ29yZSIpKTsKKyAgICBBU1NFUlQoYnVuZGxlLmdl
dCgpKTsKKyAgICByZXR1cm4gYnVuZGxlLmdldCgpLmdldCgpOworfQorI2VuZGlmCiAKK1JldGFp
blB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpCit7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhIGRp
c3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgorICAgIC8vIFNl
ZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+Lgor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBub3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOworCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIENGQnVuZGxlUmVmIGJ1bmRsZSA9IHdlYktpdEJ1bmRsZSgp
OworI2Vsc2UKKyAgICBDRkJ1bmRsZVJlZiBidW5kbGUgPSB3ZWJDb3JlQnVuZGxlKCk7CisjZW5k
aWYKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5TG9jYWxpemVkU3RyaW5n
KGJ1bmRsZSwga2V5LCBub3RGb3VuZCwgbnVsbHB0cikpOworCisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBpZiAocmVzdWx0LmdldCgpID09IG5vdEZvdW5kKSB7CisgICAgICAgIGNoYXIga2V5Q1N0
cmluZ1syNTZdOworICAgICAgICBDRlN0cmluZ0dldENTdHJpbmcoa2V5LCBrZXlDU3RyaW5nLCBz
aXplb2Yoa2V5Q1N0cmluZyksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0LmdldCgpICE9IG5vdEZvdW5kLCAiQ291bGQgbm90IGZpbmQg
bG9jYWxpemFibGUgc3RyaW5nICclcycgaW4gYnVuZGxlIiwga2V5Q1N0cmluZyk7CisgICAgfQor
I2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpICYm
ICFQTEFURk9STShXSU4pCitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKENGU3RyaW5nUmVmIGtleSkK
K3sKKyAgICByZXR1cm4gY29weUxvY2FsaXplZFN0cmluZyhrZXkpLmdldCgpOworfQorI2Vsc2UK
IFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogeworI2lmIFVTRShDRikK
KyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05v
Q29weShudWxscHRyLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOworICAgIHJldHVybiBjb3B5TG9jYWxpemVkU3RyaW5nKGtleVN0cmluZy5nZXQoKSkuZ2V0
KCk7CisjZWxzZQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkp
OworI2VuZGlmCiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0y
MzMsOSArMjk4LDkgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRv
IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0
cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVu
dSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAg
ICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29r
IFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIsIHNlbGVjdGVkQ0ZTdHJp
bmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVz4oCdIiwgIkxvb2sgVXAgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVt
KHNlbGVjdGVkU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1B
VF9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3
aXRoIHNlbGVjdGVkIHdvcmQiLCB0cnVuY2F0ZWRTdHJpbmdGb3JNZW51SXRlbShzZWxlY3RlZFN0
cmluZykudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJM
b29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdG
b3JNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwogI2VuZGlmCkBAIC0yNDYsNyArMzExLDcgQEAg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcm
IHNlbGVjdGVkU3RyaW5nKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZShjb25z
dCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogICAgIGF1dG8gc2VsZWN0ZWRDRlN0cmluZyA9
IHRydW5jYXRlZFN0cmluZ0Zvck1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCJU
cmFuc2xhdGUg4oCcJUDigJ0iLCAiVHJhbnNsYXRlIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiVHJhbnNsYXRlIOKAnCVA4oCdIiwgIlRyYW5zbGF0ZSBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsK
IH0KIAogI2VuZGlmCkBAIC04MjQsNyArODg5LDcgQEAgU3RyaW5nIHBsdWdpblRvb1NtYWxsVGV4
dCgpCiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmls
ZXMpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
ZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVk
IGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBu
dW1iZXJPZkZpbGVzKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiVkIGZpbGVz
IiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBm
aWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiwgbnVtYmVyT2ZG
aWxlcyk7CiB9CiAKIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKQEAgLTg0NiwxMSArOTEx
LDExIEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgYXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBhdXRvIGhlaWdodFN0cmluZyA9
IGFkb3B0Q0YoQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1h
dHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwg
aGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi
JUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIsIGZpbGVuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vs
aWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIFdFQl9V
SV9GT1JNQVRfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBz
dGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiwgZmls
ZW5hbWUudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICNlbHNl
Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8ZmlsZW5h
bWU+ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2Ug
KHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOworICAgIHJldHVybiBX
RUJfVUlfRk9STUFUX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5yZXBsYWNlKCI8ZmlsZW5hbWU+
IiwgZmlsZW5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTk3MiwxMiArMTAzNywxMiBAQCBTdHJpbmcg
bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKICAgICBzZWNvbmRzICU9
IDYwOwogCiAgICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQg
c2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0
aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAg
ICAgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAl
MyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBt
ZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiLCBkYXlzLCBob3VycywgbWludXRl
cywgc2Vjb25kcyk7CiAgICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vj
b25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1l
IHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgICAg
ICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUz
JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxl
ciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CiAg
ICAgaWYgKG1pbnV0ZXMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwg
bWludXRlcywgc2Vjb25kcyk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7CisgICAg
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX1NUUklORygiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25k
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZh
bHVlID49IDYwIHNlY29uZHMiLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBm
b3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIsIHNlY29uZHMpOwog
fQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKQEAgLTEwMzgs
MTMgKzExMDMsMTMgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4
dCgpCiAjaWYgIVBMQVRGT1JNKEdUSykKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb1Nob3J0
VGV4dChpbnQsIGludCBtaW5MZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJVc2UgYXQgbGVhc3QgJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0
aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRl
ciB0aGFuIG1pbmltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWluTGVuZ3RoKTsKKyAgICByZXR1cm4g
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVzZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9y
dGVyIHRoYW4gbWluaW11bSBhbGxvd2VkIGxlbmd0aCIsIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQs
IGludCBtYXhMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhh
biBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aCk7CisgICAgcmV0dXJuIFdFQl9V
SV9GT1JNQVRfU1RSSU5HKCJVc2Ugbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0
ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIiwgbWF4TGVuZ3RoKTsKIH0KICNlbmRpZgog
I2VuZGlmCkBAIC0xMDUyLDkgKzExMTcsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29M
b25nVGV4dChpbnQsIGludCBtYXhMZW5ndGgpCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVtKQogewogI2lmIFVTRShDRikKLSAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiVmFsdWUgbXVz
dCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZv
ciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmlt
dW0iKSwgbWluaW11bS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
JUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFs
dWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAl
cyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1
ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX1NUUklORygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gJXMiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNv
bnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iLCBtaW5pbXVtLnV0
ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWluaW11bSk7CiAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWlu
aW11bSIpOwpAQCAtMTA2NCw5ICsxMTI5LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFu
Z2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4aW11bSkKIHsKICNpZiBV
U0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkco
IlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwgIlZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93
ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVy
biBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iLCBtYXhpbXVtLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0
byAlcyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2
YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvICVzIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBj
b250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIsIG1heGltdW0u
dXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXhpbXVtKTsKICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBt
YXhpbXVtIik7CkBAIC0xMTA5LDcgKzExNzQsNyBAQCBTdHJpbmcgdGV4dFRyYWNrQXV0b21hdGlj
TWVudUl0ZW1UZXh0KCkKIAogU3RyaW5nIGFkZFRyYWNrTGFiZWxBc1N1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlv
L3RleHQgdHJhY2spIiwgIkF1ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYWJlbCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9y
bSBvZiAnTGFuZ3VhZ2UgKExhYmVsKScuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
bGFiZWwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRf
Q0ZTVFJJTkdfS0VZKCIlQCAoJUApIiwgIiVAICglQCkgKGF1ZGlvL3RleHQgdHJhY2spIiwgIkF1
ZGlvL1RleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYWJl
bCBhbmQgbGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrLCBpbiB0aGUgZm9ybSBvZiAnTGFuZ3VhZ2UgKExh
YmVsKScuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYWJlbC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3Bs
YXlOYW1lKCkKQEAgLTExMjEsNyArMTE4Niw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2xv
c2VkQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICh0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tpbmRDbG9zZWRDYXB0aW9uc0Rpc3Bs
YXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJ
TkdfS0VZKCIlQCBDQyIsICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRl
eHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBh
bmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIENDJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDQyIs
ICIlQCBDQyAodGV4dCB0cmFjaykiLCAiQ2xvc2VkIGNhcHRpb25zIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENDJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAog
U3RyaW5nIHRleHRUcmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCkKQEAgLTExMzMsNyArMTE5
OCw3IEBAIFN0cmluZyBhZGRUZXh0VHJhY2tLaW5kQ2FwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5n
JiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRU
cmFja0tpbmRDYXB0aW9uc0Rpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZKCIlQCBDYXB0aW9ucyIsICIlQCBDYXB0aW9ucyAo
dGV4dCB0cmFjaykiLCAiQ2FwdGlvbnMgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRo
YXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggQ2Fw
dGlvbnMnKS4iKSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VC
X1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVAIENhcHRpb25zIiwgIiVAIENhcHRpb25zICh0ZXh0
IHRyYWNrKSIsICJDYXB0aW9ucyB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBp
bmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBDYXB0aW9u
cycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJh
Y2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5hbWUoKQpAQCAtMTE0NSw3ICsxMjEwLDcgQEAgU3Ry
aW5nIGFkZFRleHRUcmFja0tpbmREZXNjcmlwdGlvbnNTdWZmaXgoY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRleHRUcmFja0tp
bmREZXNjcmlwdGlvbnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwgIiVAIERlc2NyaXB0
aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sgZGlzcGxheSBuYW1l
IGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdF
bmdsaXNoIERlc2NyaXB0aW9ucycpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgRGVzY3JpcHRpb25zIiwg
IiVAIERlc2NyaXB0aW9ucyAodGV4dCB0cmFjaykiLCAiRGVzY3JpcHRpb25zIHRleHQgdHJhY2sg
ZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9j
YWxlIChlLmcuICdFbmdsaXNoIERlc2NyaXB0aW9ucycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgp
CkBAIC0xMTU3LDcgKzEyMjIsNyBAQCBTdHJpbmcgYWRkVGV4dFRyYWNrS2luZENoYXB0ZXJzU3Vm
Zml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0VHJhY2tLaW5kQ2hhcHRlcnNEaXNwbGF5TmFtZSgpOwotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ2hhcHRlcnMi
LCAiJUAgQ2hhcHRlcnMgKHRleHQgdHJhY2spIiwgIkNoYXB0ZXJzIHRleHQgdHJhY2sgZGlzcGxh
eSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChl
LmcuICdFbmdsaXNoIENoYXB0ZXJzJykuIiksIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKCIlQCBDaGFwdGVycyIsICIl
QCBDaGFwdGVycyAodGV4dCB0cmFjaykiLCAiQ2hhcHRlcnMgdGV4dCB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ2hhcHRlcnMnKS4iLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQog
CiBTdHJpbmcgdGV4dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKQpAQCAtMTE2OSw3ICsx
MjM0LDcgQEAgU3RyaW5nIGFkZFRleHRUcmFja0tpbmRNZXRhZGF0YVN1ZmZpeChjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4
dFRyYWNrS2luZE1ldGFkYXRhRGlzcGxheU5hbWUoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxp
emVkU3RyaW5nKFdFQl9VSV9DRlNUUklOR19LRVkoIiVAIE1ldGFkYXRhIiwgIiVAIE1ldGFkYXRh
ICh0ZXh0IHRyYWNrKSIsICJNZXRhZGF0YSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQg
dGhhdCBpbmNsdWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBN
ZXRhZGF0YScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBX
RUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgTWV0YWRhdGEiLCAiJUAgTWV0YWRhdGEgKHRl
eHQgdHJhY2spIiwgIk1ldGFkYXRhIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0
IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIE1ldGFk
YXRhJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIHRleHRU
cmFja0tpbmRTREhEaXNwbGF5TmFtZSgpCkBAIC0xMTgxLDcgKzEyNDYsNyBAQCBTdHJpbmcgYWRk
VGV4dFRyYWNrS2luZFNESFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKHRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZFNESERpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBTREgiLCAiJUAgU0RIICh0ZXh0IHRyYWNrKSIsICJTREggKGkuZS4gZGVhZiBhbmQvb3Ig
aGFyZCBvZiBoZWFyaW5nKSB0ZXh0IHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNs
dWRlcyB0aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBTREgnKS4iKSwg
dGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9D
RlNUUklOR19LRVkoIiVAIFNESCIsICIlQCBTREggKHRleHQgdHJhY2spIiwgIlNESCAoaS5lLiBk
ZWFmIGFuZC9vciBoYXJkIG9mIGhlYXJpbmcpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1h
dCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNo
IFNESCcpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyB0ZXh0
VHJhY2tLaW5kRWFzeVJlYWRlckRpc3BsYXlOYW1lKCkKQEAgLTExOTMsNyArMTI1OCw3IEBAIFN0
cmluZyBhZGRUZXh0VHJhY2tLaW5kRWFzeVJlYWRlclN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2lu
ZEVhc3lSZWFkZXJEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgRWFzeSBSZWFkZXIiLCAiJUAgRWFzeSBSZWFkZXIg
KHRleHQgdHJhY2spIiwgIkVhc3kgUmVhZGVyIChpLmUuIDNyZC1ncmFkZSBsZXZlbCkgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRWFzeSBSZWFkZXInKS4iKSwgdGV4dC5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklOR19LRVkoIiVA
IEVhc3kgUmVhZGVyIiwgIiVAIEVhc3kgUmVhZGVyICh0ZXh0IHRyYWNrKSIsICJFYXN5IFJlYWRl
ciAoaS5lLiAzcmQtZ3JhZGUgbGV2ZWwpIHRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIEVh
c3kgUmVhZGVyJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5n
IHRleHRUcmFja0tpbmRGb3JjZWREaXNwbGF5TmFtZSgpCkBAIC0xMjA1LDcgKzEyNzAsNyBAQCBT
dHJpbmcgYWRkVGV4dFRyYWNrS2luZEZvcmNlZFN1ZmZpeChjb25zdCBTdHJpbmcmIHRleHQpCiB7
CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dFRyYWNrS2luZEZv
cmNlZERpc3BsYXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfQ0ZTVFJJTkdfS0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJG
b3JjZWQgdGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxh
bmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiksIHRleHQuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdf
S0VZKCIlQCBGb3JjZWQiLCAiJUAgRm9yY2VkICh0ZXh0IHRyYWNrKSIsICJGb3JjZWQgdGV4dCB0
cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9v
ciBsb2NhbGUgKGUuZy4gJ0VuZ2xpc2ggRm9yY2VkJykuIiwgdGV4dC5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIH0KIAogU3RyaW5nIGF1ZGlvVHJhY2tLaW5kRGVzY3JpcHRpb25zRGlzcGxheU5h
bWUoKQpAQCAtMTIxNyw3ICsxMjgyLDcgQEAgU3RyaW5nIGFkZEF1ZGlvVHJhY2tLaW5kRGVzY3Jp
cHRpb25zU3VmZml4KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBhdWRpb1RyYWNrS2luZERlc2NyaXB0aW9uc0Rpc3BsYXlOYW1l
KCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkdfS0VZ
KCIlQCBEZXNjcmlwdGlvbnMiLCAiJUAgRGVzY3JpcHRpb25zIChhdWRpbyB0cmFjaykiLCAiRGVz
Y3JpcHRpb25zIGF1ZGlvIHRyYWNrIGRpc3BsYXkgbmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0
aGUgbGFuZ3VhZ2UgYW5kL29yIGxvY2FsZSAoZS5nLiAnRW5nbGlzaCBEZXNjcmlwdGlvbnMnKS4i
KSwgdGV4dC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1B
VF9DRlNUUklOR19LRVkoIiVAIERlc2NyaXB0aW9ucyIsICIlQCBEZXNjcmlwdGlvbnMgKGF1ZGlv
IHRyYWNrKSIsICJEZXNjcmlwdGlvbnMgYXVkaW8gdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0
aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBhbmQvb3IgbG9jYWxlIChlLmcuICdFbmdsaXNoIERl
c2NyaXB0aW9ucycpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmlu
ZyBhdWRpb1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpCkBAIC0xMjI5LDcgKzEyOTQs
NyBAQCBTdHJpbmcgYWRkQXVkaW9UcmFja0tpbmRDb21tZW50YXJ5U3VmZml4KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhdWRp
b1RyYWNrS2luZENvbW1lbnRhcnlEaXNwbGF5TmFtZSgpOwotICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIlQCBDb21t
ZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNwbGF5IG5h
bWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUgKGUuZy4g
J0VuZ2xpc2ggQ29tbWVudGFyeScpLiIpLCB0ZXh0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXRUJfVUlfRk9STUFUX0NGU1RSSU5HX0tFWSgiJUAgQ29tbWVudGFyeSIsICIl
QCBDb21tZW50YXJ5IChhdWRpbyB0cmFjaykiLCAiQ29tbWVudGFyeSBhdWRpbyB0cmFjayBkaXNw
bGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5jbHVkZXMgdGhlIGxhbmd1YWdlIGFuZC9vciBsb2NhbGUg
KGUuZy4gJ0VuZ2xpc2ggQ29tbWVudGFyeScpLiIsIHRleHQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiB9CiAKICNlbmRpZiAvLyBVU0UoQ0YpCkBAIC0xMjU2LDkgKzEzMjEsOSBAQCBTdHJpbmcg
dXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51VGl0bGUoKQogU3RyaW5nIHdlYkNyeXB0b01hc3Rl
cktleUtleWNoYWluTGFiZWwoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUp
CiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJ
X0NGU1RSSU5HKCIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9u
J3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFw
cGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJ
X0ZPUk1BVF9DRlNUUklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBs
aWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIsIGxvY2Fs
aXplZEFwcGxpY2F0aW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbGlmIFVTRShH
TElCKQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXMg
V2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJD
cnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfU1RSSU5HKCIlcyBXZWJD
cnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0
byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLnV0Zjgo
KS5kYXRhKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiPGFwcGxpY2F0aW9u
PiBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdl
YkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIikucmVwbGFjZSgiPGFwcGxpY2F0aW9uPiIs
IGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKQEAgLTEzMzIsMTIgKzEzOTcsMTIg
QEAgU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkKIC8vIGluZm9ybWF0aW9uIGlz
IHByb3ZpZGVkIHRvIGhlbHAgdXNlcnMgdG8gbWFrZSBkZWNpc2lvbnMuCiBTdHJpbmcgbWFrZUNy
ZWRlbnRpYWxUb3VjaElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25z
dCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9DRlNUUklORygi4oCcJUDigJ0gd291bGQgbGlrZSB0byB1c2UgVG91Y2ggSUQgZm9yIOKA
nCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byB1c2UgVG91Y2ggSUQgdG8g
c2lnbiBpbiB0byB0aGUgc3BlY2lmaWVkIHdlYnNpdGUgb24gdGhpcyBkZXZpY2UiKSwgYnVuZGxl
TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIuKAnCVA4oCdIHdvdWxkIGxp
a2UgdG8gdXNlIFRvdWNoIElEIGZvciDigJwlQOKAnS4iLCAiQWxsb3cgdGhlIHNwZWNpZmllZCBi
dW5kbGUgdG8gdXNlIFRvdWNoIElEIHRvIHNpZ24gaW4gdG8gdGhlIHNwZWNpZmllZCB3ZWJzaXRl
IG9uIHRoaXMgZGV2aWNlIiwgYnVuZGxlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkb21h
aW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBnZXRBc3NlcnRpb25Ub3Vj
aElEUHJvbXB0VGl0bGUoY29uc3QgU3RyaW5nJiBidW5kbGVOYW1lLCBjb25zdCBTdHJpbmcmIGRv
bWFpbikKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklO
Rygi4oCcJUDigJ0gd291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0
aGUgc3BlY2lmaWVkIGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIp
LCBidW5kbGVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICByZXR1cm4gV0VCX1VJX0ZPUk1BVF9DRlNUUklORygi4oCcJUDigJ0g
d291bGQgbGlrZSB0byBzaWduIGluIHRvIOKAnCVA4oCdLiIsICJBbGxvdyB0aGUgc3BlY2lmaWVk
IGJ1bmRsZSB0byBzaWduIGluIHRvIHRoZSBzcGVjaWZpZWQgd2Vic2l0ZSIsIGJ1bmRsZU5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
fQogCiBTdHJpbmcgZ2VuZXJpY1RvdWNoSURQcm9tcHRUaXRsZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggZDg1NmEwZDcwYmM5MGVkNGYwYTY0MTAz
ZDI3ODE2MmI0ZDIyMmIxOC4uNjUwYzcyODFmNjJkMDhjZWIwYTUzZWY3NDgzNTJiMzJjMGFlZTA1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKKyNpZmRlZiBfX09CSkNfXworI2luY2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2Nv
YS5oPgorI2VuZGlmCisKICNpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0Up
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNlbmRpZgpAQCAtMzc3LDExICszODEsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2xhdGUoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7CiAjZW5kaWYKIAotI2lmIFVTRShH
TElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9S
TShXSU4pCisjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmluZykpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdf
S0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENG
U1RSKGtleSkpCisjZGVmaW5lIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyhzdHJpbmcsIG1u
ZW1vbmljLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKENGU1RSKHN0cmlu
ZykpCisjZWxpZiBVU0UoR0xJQikgJiYgZGVmaW5lZChHRVRURVhUX1BBQ0tBR0UpCiAjZGVmaW5l
IFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3Ry
aW5nKF8oc3RyaW5nKSkKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRl
c2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoQ18oa2V5LCBzdHJpbmcpKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25pYywgZGVzY3Jp
cHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKG1uZW1vbmljKSkKICNlbHNlCisvLyBX
b3JrIGFyb3VuZCBkZWZhdWx0IE1hYyBSb21hbiBlbmNvZGluZyBvZiBDRlNUUigpIGZvciBBcHBs
ZSBXaW5kb3dzIHBvcnQuCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlv
bikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKHN0cmluZykKICNkZWZpbmUgV0VCX1VJX1NUUklO
R19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmco
a2V5KQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoc3RyaW5nLCBtbmVtb25p
YywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCkBAIC0zODks
MTYgKzM5OCw1MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoQ0YpCiAvLyBUaGlz
IGlzIGV4YWN0bHkgYXMgV0VCX1VJX1NUUklORywgYnV0IHJlbmFtZWQgdG8gZW5zdXJlIHRoZSBz
dHJpbmcgaXMgbm90IHNjYW5uZWQgYnkgbm9uLUNGIHBvcnRzLgorI2lmIFBMQVRGT1JNKFdJTikK
Ky8vIFdvcmsgYXJvdW5kIGRlZmF1bHQgTWFjIFJvbWFuIGVuY29kaW5nIG9mIENGU1RSKCkgZm9y
IEFwcGxlIFdpbmRvd3MgcG9ydC4KICNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCiAjZGVmaW5lIFdFQl9V
SV9DRlNUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6
ZWRTdHJpbmcoa2V5KQorI2Vsc2UKKyNkZWZpbmUgV0VCX1VJX0NGU1RSSU5HKHN0cmluZywgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhDRlNUUihzdHJpbmcpKQorI2RlZmlu
ZSBXRUJfVUlfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6
bG9jYWxpemVkU3RyaW5nKENGU1RSKGtleSkpCisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29weUxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBr
ZXkpOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU4pCisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhDRlN0cmluZ1JlZiBrZXkpOworI2Vsc2UK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtl
eSk7Ci0gICAgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4p
OworI2VuZGlmCisKKyNpZiBVU0UoQ0YpCisjaWYgUExBVEZPUk0oV0lOKQorLy8gV29yayBhcm91
bmQgZGVmYXVsdCBNYWMgUm9tYW4gZW5jb2Rpbmcgb2YgQ0ZTVFIoKSBmb3IgQXBwbGUgV2luZG93
cyBwb3J0LgorI2RlZmluZSBXRUJfVUlfRk9STUFUX0NGU1RSSU5HKHN0cmluZywgZGVzY3JpcHRp
b24sIC4uLikgV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKHN0cmluZywgX19WQV9BUkdT
X18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNj
cmlwdGlvbiwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoa2V5LCBfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbiwg
Li4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoc3RyaW5nLCBfX1ZBX0FSR1NfXykK
KyNlbHNlCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlv
biwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIoc3RyaW5nKSwgX19W
QV9BUkdTX18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkdfS0VZKHN0cmluZywga2V5
LCBkZXNjcmlwdGlvbiwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoQ0ZTVFIo
a2V5KSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdFQl9VSV9GT1JNQVRfU1RSSU5HKHN0cmluZywg
ZGVzY3JpcHRpb24sIC4uLikgV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU1RSKHN0
cmluZyksIF9fVkFfQVJHU19fKQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKyNlbGlmIFVTRShH
TElCKSAmJiBkZWZpbmVkKEdFVFRFWFRfUEFDS0FHRSkKKyNkZWZpbmUgV0VCX1VJX0ZPUk1BVF9T
VFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbiwgLi4uKSBXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoXyhzdHJpbmcpLCBfX1ZBX0FSR1NfXykKKyNlbHNlCisjZGVmaW5lIFdFQl9VSV9GT1JN
QVRfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24sIC4uLikgV2ViQ29yZTo6Zm9ybWF0TG9jYWxp
emVkU3RyaW5nKHN0cmluZywgX19WQV9BUkdTX18pCisjZW5kaWYKKworI2lmIFVTRShDRikgJiYg
IVBMQVRGT1JNKFdJTikKKyAgICBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKENGU3RyaW5n
UmVmIGZvcm1hdCwgLi4uKSBDRl9GT1JNQVRfRlVOQ1RJT04oMSwgMik7CisjZWxzZQorICAgIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDEsIDIpOworI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwogI2RlZmlu
ZSBXRUJfVUlfTlNTVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVk
TlNTdHJpbmcoc3RyaW5nKQotICAgIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpsb2NhbGl6ZWRO
U1N0cmluZyhOU1N0cmluZyAqa2V5KSBOU19GT1JNQVRfQVJHVU1FTlQoMSk7CisgICAgaW5saW5l
IE5TX0ZPUk1BVF9BUkdVTUVOVCgxKSBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJp
bmcgKmtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmlkZ2VfY2FzdChjb3B5TG9jYWxpemVk
U3RyaW5nKGJyaWRnZV9jYXN0KGtleSkpLmF1dG9yZWxlYXNlKCkpOworICAgIH0KICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KaW5kZXggZmMzNmJmY2EyNWYwMzBi
OWY4MjljMjRiNWI5NWVmMjZkMmE0YTBmMy4uY2M2ZGZlMzBlYjg2YmFhNzBhYjI4MWNjZjk3ODkw
YmM5ZTBiNmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9j
YWxpemVkU3RyaW5nc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI0ICszNSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTlNTdHJpbmcgKmxvY2FsaXplZE5TU3RyaW5nKE5TU3RyaW5nICprZXkp
Ci17Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
IGRpc3BhdGNoIHF1ZXVlIHdoZW4gaW5pdGlhbGl6aW5nIHN0cmluZ3Mgb24gaU9TLgotICAgIC8v
IFNlZSBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyBhbmQgPHJkYXI6Ly9wcm9ibGVtLzc5MDI0NzM+
LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBOU0J1
bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxl
LldlYkNvcmUiXTsKLSAgICByZXR1cm4gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6a2V5
IHZhbHVlOkAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiIHRhYmxlOm51bGxwdHJdOwotfQot
Ci1TdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0
cmluZ05vQ29weSgwLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVs
bCkpOwotICAgIHJldHVybiBsb2NhbGl6ZWROU1N0cmluZygoX19icmlkZ2UgTlNTdHJpbmcgKilr
ZXlTdHJpbmcuZ2V0KCkpOwotfQotCiBTdHJpbmcgY29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgp
CiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInVua25vd24iLCAiVW5rbm93biBmaWxlbmFt
ZSIpOwpAQCAtNzksNyArNjEsNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5T
cG90bGlnaHQoKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCiB7CiAgICAg
YXV0byBzZWFyY2hQcm92aWRlck5hbWUgPSBQQUw6OmRlZmF1bHRTZWFyY2hQcm92aWRlckRpc3Bs
YXlOYW1lKCk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5H
KCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIgY29udGV4dCBt
ZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFByb3ZpZGVyTmFt
ZS5nZXQoKSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlNlYXJjaCB3aXRo
ICVAIiwgIlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRo
IHByb3ZpZGVyIG5hbWUgaW5zZXJ0ZWQiLCBzZWFyY2hQcm92aWRlck5hbWUuZ2V0KCkpOwogfQog
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKQEAgLTIzMyw3ICsyMTUsNyBA
QCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRl
bU5hbWUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkg
Z2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIktleSBmcm9tICVAIiwgIk5h
bWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIsIGhvc3QuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
MjQ1LDcgKzIyNyw3IEBAIFN0cmluZyBodG1sU2VsZWN0TXVsdGlwbGVJdGVtcyhzaXplX3QgY291
bnQpCiAgICAgY2FzZSAxOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiMSBJdGVtIiwg
IlByZXNlbnQgdGhlIGVsZW1lbnQgPHNlbGVjdCBtdWx0aXBsZT4gd2hlbiBhIHNpbmdsZSA8b3B0
aW9uPiBpcyBzZWxlY3RlZCAoaU9TIG9ubHkpIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlenUgSXRlbXMiLCAiUHJl
c2VudCB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIDxvcHRpb24+IGl0ZW1zIGluIGEgPHNlbGVjdCBt
dWx0aXBsZT4gZWxlbWVudCAoaU9TIG9ubHkpIiksIGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFdF
Ql9VSV9GT1JNQVRfQ0ZTVFJJTkcoIiV6dSBJdGVtcyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Yg
c2VsZWN0ZWQgPG9wdGlvbj4gaXRlbXMgaW4gYSA8c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChp
T1Mgb25seSkiLCBjb3VudCk7CiAgICAgfQogfQogCkBAIC0yNzgsNyArMjYwLDcgQEAgU3RyaW5n
IGZvcm1Db250cm9sRG9uZUJ1dHRvblRpdGxlKCkKIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
VG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewotICAgIHJldHVybiBbTlNTdHJpbmcg
bG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJVc2Ugbm8gbW9yZSB0
aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVu
Z3RoIiksIG1heExlbmd0aF07CisgICAgcmV0dXJuIFdFQl9VSV9GT1JNQVRfQ0ZTVFJJTkcoIlVz
ZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVyKHMpIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
Zm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBzaG9ydGVyIHRoYW4gbWF4aW11bSBh
bGxvd2VkIGxlbmd0aCIsIG1heExlbmd0aCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ01ha2VMaXN0cy50eHQKaW5kZXggZDAzMDFj
MzQ4ODNjMTgzODY5ZWU0Yjg3YmMyNTRjNzAzZDNjMmJkYi4uMmQ1Zjg0YzhjNjY4ZDg0NWRhMmFj
NDExOWQ3Y2UyNjNmODczZTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL3BvL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9w
by9DTWFrZUxpc3RzLnR4dApAQCAtMjUsNiArMjUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAg
ICAgICAgICAgICAtLXBhY2thZ2UtbmFtZT0id2Via2l0Z3RrIgogICAgICAgICAgICAgLS1rZXl3
b3JkPV8KICAgICAgICAgICAgIC0ta2V5d29yZD1OXworICAgICAgICAgICAgLS1rZXl3b3JkPVdF
Ql9VSV9GT1JNQVRfU1RSSU5HOjEKICAgICAgICAgICAgIC0ta2V5d29yZD1XRUJfVUlfU1RSSU5H
OjEKICAgICAgICAgICAgIC0ta2V5d29yZD1XRUJfVUlfU1RSSU5HX0tFWTozYywxCiAgICAgICAg
ICAgICAtLWtleXdvcmQ9V0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDOjIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCAx
ZTc5ZTEwODQ3ZDcwZGNhNTRmMTkyMzkxYzgxNDU5YzIzZTZjNjgyLi5iOTM4NzE0NjY1M2FhZDNk
OTJjMDZiMGI0NDNlN2E0YzhiZDAwOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDM2ICsyNywxMCBAQAogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCi0jaW5jbHVkZSA8d2luZG93cy5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSAiV2ViQ29yZUJ1bmRsZVdpbi5oIgotI2lu
Y2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRikKLVN0cmlu
ZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0KLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigibG9j
YWxpemVkIHN0cmluZyBub3QgZm91bmQiKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
a2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEws
IGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGQ29weUxvY2FsaXplZFN0cmlu
Z1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCB3ZWJLaXRCdW5kbGUoKSwgbm90
Rm91bmQsIDApKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdC5nZXQoKSAhPSBub3RG
b3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBr
ZXkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKLX0KLSNlbmRpZgotCiBTdHJpbmcgdXBs
b2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRl
cm5hbC5tbQppbmRleCA5ZTY1NjlmN2FjNzE0MTE4ZGQwYmYzNmMxYzk5ZjJmMzc2YmU1MTI2Li43
ZGQ4YTkwODc0YWM2NWQ2MDFjZGZjMmYwNzQ3ZDFkYjUwNWQ3YjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5nc0ludGVybmFsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdz
SW50ZXJuYWwubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmlu
Z3NJbnRlcm5hbC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogTlNTdHJpbmcgKldlYkxvY2FsaXplZFN0cmluZ0ludGVybmFsKGNvbnN0IGNoYXIqIGtleSkK
IHsKLSAgICByZXR1cm4gbG9jYWxpemVkU3RyaW5nKGtleSk7CisgICAgYXV0byBrZXlTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoMCwga2V5LCBrQ0ZTdHJp
bmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICByZXR1cm4gbG9jYWxpemVk
TlNTdHJpbmcoYnJpZGdlX2Nhc3Qoa2V5U3RyaW5nLmdldCgpKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>