<?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>207119</bug_id>
          
          <creation_ts>2020-02-03 08:29:30 -0800</creation_ts>
          <short_desc>Enable offlineasm debug annotations for GCC</short_desc>
          <delta_ts>2020-04-09 06:16:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>209944</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Angelos Oikonomopoulos">angelos</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pmatos</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1613957</commentid>
    <comment_count>0</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-02-03 08:29:30 -0800</bug_when>
    <thetext>Enable offlineasm debug annotations for GCC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613961</commentid>
    <comment_count>1</comment_count>
      <attachid>389516</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-02-03 08:33:18 -0800</bug_when>
    <thetext>Created attachment 389516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613983</commentid>
    <comment_count>2</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-02-03 09:05:34 -0800</bug_when>
    <thetext>r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620134</commentid>
    <comment_count>3</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-02-18 07:25:29 -0800</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632891</commentid>
    <comment_count>4</comment_count>
      <attachid>394270</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-23 10:01:52 -0700</bug_when>
    <thetext>Created attachment 394270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632925</commentid>
    <comment_count>5</comment_count>
      <attachid>394270</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-23 10:47:10 -0700</bug_when>
    <thetext>Comment on attachment 394270
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:141
&gt; +option(GCC_OFFLINEASM_SOURCE_MAP
&gt; +  &quot;Produce debug line information for offlineasm-generated code&quot;)
&gt; +
&gt; +
&gt; +# Enable by default for Debug builds, allow the user to manually
&gt; +# request source mapping for Release builds.
&gt; +if (CMAKE_BUILD_TYPE STREQUAL &quot;Debug&quot;)
&gt; +  set(GCC_OFFLINEASM_SOURCE_MAP &quot;ON&quot;)
&gt; +endif ()

I wonder if we should enable this also by default also on RelWithDebugInfo builds? How much more extra megabytes causes it to grow the debug info on a release build if enabled?

The way you override the value in case of &quot;Debug&quot; build makes it impossible to manually disable it (on Debug builds)
Instead of doing that, I suggest to set a default value variable and use that variable as the default value for the cmake option.
Example:

set(GCC_OFFLINEASM_SOURCE_MAP_DEFAULT OFF)
if (CMAKE_BUILD_TYPE STREQUAL &quot;Debug&quot; OR CMAKE_BUILD_TYPE STREQUAL &quot;RelWithDebInfo&quot;)
  set(GCC_OFFLINEASM_SOURCE_MAP_DEFAULT ON)
endif()

option(GCC_OFFLINEASM_SOURCE_MAP
  &quot;Produce debug line information for offlineasm-generated code&quot;
  ${GCC_OFFLINEASM_SOURCE_MAP_DEFAULT})</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633274</commentid>
    <comment_count>6</comment_count>
      <attachid>394270</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 04:19:08 -0700</bug_when>
    <thetext>Comment on attachment 394270
Patch

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

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:141
&gt;&gt; +endif ()
&gt; 
&gt; I wonder if we should enable this also by default also on RelWithDebugInfo builds? How much more extra megabytes causes it to grow the debug info on a release build if enabled?
&gt; 
&gt; The way you override the value in case of &quot;Debug&quot; build makes it impossible to manually disable it (on Debug builds)
&gt; Instead of doing that, I suggest to set a default value variable and use that variable as the default value for the cmake option.
&gt; Example:
&gt; 
&gt; set(GCC_OFFLINEASM_SOURCE_MAP_DEFAULT OFF)
&gt; if (CMAKE_BUILD_TYPE STREQUAL &quot;Debug&quot; OR CMAKE_BUILD_TYPE STREQUAL &quot;RelWithDebInfo&quot;)
&gt;   set(GCC_OFFLINEASM_SOURCE_MAP_DEFAULT ON)
&gt; endif()
&gt; 
&gt; option(GCC_OFFLINEASM_SOURCE_MAP
&gt;   &quot;Produce debug line information for offlineasm-generated code&quot;
&gt;   ${GCC_OFFLINEASM_SOURCE_MAP_DEFAULT})

It should take much less than other kinds of debug info. I also think it should be moved to OptionsCommon.cmake near to DEBUG_FISSION (-gsplit-dwarf) code. AFAIK we have all option()s under Source/cmake and it would be surprising to find another one elsewhere.

BTW, can&apos;t it be worked around by forcing gcc to call llvm-as?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633281</commentid>
    <comment_count>7</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-24 05:15:23 -0700</bug_when>
    <thetext>Yah, enabling it for RelWithDebInfo is a good idea. The size increase is minimal, on X86_64 libJavaScriptCore.so goes from 796100296B to 796196048B, for an increase of 0.012%.

I don&apos;t expect one would need to disable this during normal development (e.g. can&apos;t do that under clang either) but the extra flexibility can&apos;t hurt!

OptionsCommon.cmake seems like a more appropriate location for the option, yah.

&gt; BTW, can&apos;t it be worked around by forcing gcc to call llvm-as?

AFAICT you can only set the the assembler GCC uses at configure time (such an option would make things easier for the approach in this patch too, as we wouldn&apos;t need to wrap the C++ compiler).

What&apos;s more, llvm-as may not be available in the build environment or it might not be straightforward to configure GCC to use it (one example might be when using a cross-compiling toolchain from a vendor).

Will try to update the patch with both your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633293</commentid>
    <comment_count>8</comment_count>
      <attachid>394363</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-24 07:16:42 -0700</bug_when>
    <thetext>Created attachment 394363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633323</commentid>
    <comment_count>9</comment_count>
      <attachid>394363</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 09:10:07 -0700</bug_when>
    <thetext>Comment on attachment 394363
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:149
&gt; +  set(CMAKE_CXX_COMPILER_LAUNCHER &quot;${JavaScriptCore_SCRIPTS_SOURCES_DIR}/cxx-wrapper&quot;)

This will conflict with ccache. Maybe append to ${CMAKE_CXX_COMPILER_LAUNCHER} ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633348</commentid>
    <comment_count>10</comment_count>
      <attachid>394363</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 09:33:50 -0700</bug_when>
    <thetext>Comment on attachment 394363
Patch

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

&gt; Source/WTF/wtf/Compiler.h:391
&gt; +#define MARKER_SYMBOL(name) void NO_REORDER name(void) { __asm__(&quot;&quot;); }

Shouldn&apos;t it be &quot;asm volatile&quot; (or &quot;__asm__ __volatile&quot;)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633371</commentid>
    <comment_count>11</comment_count>
      <attachid>394363</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 10:20:20 -0700</bug_when>
    <thetext>Comment on attachment 394363
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:156
&gt; +    PROPERTIES

We use 4 spaces for indentation

&gt; Source/JavaScriptCore/Scripts/cxx-wrapper:1
&gt; +#!/bin/sh

Script is missing license header

&gt; Source/JavaScriptCore/Scripts/cxx-wrapper:12
&gt; +	postprocess=1

We don&apos;t use tabs for indentation, when possible

&gt; Source/JavaScriptCore/Scripts/postprocess-asm:1
&gt; +#!/usr/bin/env ruby

Script is missing license header. Also I heard there were problems with /usr/bin/env shebangs in some distros

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:540
&gt; +#if defined(POSTPROCESS_ASM) &amp;&amp; COMPILER(GCC)

It should not be GCC-only, as binaries produced with Clang also need fix to be debuggable with gdb

&gt;&gt; Source/WTF/wtf/Compiler.h:391
&gt;&gt; +#define MARKER_SYMBOL(name) void NO_REORDER name(void) { __asm__(&quot;&quot;); }
&gt; 
&gt; Shouldn&apos;t it be &quot;asm volatile&quot; (or &quot;__asm__ __volatile&quot;)?

Nvm, I&apos;ve overloooked that it&apos;s a complete function definition here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633422</commentid>
    <comment_count>12</comment_count>
      <attachid>394363</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-24 12:27:22 -0700</bug_when>
    <thetext>Comment on attachment 394363
Patch

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

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:149
&gt;&gt; +  set(CMAKE_CXX_COMPILER_LAUNCHER &quot;${JavaScriptCore_SCRIPTS_SOURCES_DIR}/cxx-wrapper&quot;)
&gt; 
&gt; This will conflict with ccache. Maybe append to ${CMAKE_CXX_COMPILER_LAUNCHER} ?

Good point.
But i think it should prepend (not append). The shell script wrapper should execute before than ccache.
Otherwise ccache will think the shell script its the compiler and would cache the hash of the shell script instead of hashing the hash of the real compiler.

&gt;&gt; Source/JavaScriptCore/Scripts/postprocess-asm:1
&gt;&gt; +#!/usr/bin/env ruby
&gt; 
&gt; Script is missing license header. Also I heard there were problems with /usr/bin/env shebangs in some distros

That its a guideline fedora has for shipping executable scripts in fedora packages.
This is a build script, not part of what gets installed, so its ok.
See bug 208970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633584</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-24 15:37:02 -0700</bug_when>
    <thetext>How about using wrapped-GCC command only for LowLevelInterpreter.cpp and ensure LLIntAssembly.h is only included by this file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633620</commentid>
    <comment_count>14</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 16:01:34 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; How about using wrapped-GCC command only for LowLevelInterpreter.cpp and
&gt; ensure LLIntAssembly.h is only included by this file?

That&apos;s not trivial to do with cmake, though it should be possible to do if LowLevelInterpreter.cpp is segregated into its own build target (e.g. STATIC or OBJECT library). In this case it&apos;s possible to set CXX_COMPILER_LAUNCHER property on that target specifically, without affecting compilation of other files. It should also resolve concerns about ccache, as not caching compilation of one file is acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633641</commentid>
    <comment_count>15</comment_count>
      <attachid>394363</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-24 16:26:42 -0700</bug_when>
    <thetext>Comment on attachment 394363
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:149
&gt;&gt;&gt; +  set(CMAKE_CXX_COMPILER_LAUNCHER &quot;${JavaScriptCore_SCRIPTS_SOURCES_DIR}/cxx-wrapper&quot;)
&gt;&gt; 
&gt;&gt; This will conflict with ccache. Maybe append to ${CMAKE_CXX_COMPILER_LAUNCHER} ?
&gt; 
&gt; Good point.
&gt; But i think it should prepend (not append). The shell script wrapper should execute before than ccache.
&gt; Otherwise ccache will think the shell script its the compiler and would cache the hash of the shell script instead of hashing the hash of the real compiler.

Indeed. While actual compiler doesn&apos;t produce .o file here, ccache should still be able to cache generated assembly file.

&gt;&gt;&gt; Source/JavaScriptCore/Scripts/postprocess-asm:1
&gt;&gt;&gt; +#!/usr/bin/env ruby
&gt;&gt; 
&gt;&gt; Script is missing license header. Also I heard there were problems with /usr/bin/env shebangs in some distros
&gt; 
&gt; That its a guideline fedora has for shipping executable scripts in fedora packages.
&gt; This is a build script, not part of what gets installed, so its ok.
&gt; See bug 208970

Is generate generate-gtkdoc installed? I thought it was also build-only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633750</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-24 20:04:17 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #15)
&gt; &gt;&gt;&gt; Source/JavaScriptCore/Scripts/postprocess-asm:1
&gt; &gt;&gt;&gt; +#!/usr/bin/env ruby
&gt; &gt;&gt; 
&gt; &gt;&gt; Script is missing license header. Also I heard there were problems with /usr/bin/env shebangs in some distros
&gt; &gt; 
&gt; &gt; That its a guideline fedora has for shipping executable scripts in fedora packages.
&gt; &gt; This is a build script, not part of what gets installed, so its ok.
&gt; &gt; See bug 208970
&gt; 
&gt; Is generate generate-gtkdoc installed? I thought it was also build-only.

It is build-only. Check: https://bugs.webkit.org/show_bug.cgi?id=208970#c8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633922</commentid>
    <comment_count>17</comment_count>
      <attachid>394511</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-25 10:06:51 -0700</bug_when>
    <thetext>Created attachment 394511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633923</commentid>
    <comment_count>18</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-25 10:07:58 -0700</bug_when>
    <thetext>Thanks for the comments everyone!

Updated patch with the following changes:
- add a separate target for LowLevelInterpreter.cpp (so we only need to wrap one compiler invocation). Drop cxx-wrapper.
- prepend postprocess-asm to the target&apos;s RULE_LAUNCH_COMPILE property, so that we respect the ccache setting.
- add licence headers to the two remaining scripts.
- untabify CMakeLists.txt.
- unconditionally emit marker symbols around the top-level inline asm statement in LowLevelInterpreter.cpp, as this has nothing to do with the build toolchain and everything to do with the ability to debug using gdb. However, clang doesn&apos;t currently support __no_reorder__ so this is effectively a no-op.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633932</commentid>
    <comment_count>19</comment_count>
      <attachid>394515</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-25 10:24:43 -0700</bug_when>
    <thetext>Created attachment 394515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633933</commentid>
    <comment_count>20</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-25 10:25:47 -0700</bug_when>
    <thetext>(In reply to Angelos Oikonomopoulos from comment #18)

&gt; However, clang doesn&apos;t currently support __no_reorder__ so this is
&gt; effectively a no-op.

So this needs to be gated on COMPILER(GCC) still in LowLevelInterpreter.cpp. Patch updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633946</commentid>
    <comment_count>21</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-25 10:54:15 -0700</bug_when>
    <thetext>
(In reply to Angelos Oikonomopoulos from comment #18)
&gt; - unconditionally emit marker symbols around the top-level inline asm
&gt; statement in LowLevelInterpreter.cpp, as this has nothing to do with the
&gt; build toolchain and everything to do with the ability to debug using gdb.
&gt; However, clang doesn&apos;t currently support __no_reorder__ so this is
&gt; effectively a no-op.

Do I understand correctly that GDB just needs to have .cfi_startproc and .cfi_endproc here to start using following .file and .loc directives?

If so, we might want to emit minimal assembly stub here via asm volatile instead of inserting unused function body. I think it may express intention more clearly even for GCC case, and should work with Clang as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633949</commentid>
    <comment_count>22</comment_count>
      <attachid>394515</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-25 10:57:03 -0700</bug_when>
    <thetext>Comment on attachment 394515
Patch

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

&gt; Source/WTF/wtf/Compiler.h:391
&gt; +#define MARKER_SYMBOL(name) void NO_REORDER name(void) { __asm__(&quot;&quot;); }

Wouldn&apos;t it be enough to define NO_REORDER as empty for non-gcc? Yes clang will be able to move definition of marker, but maybe gdb can be satisfied by having entry point somewhere, not in exact location?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633952</commentid>
    <comment_count>23</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-25 11:00:37 -0700</bug_when>
    <thetext>Actually, it seems to me that cleaner solution would be to emit cfi directives in offlineasm instead of relying on MARKER_SYMBOL hacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634296</commentid>
    <comment_count>24</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-26 06:24:55 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #21)
&gt; (In reply to Angelos Oikonomopoulos from comment #18)
&gt; &gt; - unconditionally emit marker symbols around the top-level inline asm
&gt; &gt; statement in LowLevelInterpreter.cpp, as this has nothing to do with the
&gt; &gt; build toolchain and everything to do with the ability to debug using gdb.
&gt; &gt; However, clang doesn&apos;t currently support __no_reorder__ so this is
&gt; &gt; effectively a no-op.
&gt; 
&gt; Do I understand correctly that GDB just needs to have .cfi_startproc and
&gt; .cfi_endproc here to start using following .file and .loc directives?

As far as I understand, that&apos;s not the issue. The issue is that no DW_AT_{low,high}_pc (or even DW_AT_ranges) is generated for LowLevelInterpreter.cpp. Then, dwarf2_record_block_ranges won&apos;t record an address range for it (https://github.com/bminor/binutils-gdb/blob/master/gdb/dwarf2/read.c#L14021) and find_pc_sect_compunit_symtab will not be able to resolve any PC to this CU (https://github.com/bminor/binutils-gdb/blob/19a2740f7f2ea0f65745a3c00cf8a64647378aa3/gdb/symtab.c#L2911).

Not sure why the dwarf attributes are not generated. Testing on a simpler testcase, I can confirm that
- .cfi_{start,end}proc don&apos;t make a difference
- .type foo,@function doesn&apos;t help
- .func/.endfunc don&apos;t make a difference either
- turning off debug fission also doesn&apos;t help

I&apos;ve timed out looking into GDB internals.

&gt; If so, we might want to emit minimal assembly stub here via asm volatile
&gt; instead of inserting unused function body. I think it may express intention
&gt; more clearly even for GCC case, and should work with Clang as well.

Agreed, but this seems orthogonal to this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634327</commentid>
    <comment_count>25</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-26 07:38:01 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #22)
&gt; Wouldn&apos;t it be enough to define NO_REORDER as empty for non-gcc? Yes clang
&gt; will be able to move definition of marker, but maybe gdb can be satisfied by
&gt; having entry point somewhere, not in exact location?

I should add that this is a problem with GDB only. So, if one is using clang, they can hopefully use LLDB as well, which doesn&apos;t have any trouble finding the line information without the &quot;marker&quot; symbols.

(though of course that&apos;s not much help if one needs a feature that exists in GDB but not LLDB :/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634328</commentid>
    <comment_count>26</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-26 07:45:50 -0700</bug_when>
    <thetext>&gt;So, if one is using clang, they can hopefully use LLDB as well

It&apos;s not always the case that person building WebKit and using debugger are the same people, e.g. in case of binary distribution, but it&apos;s certainly easier to change debugger than compiler in that case :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634335</commentid>
    <comment_count>27</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-26 08:19:34 -0700</bug_when>
    <thetext>Right. The larger point remains that
- I don&apos;t see an easy fix for this when compiling with clang
- I don&apos;t see a solution for GDB other than having marker functions

Would gating these marker symbols on COMPILER(GDB) be acceptable as things are?
If not, would defining away MARKER_SYMBOL work when compiling with clang be preferable?

Any other suggestion welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634349</commentid>
    <comment_count>28</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-26 08:37:43 -0700</bug_when>
    <thetext>Minimal bug report submitted upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=25730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635501</commentid>
    <comment_count>29</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-30 07:41:22 -0700</bug_when>
    <thetext>So, to summarize:

- clang + gdb is currently a no-go. I don&apos;t see a workaround for this ATM, so this would need to be fixed upstream in GDB. Have opened an issue on their bugzilla. In any case, it&apos;ll be quite some time before the fix is available in the toolchains that people use.
- gcc + gdb should work with this patch.

The only downside I can see so far is the extra #if COMPILER(GCC) directives for the MARKER_SYMBOL. I could remove those by making MARKER_SYMBOL a no-op on !GCC. My preference is for the former, as it&apos;s more explicit, but can easily submit the latter approach too.

Would be great to have this upstream, so looking forward to fixing any remaining issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635517</commentid>
    <comment_count>30</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-30 08:22:50 -0700</bug_when>
    <thetext>(In reply to Angelos Oikonomopoulos from comment #29)
&gt; So, to summarize:
&gt; 
&gt; - clang + gdb is currently a no-go. I don&apos;t see a workaround for this ATM,
&gt; so this would need to be fixed upstream in GDB. Have opened an issue on
&gt; their bugzilla. In any case, it&apos;ll be quite some time before the fix is
&gt; available in the toolchains that people use.

Thanks for the reporting the issue upstream!

&gt; - gcc + gdb should work with this patch.
&gt; 
&gt; The only downside I can see so far is the extra #if COMPILER(GCC) directives
&gt; for the MARKER_SYMBOL. I could remove those by making MARKER_SYMBOL a no-op
&gt; on !GCC. My preference is for the former, as it&apos;s more explicit, but can
&gt; easily submit the latter approach too.
&gt; 
&gt; Would be great to have this upstream, so looking forward to fixing any
&gt; remaining issues.

It looks the Windows EWS failed to build this last version of the patch, if you can take a look to it, that would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635985</commentid>
    <comment_count>31</comment_count>
      <attachid>395029</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-31 06:09:44 -0700</bug_when>
    <thetext>Created attachment 395029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636020</commentid>
    <comment_count>32</comment_count>
      <attachid>395039</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-31 07:54:41 -0700</bug_when>
    <thetext>Created attachment 395039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636065</commentid>
    <comment_count>33</comment_count>
      <attachid>395053</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-03-31 09:52:30 -0700</bug_when>
    <thetext>Created attachment 395053
Patch

Testing windows build on EWS. Ignore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636117</commentid>
    <comment_count>34</comment_count>
      <attachid>395039</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 10:39:26 -0700</bug_when>
    <thetext>Comment on attachment 395039
Patch

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

&gt; Source/WTF/wtf/Compiler.h:388
&gt; +/* NO_REORDER */
&gt; +#if !defined(NO_REORDER) &amp;&amp; COMPILER(GCC)
&gt; +#define NO_REORDER __attribute__((__no_reorder__))
&gt; +#endif

Inconsistent to include a comment for NO_REORDER and not on MARKER_SYMBOL.

Also, all the other comments (except for UNUSED_VARIABLE) have blank lines after them.

Overkill to define a macro for NO_REORDER and use that macro in only one place, also under a COMPILE(GCC) conditional. I would not add this macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636486</commentid>
    <comment_count>35</comment_count>
      <attachid>395166</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-01 07:52:57 -0700</bug_when>
    <thetext>Created attachment 395166
Patch

Testing windows build on EWS. Ignore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636521</commentid>
    <comment_count>36</comment_count>
      <attachid>395174</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-01 09:14:37 -0700</bug_when>
    <thetext>Created attachment 395174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636546</commentid>
    <comment_count>37</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-01 09:55:09 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #34)
&gt; Comment on attachment 395039 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395039&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Compiler.h:388
&gt; &gt; +/* NO_REORDER */
&gt; &gt; +#if !defined(NO_REORDER) &amp;&amp; COMPILER(GCC)
&gt; &gt; +#define NO_REORDER __attribute__((__no_reorder__))
&gt; &gt; +#endif
&gt; 
&gt; Inconsistent to include a comment for NO_REORDER and not on MARKER_SYMBOL.
&gt; 
&gt; Also, all the other comments (except for UNUSED_VARIABLE) have blank lines
&gt; after them.
&gt; 
&gt; Overkill to define a macro for NO_REORDER and use that macro in only one
&gt; place, also under a COMPILE(GCC) conditional. I would not add this macro.

Thanks. Dropped the NO_REORDER macro (including comment). Should now build properly on windows too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636551</commentid>
    <comment_count>38</comment_count>
      <attachid>395174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-01 10:01:36 -0700</bug_when>
    <thetext>Comment on attachment 395174
Patch

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

Looks fine to me; please consider further refinement to the Compiler.h macro

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:549
&gt; +#endif /* WTF_COMPILER_GCC */

Code style nitpick:

This isn’t following the coding style of the rest of this file and WebKit. We aren’t commenting every #endif, particularly when a block of code is this short. And we use &quot;//&quot; comments when we do. And we don’t comment with the underlying macro name instead of the actual expression on the #if statement.

Better to not have an #if here at all (see comment in Compiler.h).

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:557
&gt; +#endif /* WTF_COMPILER_GCC */

Ditto.

&gt; Source/WTF/wtf/Compiler.h:388
&gt; +#if !defined(MARKER_SYMBOL) &amp;&amp; COMPILER(GCC)
&gt; +#define MARKER_SYMBOL(name) \
&gt; +    __attribute__((__no_reorder__)) void name(void) { __asm__(&quot;&quot;); }
&gt; +#endif

It’s more consistent with the Compiler.h compiler-independence strategy to define MARKER_SYMBOL everywhere and have it be a no-op on compilers that don’t need it. Might also need a more unambiguous name. The phrase &quot;marker symbol&quot; doesn’t point straight at a compiler capability to me. Seems a bit obscure to claim such a basic name. I might have chosen a longer name like DEBUGGER_ANNOTATION_MARKER(name). If we want to emphasize that it’s GCC-specific can even include GCC in the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636863</commentid>
    <comment_count>39</comment_count>
      <attachid>395262</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-02 06:05:11 -0700</bug_when>
    <thetext>Created attachment 395262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636864</commentid>
    <comment_count>40</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-02 06:07:16 -0700</bug_when>
    <thetext>Switched to DEBUGGER_ANNOTATION_MARKER as suggested, made it a no-op on !GCC. Style should be consistent with the rest of Compiler.h

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636917</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-02 09:39:11 -0700</bug_when>
    <thetext>Committed r259390: &lt;https://trac.webkit.org/changeset/259390&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395262.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636918</commentid>
    <comment_count>42</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-02 09:40:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/61211811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637009</commentid>
    <comment_count>43</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2020-04-02 12:25:19 -0700</bug_when>
    <thetext>(In reply to EWS from comment #41)
&gt; Committed r259390: &lt;https://trac.webkit.org/changeset/259390&gt;
&gt; 

This broke compilation (with clang FWIW) on GTK:

CMake Error at Source/cmake/WebKitMacros.cmake:172 (target_link_libraries):
  Target &quot;LowLevelInterpreterLib&quot; of type OBJECT_LIBRARY may not be linked
  into another target.  One may link only to STATIC or SHARED libraries, or
  to executables with the ENABLE_EXPORTS property set.
Call Stack (most recent call first):
  Source/cmake/WebKitMacros.cmake:184 (_WEBKIT_TARGET)
  Source/JavaScriptCore/CMakeLists.txt:1401 (WEBKIT_FRAMEWORK)


Is there a workaround for the error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637011</commentid>
    <comment_count>44</comment_count>
      <attachid>395262</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-04-02 12:34:42 -0700</bug_when>
    <thetext>Comment on attachment 395262
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:1393
&gt; +list(APPEND JavaScriptCore_LIBRARIES LowLevelInterpreterLib)

This should be JavaScriptCore_PRIVATE_LIBRARIES</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637060</commentid>
    <comment_count>45</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-02 14:25:09 -0700</bug_when>
    <thetext>WinCairo clean builds get broken since this change.
It seems that LowLevelInterpreter doesn&apos;t know WTF headers dir.

&gt; [277/5311] Building CXX object Source\JavaScriptCore\CMakeFiles\LowLevelInterpreterLib.dir\llint\LowLevelInterpreter.cpp.obj
&gt; FAILED: Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.obj 
&gt; C:\PROGRA~1\LLVM\bin\clang-cl.exe  /nologo -TP -DBUILDING_WITH_CMAKE=1 -DHAVE_CONFIG_H=1 -DNOCRYPT -DNOMINMAX -DUNICODE -DWINVER=0x601 -DWTF_PLATFORM_WIN_CAIRO=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_=&quot;&quot; -I..\..\WebKitLibraries\win\include -IJavaScriptCore\Headers -I. -I..\..\Source\JavaScriptCore -I..\..\Source\JavaScriptCore\API -I..\..\Source\JavaScriptCore\assembler -I..\..\Source\JavaScriptCore\b3 -I..\..\Source\JavaScriptCore\b3\air -I..\..\Source\JavaScriptCore\bindings -I..\..\Source\JavaScriptCore\builtins -I..\..\Source\JavaScriptCore\bytecode -I..\..\Source\JavaScriptCore\bytecompiler -I..\..\Source\JavaScriptCore\dfg -I..\..\Source\JavaScriptCore\disassembler -I..\..\Source\JavaScriptCore\disassembler\ARM64 -I..\..\Source\JavaScriptCore\disassembler\udis86 -I..\..\Source\JavaScriptCore\domjit -I..\..\Source\JavaScriptCore\ftl -I..\..\Source\JavaScriptCore\heap -I..\..\Source\JavaScriptCore\debugger -I..\..\Source\JavaScriptCore\inspector -I..\..\Source\JavaScriptCore\inspector\agents -I..\..\Source\JavaScriptCore\inspector\augmentable -I..\..\Source\JavaScriptCore\inspector\remote -I..\..\Source\JavaScriptCore\interpreter -I..\..\Source\JavaScriptCore\jit -I..\..\Source\JavaScriptCore\llint -I..\..\Source\JavaScriptCore\parser -I..\..\Source\JavaScriptCore\profiler -I..\..\Source\JavaScriptCore\runtime -I..\..\Source\JavaScriptCore\tools -I..\..\Source\JavaScriptCore\wasm -I..\..\Source\JavaScriptCore\wasm\js -I..\..\Source\JavaScriptCore\yarr -IJavaScriptCore\DerivedSources -IJavaScriptCore\DerivedSources\inspector -IJavaScriptCore\DerivedSources\runtime -IJavaScriptCore\DerivedSources\yarr -I..\include\private -I..\..\Source\JavaScriptCore\inspector\remote\socket -IWTF\Headers -IDerivedSources -I..\..\Source\ThirdParty /W4 -fdiagnostics-color=always -fcolor-diagnostics -Wno-noexcept-type -Wno-parentheses-equality -Qunused-arguments -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-unknown-argument -Wno-nonportable-include-path -Wno-unknown-pragmas -Wno-macro-redefined -Wno-undef /DWIN32 /D_WINDOWS  /GR- /EHsc- -fno-strict-aliasing /MD /O2 /Ob2 /DNDEBUG   /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /wd4091 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset /Oy- -fmsc-version=1911 -std:c++17 /showIncludes /FoSource\JavaScriptCore\CMakeFiles\LowLevelInterpreterLib.dir\llint\LowLevelInterpreter.cpp.obj /FdSource\JavaScriptCore\CMakeFiles\LowLevelInterpreterLib.dir\ -c ..\..\Source\JavaScriptCore\llint\LowLevelInterpreter.cpp
&gt; In file included from ..\..\Source\JavaScriptCore\llint\LowLevelInterpreter.cpp:26:
&gt; In file included from ..\..\Source\JavaScriptCore\config.h:33:
&gt; In file included from ..\..\Source\JavaScriptCore\runtime\JSExportMacros.h:32:
&gt; WTF\Headers\wtf/ExportMacros.h(32,10): fatal error: &apos;wtf/Platform.h&apos; file not found
&gt; #include &lt;wtf/Platform.h&gt;
&gt;          ^~~~~~~~~~~~~~~~
&gt; 1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637129</commentid>
    <comment_count>46</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2020-04-02 16:19:02 -0700</bug_when>
    <thetext>And for a clean build of wincairo after adding a dependency on WTF_CopyHeaders to try to get the WTF headers, I seem to see a failure looking for Bytecodes.h, possibly because it isn&apos;t generated from the custom command yet, so the object library may need a dependency on that as well.

D:\github\webkit\Source\JavaScriptCore\bytecode\Opcode.h(32): fatal error C1083: Cannot open include file: &apos;Bytecodes.h&apos;: No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637166</commentid>
    <comment_count>47</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-02 17:11:51 -0700</bug_when>
    <thetext>WinCairo
https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Debug%20%28Build%29/builds/15707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637333</commentid>
    <comment_count>48</comment_count>
      <attachid>395371</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-03 06:50:19 -0700</bug_when>
    <thetext>Created attachment 395371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637347</commentid>
    <comment_count>49</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-03 07:30:11 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #44)
&gt; Comment on attachment 395262 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395262&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/CMakeLists.txt:1393
&gt; &gt; +list(APPEND JavaScriptCore_LIBRARIES LowLevelInterpreterLib)
&gt; 
&gt; This should be JavaScriptCore_PRIVATE_LIBRARIES

According to the cmake-3.10 docs (https://cmake.org/cmake/help/v3.10/command/add_library.html#object-libraries), you&apos;re not supposed to use target_link_libraris with OBJECT libraries (this limitation has since been lifted, see https://gitlab.kitware.com/cmake/cmake/-/issues/14778).

With this change (in the newer patch, https://bugs.webkit.org/attachment.cgi?id=395371), I can no longer reproduce the issue reported in comment 43.

Still need to reproduce the WinCairo issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637350</commentid>
    <comment_count>50</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-03 07:31:47 -0700</bug_when>
    <thetext>(In reply to Angelos Oikonomopoulos from comment #49)
&gt; With this change (in the newer patch,
&gt; https://bugs.webkit.org/attachment.cgi?id=395371), I can no longer reproduce
&gt; the issue reported in comment 43.

To be clear, the relevant change is:

-list(APPEND JavaScriptCore_LIBRARIES LowLevelInterpreterLib)
+list(APPEND JavaScriptCore_SOURCES $&lt;TARGET_OBJECTS:LowLevelInterpreterLib&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637351</commentid>
    <comment_count>51</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-04-03 07:33:22 -0700</bug_when>
    <thetext>Yes, my bad, your change looks correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639003</commentid>
    <comment_count>52</comment_count>
      <attachid>395790</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-08 04:21:59 -0700</bug_when>
    <thetext>Created attachment 395790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639013</commentid>
    <comment_count>53</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-08 05:37:32 -0700</bug_when>
    <thetext>Reproduced the issue on wincairo and the new patch seems to fix it on my setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639015</commentid>
    <comment_count>54</comment_count>
      <attachid>395790</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-04-08 05:42:12 -0700</bug_when>
    <thetext>Comment on attachment 395790
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:1375
&gt; +add_dependencies(LowLevelInterpreterLib WTF_CopyHeaders)

List all dependencies of LowLevelInterpreterLib in one add_dependencies() invocation.

&gt; Source/JavaScriptCore/CMakeLists.txt:1376
&gt; +add_dependencies(LowLevelInterpreterLib Bytecodes)

Wouldn&apos;t it just work if you add &quot;${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h&quot; to dependencies instead of creating proxy Bytecodes target?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639019</commentid>
    <comment_count>55</comment_count>
      <attachid>395796</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-08 06:04:49 -0700</bug_when>
    <thetext>Created attachment 395796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639020</commentid>
    <comment_count>56</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-08 06:05:12 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #54)
&gt; Comment on attachment 395790 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395790&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/CMakeLists.txt:1375
&gt; &gt; +add_dependencies(LowLevelInterpreterLib WTF_CopyHeaders)
&gt; 
&gt; List all dependencies of LowLevelInterpreterLib in one add_dependencies()
&gt; invocation.

Done, thanks.

&gt; &gt; Source/JavaScriptCore/CMakeLists.txt:1376
&gt; &gt; +add_dependencies(LowLevelInterpreterLib Bytecodes)
&gt; 
&gt; Wouldn&apos;t it just work if you add
&gt; &quot;${JavaScriptCore_DERIVED_SOURCES_DIR}/Bytecodes.h&quot; to dependencies instead
&gt; of creating proxy Bytecodes target?

Unfortunately not, cmake fails with

The dependency target &quot;.../Bytecodes.h&quot; of target &quot;LowLevelInterpreterLib&quot; does not exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639056</commentid>
    <comment_count>57</comment_count>
      <attachid>395796</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-04-08 08:09:19 -0700</bug_when>
    <thetext>Comment on attachment 395796
Patch

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

&gt; Source/JavaScriptCore/Scripts/postprocess-asm:193
&gt; +exit(0)

I guess this is not needed, script will normally exit with code 0 anyway</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639060</commentid>
    <comment_count>58</comment_count>
      <attachid>395811</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-08 08:21:40 -0700</bug_when>
    <thetext>Created attachment 395811
Patch

Remove redundant exit(0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639171</commentid>
    <comment_count>59</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-08 11:23:57 -0700</bug_when>
    <thetext>Committed r259734: &lt;https://trac.webkit.org/changeset/259734&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395811.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639591</commentid>
    <comment_count>60</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-09 05:42:29 -0700</bug_when>
    <thetext>This broke the build on jsc-i386:

https://ews-build.webkit.org/#/builders/27/builds/10323

[ 38%] Building CXX object Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o
In file included from /home/ews/worker/JSC-i386-32bits-EWS/build/Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h:33,
                 from /home/ews/worker/JSC-i386-32bits-EWS/build/Source/JavaScriptCore/runtime/JSCInlines.h:47,
                 from /home/ews/worker/JSC-i386-32bits-EWS/build/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:41:
/home/ews/worker/JSC-i386-32bits-EWS/build/Source/JavaScriptCore/bytecode/LinkTimeConstant.h:28:10: fatal error: JSCBuiltins.h: No such file or directory
 #include &quot;JSCBuiltins.h&quot;
          ^~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/build.make:127: Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/llint/LowLevelInterpreter.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:280: Source/JavaScriptCore/CMakeFiles/LowLevelInterpreterLib.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:624: Source/JavaScriptCore/shell/CMakeFiles/jsc.dir/rule] Error 2
make: *** [Makefile:340: jsc] Error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639592</commentid>
    <comment_count>61</comment_count>
      <attachid>395941</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-09 05:45:59 -0700</bug_when>
    <thetext>Created attachment 395941
Patch

Fix build failure on jsc-i386 (i.e. CLOOP)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639594</commentid>
    <comment_count>62</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2020-04-09 05:47:56 -0700</bug_when>
    <thetext>Latest patch should fix the build failure on --cloop builds. What&apos;s more, I went through all other instances of add_custom_command again and the cross referenced with the output of cpp -M for LowLevelInterpreter.cpp , so hopefully this should be the last fix needed. The first time through, I&apos;d missed JSCBuiltins.h as it extended to the far right of the OUTPUT line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639602</commentid>
    <comment_count>63</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-09 06:16:36 -0700</bug_when>
    <thetext>Committed r259792: &lt;https://trac.webkit.org/changeset/259792&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395941.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389516</attachid>
            <date>2020-02-03 08:33:18 -0800</date>
            <delta_ts>2020-03-23 10:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200203163317.patch</filename>
            <type>text/plain</type>
            <size>25589</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTcyOWE5NDJiYmYwNzA0NzIyZTU3OWQ5ZjM5ZjEwMDQzNmQxMDk4Li40MTA1MmE5OTJiMWMxNzBm
YjI4MTUwNjk0NDM5NGVmODI3MmM5MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMC0wMi0wMyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIG9mZmVycyBubyB3
YXkgdG8gb3ZlcnJpZGUgdGhlIGNvbXBpbGVyIG9uIGEKKyAgICAgICAgcGVyLWZpbGUgYmFzaXMg
YW5kIEdDQyBkb2Vzbid0IGFsbG93IHNldHRpbmcgdGhlIGFzc2VtYmxlciBleGNlcHQgYXQKKyAg
ICAgICAgY29uZmlndXJlIHRpbWUsIHNvIHdlIG5lZWQgdG8gd3JhcCBldmVyeSBjb21waWxlciBp
bnZvY2F0aW9uLiBUaGlzCisgICAgICAgIG9ubHkgaGFwcGVucyB3aGVuIGJ1aWxkaW5nIHdpdGgg
R0NDIGFuZCB0aGUgdXNlciBoYXMgZXhwbGljaXRseQorICAgICAgICByZXF1ZXN0ZWQgaXQsIGVp
dGhlciBieSBzZWxlY3RpbmcgYSBkZWJ1ZyBidWlsZCBvciBzZXR0aW5nCisgICAgICAgIEdDQ19P
RkZMSU5FQVNNX1NPVVJDRV9NQVAuCisKKyAgICAgICAgVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3Zl
cmhlYWQsIHdlIHVzZSBhIHR3by1sZXZlbCB3cmFwcGVyIHNjaGVtZS4gVGhlCisgICAgICAgIGZp
cnN0IHdyYXBwZXIgKGN4eC13cmFwcGVyLCBpbiAvYmluL3NoKSBxdWlja2x5IGNoZWNrcyBpZiB0
aGVyZSdzIGEKKyAgICAgICAgc3BlY2lhbCBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbiBpbiB0aGUg
YXJndW1lbnRzLiBJZiBub3QsIGl0J2xsCisgICAgICAgIGV4ZWN1dGUgdGhlIHJlZ3VsYXIgY29t
cGlsZXIuIElmIHRoZSBzcGVjaWFsIGFyZ3VtZW50IGlzIHRoZXJlLCBpdCdsbAorICAgICAgICBl
eGVjIGEgc2Vjb25kIGxldmVsIHdyYXBwZXIgKHBvc3Rwcm9jZXNzLWFzbSwgcnVieSkgdGhhdCBn
ZW5lcmF0ZXMgYQorICAgICAgICAuUyBmaWxlLCB3aGljaCBnZXRzIHJld3JpdHRlbiBieSByZXNv
bHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYi4gVGhlCisgICAgICAgIG92ZXJoZWFkIGFwcGVhcnMg
dG8gYmUgaW4gdGhlIG5vaXNlLgorCisgICAgICAgIFNlY29uZCwgR0RCIHdpbGwgb25seSBsb29r
IGF0IHRoZSBsaW5lIHRhYmxlIGZvciBhIGNvbXBpbGF0aW9uIHVuaXQgaWYKKyAgICAgICAgaXQg
Y2FuIGZpcnN0IHJlc29sdmUgdGhlIGFkZHJlc3MgdG8gb25lIG9mIHRoZSBrbm93biBzeW1ib2xz
IGluIHRoZQorICAgICAgICBmaWxlLiBJbnRyb2R1Y2UgbWFya2VyIHN5bWJvbHMgdG8gd29yayBh
cm91bmQgdGhpcyBidWcuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2Ny
aXB0cy9jeHgtd3JhcHBlcjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9wb3N0cHJvY2Vzcy1h
c206IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMu
cmI6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAqIG9mZmxpbmVhc20vY29uZmlnLnJiOgorCiAyMDIwLTAyLTAxICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBOb24tYWxwaGFiZXRpY2FsIFxj
IGVzY2FwZXMgc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMgaW4gVW5pY29kZSBwYXR0ZXJucyBvbmx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDc5ZGI5ZWQ2YzIwNGVkNWYxNTEzOWI3N2FiZTI3ZDEyZWY0Y2YyODQuLmQ4ODk0YTQ3
MzhhOTZmNTdmMTNhM2Y3ZTQwOTRjMmE0MmUxMDc4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjAtMDItMDMgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CisK
KyAgICAgICAgRW5hYmxlIG9mZmxpbmVhc20gZGVidWcgYW5ub3RhdGlvbnMgZm9yIEdDQworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MTE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQ29tcGls
ZXIuaDoKKwogMjAyMC0wMS0zMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gQWRkIF9QUklWQVRFX0xJQlJBUklFUyB0byBmcmFtZXdvcmsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5
ZjEwNmQ0MmY5NWUwOWQwMmJlOWM0Li44NDZkNzg3ZGE4ODZkYzA3NjRkMTQzODk1ZjJiZjYyOGFj
YjA3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzAsNiArMTMw
LDQ0IEBAIGVuZGlmICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElS
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCiAKK29wdGlvbihHQ0NfT0ZGTElORUFT
TV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVnIGxpbmUgaW5mb3JtYXRpb24gZm9yIG9mZmxp
bmVhc20tZ2VuZXJhdGVkIGNvZGUiKQorCisKKyMgRW5hYmxlIGJ5IGRlZmF1bHQgZm9yIERlYnVn
IGJ1aWxkcywgYWxsb3cgdGhlIHVzZXIgdG8gbWFudWFsbHkKKyMgcmVxdWVzdCBzb3VyY2UgbWFw
cGluZyBmb3IgUmVsZWFzZSBidWlsZHMuCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAi
RGVidWciKQorICBzZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUCAiMSIpCitlbmRpZiAoKQor
CitpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0Vf
TUFQKQorICBtZXNzYWdlKFNUQVRVUyAiRW5hYmxpbmcgYXNtIHBvc3Rwcm9jZXNzaW5nIikKKyAg
IyBBcyB0aGVyZSdzIHBvb3IgdG9vbGNoYWluIHN1cHBvcnQgZm9yIHVzaW5nIGAuZmlsZWAgZGly
ZWN0aXZlcyBpbgorICAjIGlubGluZSBhc20gKGkuZS4gdGhlcmUncyBubyB3YXkgdG8gYXZvaWQg
Y2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisgICMgZGlyZWN0aXZlcyBnZW5lcmF0ZWQgYnkgdGhl
IEMgY29kZSBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCksIHdlCisgICMgaW50cm9kdWNlIGEgcG9z
dHByb2Nlc3NpbmcgcGFzcyBmb3IgdGhlIGFzbSB0aGF0IGdldHMgYXNzZW1ibGVkCisgICMgaW50
byBhbiBvYmplY3QgZmlsZS4gIEhvd2V2ZXIsIHdlIGRvbid0IHdhbnQgdG8gc2xvdyBkb3duIHRo
ZQorICAjIGJ1aWxkIGluIHRoZSBjb21tb24gY2FzZS4gVW5mb3J0dW5hdGVseSwgY21ha2UgZG9l
c24ndCBhbGxvdyB1cyB0bworICAjIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEg
c2luZ2xlIHNvdXJjZSBmaWxlLCBzbyB3ZSB3cmFwCisgICMgZXZlcnl0aGluZyBpbiB0aGUgY3h4
LXdyYXBwZXIgdGhhdCBxdWlja2x5IGRldGVybWluZXMgaWYKKyAgIyBwb3N0cHJvY2Vzc2luZyBp
cyBuZWVkZWQuIElmIG5vdCwgaXQnbGwganVzdCBleGVjIHRoZSByZWd1bGFyCisgICMgY29tcGls
ZXIuIElmIHNvLCBpdCdsbCBleGVjIHRoZSBzbG93IHBhdGggd3JhcHBlciB0aGF0IGFjdHVhbGx5
CisgICMgZG9lcyB0aGUgcG9zdHByb2Nlc3NpbmcuCisKKyAgIyBOb3RlOiB0aGUgYC5maWxlYCBk
aXJlY3RpdmVzIGVtaXR0ZWQgYnkgYXNtLnJiIGFyZSBvbmx5IGFuIGlzc3VlCisgICMgd2hlbiB3
ZSdyZSBjb21waWxpbmcgdGhlIC5jeHggZmlsZSB3aXRoIC1nCisgIHNldChDTUFLRV9DWFhfQ09N
UElMRVJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTX0RJUn0vY3h4
LXdyYXBwZXIiKQorCisgICMgQWRkIGEgbWFnaWMgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSAodW51
c2VkIGluIHRoZSBzb3VyY2UpIHRvCisgICMgc2lnbmlmeSB0byBvdXIgd3JhcHBlciB0aGF0IHdl
IHdhbnQgYXNtIHBvc3Rwcm9jZXNzaW5nIGZvciB0aGlzCisgICMgZmlsZS4gV2UgcGFzcyBpbiB0
aGUgZmlsZW5hbWUgc28gdGhhdCB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseQorICAjIGlkZW50
aWZ5IHRoZSBzb3VyY2UgZmlsZS4KKyAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCJsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIKKyAgICBQUk9QRVJUSUVTCisgICAgQ09NUElMRV9E
RUZJTklUSU9OUyAiUE9TVFBST0NFU1NfQVNNPWxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IikKKworZW5kaWYgKCkKKwogIyBHbG9iYmluZyByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBnZW5l
cmF0b3Itc3BlY2lmaWMgZmlsZSBuYW1lcyBhcmUgcHJlZml4ZWQgd2l0aCB0aGVpciBkaXJlY3Rv
cnkuCiAjIFRvcC1sZXZlbCBzY3JpcHRzIHNob3VsZCBoYXZlIGEgZmlsZSBleHRlbnNpb24sIHNp
bmNlIHRoZXkgYXJlIGludm9rZWQgZHVyaW5nIHRoZSBidWlsZC4KIApAQCAtMzIzLDcgKzM2MSw3
IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIKICAgICBERVBFTkRTIExMSW50T2Zm
c2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtPRkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VY
RUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vICR7SkFWQVNDUklQVENPUkVfRElSfS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkPFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4
dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0
cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1F
IGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19P
RkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllf
RVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtK
YXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRz
RXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRP
dXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0g
LUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8k
e0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElSRUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2N4eC13cmFwcGVyIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvY3h4LXdyYXBwZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkYWZmNzI4ODBiNzUzODQwMTNjZTRlNGMy
YTY0M2NmYWUyNjI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2N4eC13cmFwcGVyCkBAIC0wLDAgKzEsMjEgQEAKKyMhL2Jpbi9zaAorCisjIFRoaXMg
aXMgdGhlICJmYXN0IHBhdGgiIHdyYXBwZXIgZm9yIEFTTSBwb3N0cHJvY2Vzc2luZy4gSW4gdGhl
CisjIGNvbW1vbiBjYXNlLCB3ZSdsbCBleGFtaW5lIG91ciBhcmd1bWVudHMsIGRldGVybWluZSB0
aGVyZSdzIG5vIG5lZWQKKyMgZm9yIHBvc3Rwcm9jZXNzaW5nIGFuZCBleGVjIHRoZSBjb21waWxl
ci4gIFRoaXMgaXMgY29kZWQgaW4gUE9TSVgKKyMgc2gsIGluIHRoZSBob3BlIHRoYXQgd2UnbGwg
YmUgcnVuIGJ5IHNvbWUgbGlnaHR3ZWlnaHQgc2hlbGwgdGhhdCBoYXMKKyMgbWluaW1hbCBzdGFy
dHVwIHRpbWUuCisKK3Bvc3Rwcm9jZXNzPTAKK2ZvciBhcmcgaW4gIiRAIjsgZG8KKyAgICBpZiBb
ICJ4LURQT1NUUFJPQ0VTU19BU00iID0gIngke2FyZyUlPSp9IiBdOyB0aGVuCisJcG9zdHByb2Nl
c3M9MQorCWJyZWFrCisgICAgZmkKK2RvbmUKKworaWYgWyAkcG9zdHByb2Nlc3MgLWVxIDAgXTsg
dGhlbgorICAgIGV4ZWMgIiRAIgorZmkKKworZXhlYyAiJChkaXJuYW1lICIkMCIpL3Bvc3Rwcm9j
ZXNzLWFzbSIgIiRAIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
cG9zdHByb2Nlc3MtYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nl
c3MtYXNtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2MjNjMjJjNzljZjhmOGY5NzVkMjc1NWJlYjg4Zjg2YTliMzQw
YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9wb3N0
cHJvY2Vzcy1hc20KQEAgLTAsMCArMSwxNzAgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBX
cmFwcGVyIGZvciBhIC5jcHAgLT4gLm8gY29tcGlsYXRpb24gY29tbWFuZC4gSXQKKyMgMS4gY29u
dmVydHMgdGhlIGNvbW1hbmQgdG8gZ2VuZXJhdGUgYSBgLnMnIGZpbGUKKyMgMi4gcnVucyB0aGUg
QVNNIHBvc3Rwcm9jZXNzb3Igb24gaXQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIGAuc2AgZmlsZQor
IyAzLiBhc3NlbWJsZXMgdGhlIGAuc2AgZmlsZSB0byBhIGAub2AgZmlsZQorCiskYXNtX3N1ZmZp
eF9wcmUgPSAiLnByZS5zIgorJGFzbV9zdWZmaXggPSAiLnMiCiskcG9zdHByb2Nlc3NvciA9ICIj
e0ZpbGUuZGlybmFtZSgkMCl9L3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIgorCisKKyRp
bnRlcm1lZGlhdGVfcGF0aHMgPSBbXQorCisjIFdlIG5lZWQgdG8gd29yayB3aXRoIGluZGljZXMg
YSBsb3QgYW5kIHVuZm9ydHVuYXRlbHkgJ2dldG9wdGxvbmcnIGluCisjIHRoZSBzdGFuZGFyZCBs
aWJyYXJ5IGRvZXNuJ3QgZXhwb3NlIG9wdGluZCwgc28gd2UncmUgZ29pbmcgd2l0aAorIyBhcnJh
eSBzZWFyY2hlcyBmb3Igc2ltcGxpY2l0eS4KK2RlZiBpbmRleF9ub2ZhaWwoYXJ5LCBmLCBlcnJt
c2cpCisgIGlkeCA9IGFyeS5pbmRleCB7IHxlbHwKKyAgICBmLmNhbGwoZWwpCisgIH0KKyAgaWYg
aWR4Lm5pbD8KKyAgICAkc3RkZXJyLnB1dHMoZXJybXNnKQorICAgIGV4aXQoMykKKyAgZW5kCisg
IGlkeAorZW5kCisKKyMgRmluZCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgZmlsZSBmb3IgdGhpcyBj
b21waWxhdGlvbiBjb21tYW5kLAorIyByZW1vdmluZyBpdCBmcm9tIHRoZSBhcmdzLiBOb3RlIHRo
YXQgdGhlIHBhdGggKEEpIGFzIGl0IGFwcGVhcnMgaGVyZQorIyAoY29taW5nIGZyb20gYSBjbWFr
ZSBydWxlKSBpcyBsaWtlbHkgdG8gYmUgZGlmZmVyZW50IHRvIHRoZQorIyBhbm9ueW1vdXMgYXJn
dW1lbnQgKEIpIHRvIHRoZSBjb21waWxhdGlvbiBjb21tYW5kLiBIb3dldmVyLCBBIHdpbGwKKyMg
YmUgYSBzdWZmaXggb2YgQi4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRoZSBhcmd1bWVu
dCBpcyBub3QgdGhlcmUuIFRoaXMgaGFzIGFscmVhZHkKKyMgYmVlbiBjaGVja2VkIGJ5IGBjeHgt
d3JhcHBlcmAsIG90aGVyd2lzZSB3ZSB3b3VsZG4ndCBiZSBydW5uaW5nLgorZGVmIGV4dHJhY3Rf
aW5wdXQhKGFyZ3MpCisgIHByZWZpeCA9ICctRFBPU1RQUk9DRVNTX0FTTT0nCisKKyAgaWR4ID0g
aW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICBhcmcuc3RhcnRfd2l0aD8o
cHJlZml4KQorICB9LCAiTm8gYC1EUE9TVFBST0NFU1NfQVNNYCBhcmd1bWVudGAiKQorCisgIHBh
dGggPSBhcmdzW2lkeF1bcHJlZml4LnNpemUuLi0xXQorICBpZiBwYXRoLnNpemUgPT0gMAorICAg
ICRzdGRlcnIucHV0cygiRW1wdHkgcGF0aCBpbiAtRFBPU1RQUk9DRVNTX0FTTT0iKQorICAgIGV4
aXQoMykKKyAgZW5kCisgICMgV2Ugb25seSBuZWVkIHRoaXMgdG8gYmUgZGVmaW5lZCBmb3IgdGhl
IHByZXByb2Nlc3NvciAobm90IGFueQorICAjIHdyYXBwZXIpIGZyb20gbm93IG9uLgorICBhcmdz
W2lkeF0gPSAiLURQT1NUUFJPQ0VTU19BU00iCisgIHJldHVybiBwYXRoCitlbmQKKworIyBHZXQg
dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhcmd1bWVudCBlbmRpbmcgaW4gdGhpcyBzdWZmaXguCisj
CisjIEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXNuJ3QgdGhlcmUuIFdlJ3Jl
IG9ubHkgZXZlcgorIyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgd2Uga25vdyBhcmUgYmVpbmcgcGFz
c2VkIGluIGJ5IHRoZSBidWlsZAorIyBzeXN0ZW0uCitkZWYgZ2V0X2FyZ19pZHhfc3VmZml4KGFy
Z3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAg
ICAgICAgICAgICAgYXJnLmVuZF93aXRoPyh3YW50ZWQpCisgICAgICAgICAgICAgICB9LCAiTm8g
YXJndW1lbnQgZW5kcyB3aXRoICN7d2FudGVkfSIpCitlbmQKKworIyBHZXQgaW5kZXggb2YgYSBn
aXZlbiBhcmd1bWVudC4gRGllIGlmIGl0J3Mgbm90IHRoZXJlLgorZGVmIGdldF9hcmdfaWR4KGFy
Z3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAg
ICAgICAgICAgICAgYXJnID09IHdhbnRlZAorICAgICAgICAgICAgICAgfSwgIk5vIGAje3dhbnRl
ZH1gIGFyZ3VtZW50IikKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgYC1vYCBhbmQgdmVyaWZ5
IHRoYXQgYW4gYXJndW1lbnQgZm9sbG93cy4KKyMgQm90aCBhcmUgZ3VhcmFudGVlZCB0byBleGlz
dCAoZnJvbSBvdXIgYnVpbGQgc3lzdGVtKS4KK2RlZiBnZXRfb19pZHgoYXJncykKKyAgaSA9IGdl
dF9hcmdfaWR4KGFyZ3MsICctbycpCisgIGlmIChpICsgMSkgPj0gYXJncy5zaXplCisgICAgJHN0
ZGVyci5wdXRzKCJObyBhcmd1bWVudCB0byBgLW9gIikKKyAgICBleGl0KDMpCisgIGVuZAorICBp
CitlbmQKKworIyBSdW4gY29tbWFuZCBhbmQgZGllIGlmIGl0IGZhaWxzLCBwcm9wYWdhdGluZyB0
aGUgZXhpdCBjb2RlLgorZGVmIHJ1bl9jbWQoY21kKQorICBwaWQgPSBQcm9jZXNzLnNwYXduKCpj
bWQpCisgIFByb2Nlc3Mud2FpdHBpZChwaWQpCisgIHJldCA9ICQ/CisgIGlmIG5vdCByZXQuc3Vj
Y2Vzcz8KKyAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHJ1bm5pbmcgY21kOiAje3JldH0iKQorICAg
IGV4aXQocmV0LmV4aXRzdGF0dXMpCisgIGVuZAorZW5kCisKKyMgQ29udmVydAorIyAgICBjeHgg
LW8gYmxhaC5vIC1jIGJsYWguY3BwCisjIHRvCisjICAgIGN4eCAtbyBibGFoLnMgLVMgYmxhaC5j
cHAKK2RlZiBidWlsZF9jeHhfY21kKGFyZ3MpCisgIGNfaWR4ID0gZ2V0X2FyZ19pZHgoYXJncywg
Jy1jJykKKyAgb19pZHggPSBnZXRfb19pZHgoYXJncykKKworICBjeHhfYXJncyA9IGFyZ3MuY2xv
bmUKKworICBjeHhfYXJnc1tjX2lkeF0gPSAnLVMnCisgIG9fcGF0aCA9IGN4eF9hcmdzW29faWR4
ICsgMV0KKyAgY3h4X2FyZ3Nbb19pZHggKyAxXSA9IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9z
dWZmaXgpCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgY3h4X2FyZ3Nbb19pZHggKyAxXQorICBp
ZiBjeHhfYXJnc1tvX2lkeCArIDFdID09IG9fcGF0aAorICAgICRzdGRlcnIucHV0cygiT3V0cHV0
IGZpbGUgbmFtZSBub3QgYW4gb2JqZWN0IGZpbGU6IGAje29fcGF0aH1gIikKKyAgICBleGl0KDMp
CisgIGVuZAorICBjeHhfYXJncworZW5kCisKKyMgRG8KKyMgICAgIG12IGJsYWguUyBibGFoLnBy
ZS5TCisjIFRoZSByZWFzb24gd2UgZG8gYSByZW5hbWUgaW5zdGVhZCBvZiBkaXJlY3RseSBnZW5l
cmF0aW5nIHRoZSAucHJlLnMKKyMgZmlsZSB3aGVuIGNvbXBpbGluZyBpcyBzbyB0aGF0IHRoZSBj
b3JyZXNwb25kaW5nIC5kd28gZmlsZSB3aWxsIGhhdmUKKyMgdGhlIGNvcnJlY3QgbmFtZSBlbWJl
ZGRlZC4KK2RlZiByZW5hbWVfc19maWxlKGFyZ3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4
KGFyZ3MpICsgMV0KKyAgRmlsZS5yZW5hbWUob19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZp
eCksCisgICAgICAgICAgICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhfcHJlKSkK
K2VuZAorCisjIEJ1aWxkCisjICAgICBwb3N0cHJvY2Vzc29yIGJsYWgucHJlLlMgYmxhaC5TCitk
ZWYgYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19p
ZHgoYXJncykgKyAxXQorCisgIHBwX2FyZ3MgPSBbCisgICAgJHBvc3Rwcm9jZXNzb3IsCisgICAg
b19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpLCAjIGlucHV0CisgICAgb19wYXRo
LnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkgIyBvdXRwdXQKKyAgXQorICAkaW50ZXJtZWRpYXRl
X3BhdGhzIDw8IHBwX2FyZ3NbLTJdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJnc1st
MV0KKyAgcHBfYXJncworZW5kCisKKyMgQnVpbGQKKyMgICAgIGN4eCAtbyBibGFoLm8gLWMgYmxh
aC5TCitkZWYgYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkKKyAgaV9pZHggPSBnZXRfYXJnX2lk
eF9zdWZmaXgoYXJncywgaV9wYXRoKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSAr
IDFdCisKKyAgYXNfYXJncyA9IGFyZ3MuY2xvbmUKKyAgaV9wYXRoID0gYXNfYXJnc1tpX2lkeF0K
KyAgYXNfYXJnc1tpX2lkeF0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICBh
c19hcmdzCitlbmQKKworYXJncyA9IEFSR1YudG9fYQoraV9wYXRoID0gZXh0cmFjdF9pbnB1dCEo
YXJncykKKworYmVnaW4KKyAgcnVuX2NtZChidWlsZF9jeHhfY21kKGFyZ3MpKQorICByZW5hbWVf
c19maWxlKGFyZ3MpCisgIHJ1bl9jbWQoYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykpCisg
IHJ1bl9jbWQoYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkpCitlbnN1cmUKKyAgJGludGVybWVk
aWF0ZV9wYXRocy5lYWNoIHsgfHB8CisgICAgaWYgRmlsZS5leGlzdD8ocCkKKyAgICAgIEZpbGUu
ZGVsZXRlKHApCisgICAgZW5kCisgIH0KK2VuZAorCitleGl0KDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3Rz
LnJiCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA4M2RjNmQ3ZTZlOTY3M2JmYjJlOTQ5MjYxOTAwYjM4NWE3ZTc2ZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZl
LWFzbS1maWxlLWNvbmZsaWN0cy5yYgpAQCAtMCwwICsxLDM2MiBAQAorIyEvdXNyL2Jpbi9lbnYg
cnVieQorCisjIFJlc29sdmUgY29uZmxpY3RzIGluIGAuZmlsZWAgZGlyZWN0aXZlcyBpbiBhc3Nl
bWJsZXIgZmlsZXMuIFRob3NlCisjIG1heSByZXN1bHQgZnJvbSBpbmxpbmUgYXNtIHN0YXRlbWVu
dHMgd2hpY2ggdGhlbXNlbHZlcyBoYXZlIGAuZmlsZWAKKyMgZGlyZWN0aXZlcy4gQXMgdGhlIGlu
bGluZSBhc20gaGFzIG5vIGlkZWEgd2hhdCB0aGUgbmV4dCBmcmVlIGZpbGUKKyMgbnVtYmVyIGlz
LCBpdCdsbCBnZW5lcmFsbHkgaGF2ZSBpdHMgb3duIG51bWJlcmluZy4gVG8gZ2V0IHRoaW5ncyB0
bworIyB3b3JrIHdlIGhhdmUgdG8KKyMgMS4gcmVtYXAgY29uZmxpY3RpbmcgZmlsZSBudW1iZXJz
CisjIDIuIGNoYW5nZSBgLmxvY2AgZGlyZWN0aXZlcyB0byByZWZlcmVuY2UgdGhlIGFwcHJvcHJp
YXRlIGZpbGUgbnVtYmVyLgorIworIyBUbyBiZSBhYmxlIHRvIGRvIHRoYXQsIHdlIG5lZWQgc29t
ZSBjb25jZXB0IG9mICJzY29wZSIsIGkuZS4gd2hpY2gKKyMgc2V0IG9mIGZpbGVzIGEgZ2l2ZW4g
YC5sb2NgIGRpcmVjdGl2ZSByZWZlcnMgdG8uIFdlIGdldCB0aGF0IGJ5CisjIHRyYWNraW5nIHRo
ZSAjQVBQLyNOT0FQUCBkaXJlY3RpdmVzIHRoYXQgdGhlIGNvbXBpbGVyIGVtaXRzIHdoZW4gaXQK
KyMgc3dpdGNoIHRvL2Zyb20gaW5saW5lIGFzbS4KKyMKKyMgSW4gZWZmZWN0LCB3ZSBjb252ZXJ0
CisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAxICJiYXIiCisj
ICAgICAuZmlsZSAyICJmb28iCisjICAgICAubG9jIDEsIFgKKyMgICAgICNOT0FQUAorIyAgICAg
LmxvYyAxLCBZCisjIHRvCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAu
ZmlsZSAyICJiYXIiCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAubG9jIDIsIFgKKyMgICAg
ICNOT0FQUAorIyAgICAgLmxvYyAxLCBZCisKK3JlcXVpcmUgJ3BhdGhuYW1lJworcmVxdWlyZSAn
c3RyaW5naW8nCityZXF1aXJlICdzdHJzY2FuJworCitQYXJzZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1
Y3QubmV3KDpzdHIpCitQYXJzZVJlc3VsdEVycm9yID0gU3RydWN0Lm5ldyg6ZXJyb3IpCisKKyMg
UGFyc2VzIHRoZSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwgZm9sbG93aW5nIGEgLmZpbGUgYXNzZW1i
bGVyIGRpcmVjdGl2ZQorY2xhc3MgRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIKKyAgZGVmIGluaXRp
YWxpemUocykKKyAgICBAcyA9IFN0cmluZ1NjYW5uZXIubmV3KHMpCisgIGVuZAorICBkZWYgcGFy
c2UKKyAgICBAcy5za2lwKC9ccyovKQorCisgICAgIyBXZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBz
dHJpbmcgbGl0ZXJhbAorICAgIHJldCA9IHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgcmV0
LnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIHJldHVybiByZXQKKyAgICBlbmQKKworICAgIEBz
LnNraXAoL1xzKi8pCisgICAgaWYgbm90IEBzLmVvcz8KKyAgICAgIHJldHVybiBQYXJzZVJlc3Vs
dEVycm9yLm5ldygiRXhwZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0ZXIgI3tyZXQuc3RyfSIpCisgICAg
ZW5kCisgICAgcmV0dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcocmV0LnN0cikKKyAgZW5kCisg
IGRlZiBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIEBzLnNjYW4oLyIvKS5uaWw/CisgICAg
ICBlcnIgPSAiRXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgYXQgYCN7QHMuc3RyaW5nfWAgKHBvcyAj
e0BzLnBvc30pIgorICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAgICBl
bmQKKyAgICBwYXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgZW5kCisgIGRlZiBw
YXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgICBzdGFydF9wb3MgPSBAcy5wb3MK
KyAgICB3aGlsZSB0cnVlCisgICAgICAjIFNlYXJjaCBmb3Igb3VyIHNwZWNpYWwgY2hhcmFjdGVy
cworICAgICAgQHMuc2tpcCgvW14iXFxdKy8pCisgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAg
ICAgIGlmIEBzLnNjYW4oL1xcLykKKyAgICAgICAgICAjIFdoZW4gd2Ugc2VlICdcXCcsIGNvbnN1
bWUgYm90aCBjaGFyYWN0ZXJzIHNvIHRoYXQgdGhlCisgICAgICAgICAgIyBzZWNvbmQgJ1wnIHdp
bGwgbm90IGJlIHRyZWF0ZWQgYXMgYW4gZXNjYXBlIGNoYXIuCisgICAgICAgICAgbmV4dAorICAg
ICAgICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgICAjIEZvciAnXCInLCBjb25zdW1lIGJv
dGggY2hhcmFjdGVycyBzbyB0aGF0IHRoZSAnIicgd2lsbCBub3QKKyAgICAgICAgICAjIHRlcm1p
bmF0ZSB0aGUgc3RyaW5nLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZW5kCisgICAgICAgIG5l
eHQKKyAgICAgIGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAjICciJyB3aXRob3V0IGEgcHJl
Y2VlZGluZyAnXCc7IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4KKyAgICAgICAgIyBXZSdyZSBhbHJl
YWR5IHBhc3QgdGhlICciJywgc28gdGhlIGxpdGVyYWwgZW5kcyBhdCAtMgorICAgICAgICAjIGNo
YXJhY3RlcnMuCisgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KEBzLnN0cmlu
Z1tzdGFydF9wb3MuLihAcy5wb3MgLSAyKV0pCisgICAgICBlbHNpZiBAcy5lb3M/CisgICAgICAg
IGVyciA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwgKHN0YXJ0aW5nIGF0IHBvcyAje3N0
YXJ0X3Bvc30gaW4gI3tAcy5zdHJpbmd9IgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJv
ci5uZXcoZXJyKQorICAgICAgZW5kCisgICAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgKCN7QHMu
aW5zcGVjdH0pIgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgdGVzdChvdXRmLCBzdHIsIHJl
cykKKyAgcHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcoc3RyKS5wYXJzZQorICBpZiBy
ZXMuaXNfYT8oQXJyYXkpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgb3V0
Zi5wdXRzKCJQYXJzZSByZXN1bHQgaXMgYCN7cHIuZXJyb3J9YCBidXQgZXhwZWN0ZWQgI3tyZXN9
IikKKyAgICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIGlmIHByLnN0ciAhPSByZXNbMF0K
KyAgICAgIG91dGYucHV0cygiUGFyc2VkIHBhdGggYCN7cHIuc3RyfWAgYnV0IGV4cGVjdGVkIGAj
e3Jlc1swXX1gIikKKyAgICAgIG91dGYucHV0cygiWFhYOiAje3ByLnN0ci5jbGFzc30gI3twci5z
dHIuc2l6ZX0gdnMgI3tyZXNbMF0uY2xhc3N9ICN7cmVzWzBdLnNpemV9IikKKyAgICAgIHJldHVy
biBmYWxzZQorICAgIGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lmIHJlcy5pc19hPyhTdHJp
bmcpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgaWYgbm90IHByLmVycm9y
LmRvd25jYXNlLmluY2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAgZXJyID0gIkVycm9yIG1l
c3NhZ2UgYCN7cHIuZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVjdGVkIHN1YnN0cmluZyBg
I3tyZXN9YCIKKyAgICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAgcmV0dXJuIGZhbHNlCisg
ICAgICBlbmQKKyAgICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAgb3V0Zi5wdXRzKCJFeHBl
Y3RlZCBlcnJvciAoI3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFyc2UgI3twci5zdHJ9IikK
KyAgICByZXR1cm4gZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRlcm5hbCBlcnJvciAje3Jl
cy5jbGFzc30iCisgIGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBucl9zdWNjZWVkZWQgPSAw
CisgIHRlc3RzID0gWworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsnImZvby9iYXIiJywgWyJm
b28vYmFyIl1dLAorCisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCJd
LAorCisgICAgWyciZm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAg
ICAjICJmb29cIgorICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJh
bCJdLAorCisgICAgIyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIsIFsiZm9vXHg1Y1x4NWMi
XV0sCisKKyAgICAjIENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJiYXIiJywgWydmb29cImJh
ciddXSwKKworICAgICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyciZm9vL2JhciInLCBbJ2Zv
by9iYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAgIFsnIi9iYXIiJywgWycv
YmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0d28gY29tcG9uZW50cwor
ICAgIFsnIi9iYXIvYmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAjIENhbiBkZXRlY3Qgc3Ry
YXkgdG9rZW4KKyAgICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdLAorCisg
ICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVzcGFjZQorICAgIFsnImZv
byJiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgV2lsbCBub3QgYWNjZXB0
IGNsYW5nLXN0eWxlIC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3JraW5nX2RpcmVjdG9yeSIg
InBhdGgiJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBvdXRmID0gU3RyaW5nSU8u
bmV3KCIiKQorICB0ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlmIHRlc3Qob3V0Ziwgc3Ry
LCByZXMpCisgICAgICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAorICB9CisgIGlmIG5yX3N1
Y2NlZWRlZCAhPSB0ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91dGYuc3RyaW5nKQorICAg
ICRzdGRlcnIucHV0cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25yX3N1Y2NlZWRlZH0vI3t0
ZXN0cy5zaXplfSIpCisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisjIEtlZXAgdHJhY2sgb2Yg
d2hpY2ggZmlsZW5vIGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0aC4gV2UgY2FsbAorIyB0
aGUgZmlsZW5vIGEgJ3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2VyCisgIEBAbmV4dF9mcmVl
ID0gMSAgICMgTmV4dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMgPSB7fSAjIE1hcHMgcGF0
aCAtPiBnbG9iYWwgc2xvdAorICBkZWYgaW5pdGlhbGl6ZQorICAgICMgVGhpcyBtYXBzIGZyb20g
b3VyIG93biBsb2NhbCBzbG90cyAoaS5lLiB3aXRoaW4gYW4gQVBQIHNlY3Rpb24pCisgICAgIyB0
byBhIGdsb2JhbCBzbG90LgorICAgIEBzbG90X21hcCA9IHt9CisgIGVuZAorICAjIFdlIG1ha2Ug
c3VyZSB0aGF0IC5maWxlIGRpcmVjdGl2ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzYW1lIHBhdGggYXJl
CisgICMgZGVkdXAnZCwgaS5lLiBpZiB3ZSBzZWUKKyAgIyAgICAgLmZpbGUgTiAiL3BhdGgvdG8v
aW5jbHVkZS5oIgorICAjICAgICAuLi4KKyAgIyAgICAgLmZpbGUgTSAiL3BhdGgvdG8vaW5jbHVk
ZS5oIgorICAjIHRoZW4gdGhlICJsb2NhbCIgTiwgTSBzbG90cyB3aWxsIGJlIG1hcHBlZCB0byB0
aGUgc2FtZSAiZ2xvYmFsIiBzbG90LgorICBkZWYgcmVnaXN0ZXJfcGF0aChwYXRoLCBzbG90KQor
ICAgIGN1cnJfc2xvdCA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBjdXJyX3Nsb3QubmlsPworICAg
ICAgIyBXZSBoYXZlbid0IHNlZW4gdGhpcyBmaWxlIGJlZm9yZQorICAgICAgaWYgc2xvdCA8PSBA
QG5leHRfZnJlZQorICAgICAgICAjIERlc2lyZWQgZmlsZSBzbG90IGVpdGhlciBjbGFzaGVzIHdp
dGggYW4gZXhpc3Rpbmcgb25lLCBvciBpcworICAgICAgICAjIHRoZSBuZXh0IG9uZSB0byBiZSBh
bGxvY2F0ZWQuIEluIGVpdGhlciBjYXNlLCBhc3NpZ24gdGhlCisgICAgICAgICMgbmV4dCBmcmVl
IHNsb3QuCisgICAgICAgIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICAgIGVsc2UKKyAgICAg
ICAgIyBEb24ndCBhbGxvdyBzbG90IGdhcHMuIFRlY2huaWNhbGx5IHdlIGNvdWxkIGhhbmRsZSB0
aGVtLCBidXQKKyAgICAgICAgIyB0aGV5IHNob3VsZCBuZXZlciBoYXBwZW47IGJhaWwgbm93IHJh
dGhlciB0aGFuIHBhcGVyaW5nIG92ZXIKKyAgICAgICAgIyBhbiBlYXJsaWVyIGVycm9yLgorICAg
ICAgICAkc3RkZXJyLnB1dHMoIkZpbGUgd2FudHMgc2xvdCAje3Nsb3R9IGJ1dCBvbmx5IHNlZW4g
I3tAQG5leHRfZnJlZX0gc28gZmFyIikKKyAgICAgICAgZXhpdCgyKQorICAgICAgZW5kCisgICAg
ZWxzZQorICAgICAgIyBXZSd2ZSBhbHJlYWR5IGFzc2lnbmVkIGEgc2xvdCBmb3IgdGhpcyBmaWxl
LgorICAgIGVuZAorICAgIEBzbG90X21hcFtzbG90XSA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBA
c2xvdF9tYXBbc2xvdF0ubmlsPworICAgICAgcmFpc2UgIkRpZG4ndCBtYXAgbG9jYWwgc2xvdCAj
e3Nsb3R9IgorICAgIGVuZAorICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgZm9yIHBhdGgK
KyAgZGVmIHNsb3RfZm9yX3BhdGgocGF0aCkKKyAgICByZXR1cm4gQEBwYXRoc1twYXRoXQorICBl
bmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgdGhhdCB3aWxsIHJlcGxhY2UgdGhlIGxvY2FsIHNs
b3QKKyAgZGVmIHJlbWFwX3Nsb3Qoc2xvdCkKKyAgICBAc2xvdF9tYXBbc2xvdF0KKyAgZW5kCisg
IHByaXZhdGUKKyAgZGVmIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBAQHBhdGhzW3BhdGhd
ID0gQEBuZXh0X2ZyZWUKKyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAorZW5kCisKKyMgUmV0
dXJuIHNlcXVlbnRpYWwgbGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciB3ZSdy
ZSBpbiBhbgorIyAjQVBQIG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNtUmVhZGVyCisgIGF0
dHJfcmVhZGVyIDppbl9hcHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25vYXBwLCA6bm9hcHBf
dG9fYXBwCisgIGRlZiBpbml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAgQGYucmV3aW5kCisg
ICAgQGxpbmVuciA9IDAKKyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFzdF9zd2l0Y2ggPSAi
c3RhcnQgb2YgZmlsZSIgIyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisgIGRlZiBuZXh0X2xp
bmUKKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAgaWYgbC5uaWw/Cisg
ICAgICAgIHJldHVybiBsCisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0gMQorICAgICAgaWYg
L14jXHMqQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisgICAgICAgICAgcmFp
c2UgIiNBUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNBUFAgKCN7QGxhc3Rf
c3dpdGNofSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1ZQorICAgICAgICBA
bGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19hcHAKKyAgICAgICAg
ICBAbm9hcHBfdG9fYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgICAgbmV4dAorICAgICAg
ZW5kCisgICAgICBpZiAvXiNccypOT0FQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgbm90IEBp
bl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgd2Fz
IG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVu
ZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVu
cgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90b19ub2FwcC5jYWxs
KCkKKyAgICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGwK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgRmlsZUNvbmZsaWN0UmVzb2x2ZXIKKyAgQEBm
aWxlX3JlID0gL15ccypbLl1maWxlXHMrKD88c2xvdD5cZCspXHMrKD88cmVzdD4uKikkLworICBA
QGxvY19yZSA9IC9eKD88d2hpdGUxPlxzKilbLl1sb2MoPzx3aGl0ZTI+XHMrKSg/PHNsb3Q+XGQr
KSg/PHJlc3Q+XHMrXGQrLiopJC8KKyAgZGVmIGluaXRpYWxpemUoaW5mLCBvdXRmKQorICAgIEBv
dXRmID0gb3V0ZgorICAgIEB0cmFja2VycyA9IFtGaWxlU2xvdFRyYWNrZXIubmV3XQorICAgIEBh
c21fcmVhZGVyID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFuICNB
UFAgc2VjdGlvbiAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBpbmxp
bmUgYXNtIHN0YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVjdAor
ICAgICMgcHJvY2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5ldyAi
bmFtZXNwYWNlIgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25jZXJu
ZWQpLiBUaGlzIGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXplIHdp
bGwgZWl0aGVyIGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFwcF90
b19ub2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBfdG9f
YXBwID0gUHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQHRyYWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldykKKyAgICB9CisgIGVuZAor
ICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBhc21fcmVhZGVyLm5leHRfbGlu
ZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBAQGZpbGVfcmUubWF0Y2gobCkK
KyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgICAgICBuZXh0Cisg
ICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1kCisgICAg
ICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAgICAgQG91
dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5kCisgIGRlZiBsb2NfZGlyZWN0
aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorICAgIHNsb3QgPSB0cmFja2Vy
LnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYucHV0cygiI3ttZFs6d2hpdGUx
XX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19IikKKyAgZW5kCisgIGRlZiBm
aWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNrZXJzLmxhc3QKKworICAgIHBy
ID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0XSkucGFyc2UKKyAgICBpZiBw
ci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHBhcnNpbmcg
cGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIuZXJyb3J9IikKKyAgICAgIGV4
aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAgICB0cmFja2VyLnJlZ2lzdGVy
X3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90ID0gdHJhY2tlci5zbG90X2Zv
cl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0I3tzbG90fSAje21kWzpyZXN0
XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUgb3VyIHRlc3RzIHN0aWxsIHBh
c3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91ciBydW50aW1lIGFuZCBlbnN1
cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRyeWluZyBvdXQKKyMgY2hhbmdl
cyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNpemUgIT0gMgorICAkc3RkZXJy
LnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBleGl0KDIpCitlbmQKKworaW5w
YXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhuYW1lLm5ldyhuKSB9CisKK2lm
IG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3QgYSByZWd1bGFyIGZpbGU6IGAj
e2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0aC5leHRuYW1lLnVwY2FzZSAh
PSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBgI3tpbnBhdGh9YCBkb2Vzbid0
IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBvbiBhbnl3YXkuLi4iKQorZW5k
CisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBGaWxlLm9wZW4ob3V0cGF0aCwg
InciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVyLm5ldyhpbmYsIG91dGYpLnJ1
bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEzYTlmYjMzZTJmZjIzNTJjNjll
YmE3Ni4uOWUyYTc0MmEyNGE5MTZmY2ZlYmQxZGEyZTBhODY5YjMzNzhlMGMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcApA
QCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5
T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAjZGVmaW5lIE9GRkxJ
TkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRpZgogCisjaWYgZGVmaW5lZChQ
T1NUUFJPQ0VTU19BU00pICYmIENPTVBJTEVSKEdDQykKKy8vIFRoaXMgd29ya3MgYXJvdW5kIGEg
YnVnIGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8vIGRvZXNuJ3QgaGF2
ZSBhbnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFibGUgd29uJ3QKKy8v
IGV2ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50X2FzbSBzbyB0aGF0
IHRoZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1l
bnQgaXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29tcGlsZXIuIFRoaXMg
d2F5LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFzbSBjb2RlIHRvIHRo
aXMgY29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29rCisvLyB1cCB0aGUg
bGluZSBudW1iZXIgaW5mb3JtYXRpb24uCitNQVJLRVJfU1lNQk9MKGJlZm9yZV9sbGludF9hc20p
CisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5l
cmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBj
b2RlCiAvLyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorI2lmIGRlZmluZWQo
UE9TVFBST0NFU1NfQVNNKSAmJiBDT01QSUxFUihHQ0MpCitNQVJLRVJfU1lNQk9MKGFmdGVyX2xs
aW50X2FzbSkKKyNlbmRpZiAvKiBXVEZfQ09NUElMRVJfR0NDICovCisKICNlbmRpZiAvLyBFTkFC
TEUoQ19MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
Y29uZmlnLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCmlu
ZGV4IDQ5NTQzZmNkMWIyZmExNmU2NTg4YjY4MzI4OWFjMDQ3NzI3YjdmMGUuLjJkYzk1MzI5YTVh
N2ZiMDdiZDhiZjRkNjA5MWUzN2VmZDkyNWRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9jb25maWcucmIKQEAgLTg5LDYgKzg5LDEwIEBAIGRlZiBzaG91bGRFbmFibGVE
ZWJ1Z0Fubm90YXRpb25zKCkKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIGVuZAog
ICAgICAgICBlbmQKKyAgICBlbHNpZiBFTlZbIkNNQUtFX0NYWF9DT01QSUxFUl9JRCJdID09ICdH
TlUnIGFuZAorICAgICAgICAgRU5WWyJHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQIl0gPT0gJzEn
CisgICAgICAjIEFsbCBHQ0MgdmVyc2lvbnMgdGhhdCBjYW4gYnVpbGQgSlNDIHN1cHBvcnQgZGVi
dWcgYW5ub3RhdGlvbnMKKyAgICAgIHJldHVybiB0cnVlCiAgICAgZW5kCiAKICAgICBmYWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bXBpbGVyLmgKaW5kZXggNDM3NGNiM2FmMjNjODliYjUzNDk0NjlkYzg4ZWZjNjQ0NjE0YTQ3Yy4u
ZGZjYzQ1NDFhNDk5YTk2ZWZkNWM2MWNhMTViNmExM2FhYjc3MDYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBA
IC0zODIsNiArMzgyLDE1IEBACiAjZGVmaW5lIFdBUk5fVU5VU0VEX1JFVFVSTgogI2VuZGlmCiAK
Ky8qIE5PX1JFT1JERVIgKi8KKyNpZiAhZGVmaW5lZChOT19SRU9SREVSKSAmJiBDT01QSUxFUihH
Q0MpCisjZGVmaW5lIE5PX1JFT1JERVIgX19hdHRyaWJ1dGVfXygoX19ub19yZW9yZGVyX18pKQor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZChNQVJLRVJfU1lNQk9MKSAmJiBDT01QSUxFUihHQ0MpCisj
ZGVmaW5lIE1BUktFUl9TWU1CT0wobmFtZSkgdm9pZCBOT19SRU9SREVSIG5hbWUodm9pZCkgeyBf
X2FzbV9fKCIiKTsgfQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBD
T01QSUxFUihNU1ZDKQogI2RlZmluZSBfX2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394270</attachid>
            <date>2020-03-23 10:01:52 -0700</date>
            <delta_ts>2020-03-24 07:16:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200323170150.patch</filename>
            <type>text/plain</type>
            <size>26124</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi5kYTMzMjNkNjFjNTE2YTlk
ZWRhODM4YmYwOWY4MzIzZGQ2ZDliNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAyMC0wMy0yMyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIG9mZmVycyBubyB3
YXkgdG8gb3ZlcnJpZGUgdGhlIGNvbXBpbGVyIG9uIGEKKyAgICAgICAgcGVyLWZpbGUgYmFzaXMg
YW5kIEdDQyBkb2Vzbid0IGFsbG93IHNldHRpbmcgdGhlIGFzc2VtYmxlciBleGNlcHQgYXQKKyAg
ICAgICAgY29uZmlndXJlIHRpbWUsIHNvIHdlIG5lZWQgdG8gd3JhcCBldmVyeSBjb21waWxlciBp
bnZvY2F0aW9uLiBUaGlzCisgICAgICAgIG9ubHkgaGFwcGVucyB3aGVuIGJ1aWxkaW5nIHdpdGgg
R0NDIGFuZCB0aGUgdXNlciBoYXMgZXhwbGljaXRseQorICAgICAgICByZXF1ZXN0ZWQgaXQsIGVp
dGhlciBieSBzZWxlY3RpbmcgYSBkZWJ1ZyBidWlsZCBvciBzZXR0aW5nCisgICAgICAgIEdDQ19P
RkZMSU5FQVNNX1NPVVJDRV9NQVAuCisKKyAgICAgICAgVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3Zl
cmhlYWQsIHdlIHVzZSBhIHR3by1sZXZlbCB3cmFwcGVyIHNjaGVtZS4gVGhlCisgICAgICAgIGZp
cnN0IHdyYXBwZXIgKGN4eC13cmFwcGVyLCBpbiAvYmluL3NoKSBxdWlja2x5IGNoZWNrcyBpZiB0
aGVyZSdzIGEKKyAgICAgICAgc3BlY2lhbCBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbiBpbiB0aGUg
YXJndW1lbnRzLiBJZiBub3QsIGl0J2xsCisgICAgICAgIGV4ZWN1dGUgdGhlIHJlZ3VsYXIgY29t
cGlsZXIuIElmIHRoZSBzcGVjaWFsIGFyZ3VtZW50IGlzIHRoZXJlLCBpdCdsbAorICAgICAgICBl
eGVjIGEgc2Vjb25kIGxldmVsIHdyYXBwZXIgKHBvc3Rwcm9jZXNzLWFzbSwgcnVieSkgdGhhdCBn
ZW5lcmF0ZXMgYQorICAgICAgICAuUyBmaWxlLCB3aGljaCBnZXRzIHJld3JpdHRlbiBieSByZXNv
bHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYi4gVGhlCisgICAgICAgIG92ZXJoZWFkIGFwcGVhcnMg
dG8gYmUgaW4gdGhlIG5vaXNlLgorCisgICAgICAgIFNlY29uZCwgR0RCIHdpbGwgb25seSBsb29r
IGF0IHRoZSBsaW5lIHRhYmxlIGZvciBhIGNvbXBpbGF0aW9uIHVuaXQgaWYKKyAgICAgICAgaXQg
Y2FuIGZpcnN0IHJlc29sdmUgdGhlIGFkZHJlc3MgdG8gb25lIG9mIHRoZSBrbm93biBzeW1ib2xz
IGluIHRoZQorICAgICAgICBmaWxlLiBJbnRyb2R1Y2UgbWFya2VyIHN5bWJvbHMgdG8gd29yayBh
cm91bmQgdGhpcyBidWcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBT
Y3JpcHRzL2N4eC13cmFwcGVyOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Bvc3Rwcm9jZXNz
LWFzbTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0
cy5yYjogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6Cisg
ICAgICAgICogb2ZmbGluZWFzbS9jb25maWcucmI6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2Vl
cEFsaXZlIHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2OTI0ZGZmYzdiODA1N2UyYjI2
OWUxMGVlYjM3Y2VhZmYwZDgwZTUuLmU0NmRlNGI1MzMyNTZhYTJkZjIxODVlZGNhY2FkMjE5YWM5
ODkxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDMtMjMgIEFuZ2Vsb3MgT2lrb25vbW9w
b3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CisKKyAgICAgICAgRW5hYmxlIG9mZmxpbmVhc20g
ZGVidWcgYW5ub3RhdGlvbnMgZm9yIEdDQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvQ29tcGlsZXIuaDoKKwogMjAyMC0wMy0yMyAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nVmlldzo6c3RhcnRz
V2l0aCBhbmQgU3RyaW5nOjpzdGFydHNXaXRoIGRvIG5vdCB0cmVhdCBudWxsIHN0cmluZ3MgdGhl
IHNhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZmYyMjVlMDcxZDll
YjRjYzQ0ZWRlOGVhNmU4NWY0MWI1YmUyN2U4Li4wMDI1NDA4NDhkNDU4ZDc1MTk0YzIyOWYyMzZl
ZTM5MThmMTRiZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzAs
NiArMTMwLDQ0IEBAIGVuZGlmICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJD
RVNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCiAKK29wdGlvbihHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVnIGxpbmUgaW5mb3JtYXRpb24gZm9y
IG9mZmxpbmVhc20tZ2VuZXJhdGVkIGNvZGUiKQorCisKKyMgRW5hYmxlIGJ5IGRlZmF1bHQgZm9y
IERlYnVnIGJ1aWxkcywgYWxsb3cgdGhlIHVzZXIgdG8gbWFudWFsbHkKKyMgcmVxdWVzdCBzb3Vy
Y2UgbWFwcGluZyBmb3IgUmVsZWFzZSBidWlsZHMuCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJF
UVVBTCAiRGVidWciKQorICBzZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUCAiT04iKQorZW5k
aWYgKCkKKworaWYgKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCBBTkQgR0NDX09GRkxJTkVBU01f
U09VUkNFX01BUCkKKyAgbWVzc2FnZShTVEFUVVMgIkVuYWJsaW5nIGFzbSBwb3N0cHJvY2Vzc2lu
ZyIpCisgICMgQXMgdGhlcmUncyBwb29yIHRvb2xjaGFpbiBzdXBwb3J0IGZvciB1c2luZyBgLmZp
bGVgIGRpcmVjdGl2ZXMgaW4KKyAgIyBpbmxpbmUgYXNtIChpLmUuIHRoZXJlJ3Mgbm8gd2F5IHRv
IGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgYC5maWxlYAorICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVk
IGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAjIGludHJvZHVj
ZSBhIHBvc3Rwcm9jZXNzaW5nIHBhc3MgZm9yIHRoZSBhc20gdGhhdCBnZXRzIGFzc2VtYmxlZAor
ICAjIGludG8gYW4gb2JqZWN0IGZpbGUuICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNsb3cg
ZG93biB0aGUKKyAgIyBidWlsZCBpbiB0aGUgY29tbW9uIGNhc2UuIFVuZm9ydHVuYXRlbHksIGNt
YWtlIGRvZXNuJ3QgYWxsb3cgdXMgdG8KKyAgIyBpbnRyb2R1Y2UgYSBjb21waWxlciB3cmFwcGVy
IGZvciBhIHNpbmdsZSBzb3VyY2UgZmlsZSwgc28gd2Ugd3JhcAorICAjIGV2ZXJ5dGhpbmcgaW4g
dGhlIGN4eC13cmFwcGVyIHRoYXQgcXVpY2tseSBkZXRlcm1pbmVzIGlmCisgICMgcG9zdHByb2Nl
c3NpbmcgaXMgbmVlZGVkLiBJZiBub3QsIGl0J2xsIGp1c3QgZXhlYyB0aGUgcmVndWxhcgorICAj
IGNvbXBpbGVyLiBJZiBzbywgaXQnbGwgZXhlYyB0aGUgc2xvdyBwYXRoIHdyYXBwZXIgdGhhdCBh
Y3R1YWxseQorICAjIGRvZXMgdGhlIHBvc3Rwcm9jZXNzaW5nLgorCisgICMgTm90ZTogdGhlIGAu
ZmlsZWAgZGlyZWN0aXZlcyBlbWl0dGVkIGJ5IGFzbS5yYiBhcmUgb25seSBhbiBpc3N1ZQorICAj
IHdoZW4gd2UncmUgY29tcGlsaW5nIHRoZSAuY3h4IGZpbGUgd2l0aCAtZworICBzZXQoQ01BS0Vf
Q1hYX0NPTVBJTEVSX0xBVU5DSEVSICIke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19E
SVJ9L2N4eC13cmFwcGVyIikKKworICAjIEFkZCBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3Rp
dmUgKHVudXNlZCBpbiB0aGUgc291cmNlKSB0bworICAjIHNpZ25pZnkgdG8gb3VyIHdyYXBwZXIg
dGhhdCB3ZSB3YW50IGFzbSBwb3N0cHJvY2Vzc2luZyBmb3IgdGhpcworICAjIGZpbGUuIFdlIHBh
c3MgaW4gdGhlIGZpbGVuYW1lIHNvIHRoYXQgdGhlIHdyYXBwZXIgY2FuIGFjY3VyYXRlbHkKKyAg
IyBpZGVudGlmeSB0aGUgc291cmNlIGZpbGUuCisgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGll
cygibGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiCisgICAgUFJPUEVSVElFUworICAgIENP
TVBJTEVfREVGSU5JVElPTlMgIlBPU1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcCIpCisKK2VuZGlmICgpCisKICMgR2xvYmJpbmcgcmVsaWVzIG9uIHRoZSBmYWN0IHRo
YXQgZ2VuZXJhdG9yLXNwZWNpZmljIGZpbGUgbmFtZXMgYXJlIHByZWZpeGVkIHdpdGggdGhlaXIg
ZGlyZWN0b3J5LgogIyBUb3AtbGV2ZWwgc2NyaXB0cyBzaG91bGQgaGF2ZSBhIGZpbGUgZXh0ZW5z
aW9uLCBzaW5jZSB0aGV5IGFyZSBpbnZva2VkIGR1cmluZyB0aGUgYnVpbGQuCiAKQEAgLTMyMyw3
ICszNjEsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgT1VUUFVUICR7SmF2YVNjcmlwdENv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0KICAgICBNQUlOX0RFUEVOREVO
Q1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiCiAgICAgREVQRU5EUyBM
TEludE9mZnNldHNFeHRyYWN0b3IgJHtMTElOVF9BU019ICR7T0ZGTElORV9BU019ICR7SmF2YVNj
cmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0V2FzbS5hc20KLSAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIg
LUkke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJDxUQVJHRVRfRklMRTpMTEludE9m
ZnNldHNFeHRyYWN0b3I+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtM
TEludE91dHB1dH0gJHtPRkZMSU5FX0FTTV9BUkdTfQorICAgIENPTU1BTkQgJHtDTUFLRV9DT01N
QU5EfSAtRSBlbnYgQ01BS0VfQ1hYX0NPTVBJTEVSX0lEPSR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lE
fSBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQPSR7R0NDX09GRkxJTkVBU01fU09VUkNFX01BUH0g
JHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9vZmZsaW5lYXNtL2FzbS5y
YiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vICR7SkFWQVNDUklQVENP
UkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkPFRBUkdFVF9GSUxFOkxMSW50
T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8k
e0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CiAgICAgQ09NTUFORCAke0NNQUtFX0NP
TU1BTkR9IC1FIHRvdWNoX25vY3JlYXRlICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vJHtMTEludE91dHB1dH0KICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9CiAgICAgVkVSQkFUSU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9jeHgtd3JhcHBlciBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2N4eC13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZGFmZjcyODgwYjc1Mzg0MDEz
Y2U0ZTRjMmE2NDNjZmFlMjYyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9jeHgtd3JhcHBlcgpAQCAtMCwwICsxLDIxIEBACisjIS9iaW4vc2gKKwor
IyBUaGlzIGlzIHRoZSAiZmFzdCBwYXRoIiB3cmFwcGVyIGZvciBBU00gcG9zdHByb2Nlc3Npbmcu
IEluIHRoZQorIyBjb21tb24gY2FzZSwgd2UnbGwgZXhhbWluZSBvdXIgYXJndW1lbnRzLCBkZXRl
cm1pbmUgdGhlcmUncyBubyBuZWVkCisjIGZvciBwb3N0cHJvY2Vzc2luZyBhbmQgZXhlYyB0aGUg
Y29tcGlsZXIuICBUaGlzIGlzIGNvZGVkIGluIFBPU0lYCisjIHNoLCBpbiB0aGUgaG9wZSB0aGF0
IHdlJ2xsIGJlIHJ1biBieSBzb21lIGxpZ2h0d2VpZ2h0IHNoZWxsIHRoYXQgaGFzCisjIG1pbmlt
YWwgc3RhcnR1cCB0aW1lLgorCitwb3N0cHJvY2Vzcz0wCitmb3IgYXJnIGluICIkQCI7IGRvCisg
ICAgaWYgWyAieC1EUE9TVFBST0NFU1NfQVNNIiA9ICJ4JHthcmclJT0qfSIgXTsgdGhlbgorCXBv
c3Rwcm9jZXNzPTEKKwlicmVhaworICAgIGZpCitkb25lCisKK2lmIFsgJHBvc3Rwcm9jZXNzIC1l
cSAwIF07IHRoZW4KKyAgICBleGVjICIkQCIKK2ZpCisKK2V4ZWMgIiQoZGlybmFtZSAiJDAiKS9w
b3N0cHJvY2Vzcy1hc20iICIkQCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bv
c3Rwcm9jZXNzLWFzbQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjIzYzIyYzc5Y2Y4ZjhmOTc1ZDI3NTViZWI4OGY4
NmE5YjM0MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvcG9zdHByb2Nlc3MtYXNtCkBAIC0wLDAgKzEsMTcwIEBACisjIS91c3IvYmluL2VudiBydWJ5
CisKKyMgV3JhcHBlciBmb3IgYSAuY3BwIC0+IC5vIGNvbXBpbGF0aW9uIGNvbW1hbmQuIEl0Cisj
IDEuIGNvbnZlcnRzIHRoZSBjb21tYW5kIHRvIGdlbmVyYXRlIGEgYC5zJyBmaWxlCisjIDIuIHJ1
bnMgdGhlIEFTTSBwb3N0cHJvY2Vzc29yIG9uIGl0IHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBgLnNg
IGZpbGUKKyMgMy4gYXNzZW1ibGVzIHRoZSBgLnNgIGZpbGUgdG8gYSBgLm9gIGZpbGUKKworJGFz
bV9zdWZmaXhfcHJlID0gIi5wcmUucyIKKyRhc21fc3VmZml4ID0gIi5zIgorJHBvc3Rwcm9jZXNz
b3IgPSAiI3tGaWxlLmRpcm5hbWUoJDApfS9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYiIK
KworCiskaW50ZXJtZWRpYXRlX3BhdGhzID0gW10KKworIyBXZSBuZWVkIHRvIHdvcmsgd2l0aCBp
bmRpY2VzIGEgbG90IGFuZCB1bmZvcnR1bmF0ZWx5ICdnZXRvcHRsb25nJyBpbgorIyB0aGUgc3Rh
bmRhcmQgbGlicmFyeSBkb2Vzbid0IGV4cG9zZSBvcHRpbmQsIHNvIHdlJ3JlIGdvaW5nIHdpdGgK
KyMgYXJyYXkgc2VhcmNoZXMgZm9yIHNpbXBsaWNpdHkuCitkZWYgaW5kZXhfbm9mYWlsKGFyeSwg
ZiwgZXJybXNnKQorICBpZHggPSBhcnkuaW5kZXggeyB8ZWx8CisgICAgZi5jYWxsKGVsKQorICB9
CisgIGlmIGlkeC5uaWw/CisgICAgJHN0ZGVyci5wdXRzKGVycm1zZykKKyAgICBleGl0KDMpCisg
IGVuZAorICBpZHgKK2VuZAorCisjIEZpbmQgYW5kIHJldHVybiB0aGUgc291cmNlIGZpbGUgZm9y
IHRoaXMgY29tcGlsYXRpb24gY29tbWFuZCwKKyMgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgYXJncy4g
Tm90ZSB0aGF0IHRoZSBwYXRoIChBKSBhcyBpdCBhcHBlYXJzIGhlcmUKKyMgKGNvbWluZyBmcm9t
IGEgY21ha2UgcnVsZSkgaXMgbGlrZWx5IHRvIGJlIGRpZmZlcmVudCB0byB0aGUKKyMgYW5vbnlt
b3VzIGFyZ3VtZW50IChCKSB0byB0aGUgY29tcGlsYXRpb24gY29tbWFuZC4gSG93ZXZlciwgQSB3
aWxsCisjIGJlIGEgc3VmZml4IG9mIEIuCisjCisjIEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUg
YXJndW1lbnQgaXMgbm90IHRoZXJlLiBUaGlzIGhhcyBhbHJlYWR5CisjIGJlZW4gY2hlY2tlZCBi
eSBgY3h4LXdyYXBwZXJgLCBvdGhlcndpc2Ugd2Ugd291bGRuJ3QgYmUgcnVubmluZy4KK2RlZiBl
eHRyYWN0X2lucHV0IShhcmdzKQorICBwcmVmaXggPSAnLURQT1NUUFJPQ0VTU19BU009JworCisg
IGlkeCA9IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgYXJnLnN0YXJ0
X3dpdGg/KHByZWZpeCkKKyAgfSwgIk5vIGAtRFBPU1RQUk9DRVNTX0FTTWAgYXJndW1lbnRgIikK
KworICBwYXRoID0gYXJnc1tpZHhdW3ByZWZpeC5zaXplLi4tMV0KKyAgaWYgcGF0aC5zaXplID09
IDAKKyAgICAkc3RkZXJyLnB1dHMoIkVtcHR5IHBhdGggaW4gLURQT1NUUFJPQ0VTU19BU009IikK
KyAgICBleGl0KDMpCisgIGVuZAorICAjIFdlIG9ubHkgbmVlZCB0aGlzIHRvIGJlIGRlZmluZWQg
Zm9yIHRoZSBwcmVwcm9jZXNzb3IgKG5vdCBhbnkKKyAgIyB3cmFwcGVyKSBmcm9tIG5vdyBvbi4K
KyAgYXJnc1tpZHhdID0gIi1EUE9TVFBST0NFU1NfQVNNIgorICByZXR1cm4gcGF0aAorZW5kCisK
KyMgR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYXJndW1lbnQgZW5kaW5nIGluIHRoaXMgc3Vm
Zml4LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzbid0IHRoZXJl
LiBXZSdyZSBvbmx5IGV2ZXIKKyMgY2FsbGVkIHdpdGggYXJndW1lbnRzIHdlIGtub3cgYXJlIGJl
aW5nIHBhc3NlZCBpbiBieSB0aGUgYnVpbGQKKyMgc3lzdGVtLgorZGVmIGdldF9hcmdfaWR4X3N1
ZmZpeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8
CisgICAgICAgICAgICAgICAgIGFyZy5lbmRfd2l0aD8od2FudGVkKQorICAgICAgICAgICAgICAg
fSwgIk5vIGFyZ3VtZW50IGVuZHMgd2l0aCAje3dhbnRlZH0iKQorZW5kCisKKyMgR2V0IGluZGV4
IG9mIGEgZ2l2ZW4gYXJndW1lbnQuIERpZSBpZiBpdCdzIG5vdCB0aGVyZS4KK2RlZiBnZXRfYXJn
X2lkeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8
CisgICAgICAgICAgICAgICAgIGFyZyA9PSB3YW50ZWQKKyAgICAgICAgICAgICAgIH0sICJObyBg
I3t3YW50ZWR9YCBhcmd1bWVudCIpCitlbmQKKworIyBHZXQgdGhlIGluZGV4IG9mIGAtb2AgYW5k
IHZlcmlmeSB0aGF0IGFuIGFyZ3VtZW50IGZvbGxvd3MuCisjIEJvdGggYXJlIGd1YXJhbnRlZWQg
dG8gZXhpc3QgKGZyb20gb3VyIGJ1aWxkIHN5c3RlbSkuCitkZWYgZ2V0X29faWR4KGFyZ3MpCisg
IGkgPSBnZXRfYXJnX2lkeChhcmdzLCAnLW8nKQorICBpZiAoaSArIDEpID49IGFyZ3Muc2l6ZQor
ICAgICRzdGRlcnIucHV0cygiTm8gYXJndW1lbnQgdG8gYC1vYCIpCisgICAgZXhpdCgzKQorICBl
bmQKKyAgaQorZW5kCisKKyMgUnVuIGNvbW1hbmQgYW5kIGRpZSBpZiBpdCBmYWlscywgcHJvcGFn
YXRpbmcgdGhlIGV4aXQgY29kZS4KK2RlZiBydW5fY21kKGNtZCkKKyAgcGlkID0gUHJvY2Vzcy5z
cGF3bigqY21kKQorICBQcm9jZXNzLndhaXRwaWQocGlkKQorICByZXQgPSAkPworICBpZiBub3Qg
cmV0LnN1Y2Nlc3M/CisgICAgJHN0ZGVyci5wdXRzKCJFcnJvciBydW5uaW5nIGNtZDogI3tyZXR9
IikKKyAgICBleGl0KHJldC5leGl0c3RhdHVzKQorICBlbmQKK2VuZAorCisjIENvbnZlcnQKKyMg
ICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLmNwcAorIyB0bworIyAgICBjeHggLW8gYmxhaC5zIC1T
IGJsYWguY3BwCitkZWYgYnVpbGRfY3h4X2NtZChhcmdzKQorICBjX2lkeCA9IGdldF9hcmdfaWR4
KGFyZ3MsICctYycpCisgIG9faWR4ID0gZ2V0X29faWR4KGFyZ3MpCisKKyAgY3h4X2FyZ3MgPSBh
cmdzLmNsb25lCisKKyAgY3h4X2FyZ3NbY19pZHhdID0gJy1TJworICBvX3BhdGggPSBjeHhfYXJn
c1tvX2lkeCArIDFdCisgIGN4eF9hcmdzW29faWR4ICsgMV0gPSBvX3BhdGguc3ViKC9bLl1vJC8s
ICRhc21fc3VmZml4KQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8IGN4eF9hcmdzW29faWR4ICsg
MV0KKyAgaWYgY3h4X2FyZ3Nbb19pZHggKyAxXSA9PSBvX3BhdGgKKyAgICAkc3RkZXJyLnB1dHMo
Ik91dHB1dCBmaWxlIG5hbWUgbm90IGFuIG9iamVjdCBmaWxlOiBgI3tvX3BhdGh9YCIpCisgICAg
ZXhpdCgzKQorICBlbmQKKyAgY3h4X2FyZ3MKK2VuZAorCisjIERvCisjICAgICBtdiBibGFoLlMg
YmxhaC5wcmUuUworIyBUaGUgcmVhc29uIHdlIGRvIGEgcmVuYW1lIGluc3RlYWQgb2YgZGlyZWN0
bHkgZ2VuZXJhdGluZyB0aGUgLnByZS5zCisjIGZpbGUgd2hlbiBjb21waWxpbmcgaXMgc28gdGhh
dCB0aGUgY29ycmVzcG9uZGluZyAuZHdvIGZpbGUgd2lsbCBoYXZlCisjIHRoZSBjb3JyZWN0IG5h
bWUgZW1iZWRkZWQuCitkZWYgcmVuYW1lX3NfZmlsZShhcmdzKQorICBvX3BhdGggPSBhcmdzW2dl
dF9vX2lkeChhcmdzKSArIDFdCisgIEZpbGUucmVuYW1lKG9fcGF0aC5zdWIoL1suXW8kLywgJGFz
bV9zdWZmaXgpLAorICAgICAgICAgICAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4
X3ByZSkpCitlbmQKKworIyBCdWlsZAorIyAgICAgcG9zdHByb2Nlc3NvciBibGFoLnByZS5TIGJs
YWguUworZGVmIGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3MpCisgIG9fcGF0aCA9IGFyZ3Nb
Z2V0X29faWR4KGFyZ3MpICsgMV0KKworICBwcF9hcmdzID0gWworICAgICRwb3N0cHJvY2Vzc29y
LAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhfcHJlKSwgIyBpbnB1dAorICAg
IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpICMgb3V0cHV0CisgIF0KKyAgJGludGVy
bWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0yXQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8IHBw
X2FyZ3NbLTFdCisgIHBwX2FyZ3MKK2VuZAorCisjIEJ1aWxkCisjICAgICBjeHggLW8gYmxhaC5v
IC1jIGJsYWguUworZGVmIGJ1aWxkX2FzX2NtZChhcmdzLCBpX3BhdGgpCisgIGlfaWR4ID0gZ2V0
X2FyZ19pZHhfc3VmZml4KGFyZ3MsIGlfcGF0aCkKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgo
YXJncykgKyAxXQorCisgIGFzX2FyZ3MgPSBhcmdzLmNsb25lCisgIGlfcGF0aCA9IGFzX2FyZ3Nb
aV9pZHhdCisgIGFzX2FyZ3NbaV9pZHhdID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZp
eCkKKyAgYXNfYXJncworZW5kCisKK2FyZ3MgPSBBUkdWLnRvX2EKK2lfcGF0aCA9IGV4dHJhY3Rf
aW5wdXQhKGFyZ3MpCisKK2JlZ2luCisgIHJ1bl9jbWQoYnVpbGRfY3h4X2NtZChhcmdzKSkKKyAg
cmVuYW1lX3NfZmlsZShhcmdzKQorICBydW5fY21kKGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFy
Z3MpKQorICBydW5fY21kKGJ1aWxkX2FzX2NtZChhcmdzLCBpX3BhdGgpKQorZW5zdXJlCisgICRp
bnRlcm1lZGlhdGVfcGF0aHMuZWFjaCB7IHxwfAorICAgIGlmIEZpbGUuZXhpc3Q/KHApCisgICAg
ICBGaWxlLmRlbGV0ZShwKQorICAgIGVuZAorICB9CitlbmQKKworZXhpdCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGlj
dHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNv
bmZsaWN0cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmNjN2VlYzVhYjQ2NjMzMTlkY2I0YjQ0NzViMzUzMzgy
ODdiN2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
cmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAsMCArMSwzNzYgQEAKKyMhL3Vzci9i
aW4vZW52IHJ1YnkKKworIyBSZXNvbHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMg
aW4gYXNzZW1ibGVyIGZpbGVzLiBUaG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBz
dGF0ZW1lbnRzIHdoaWNoIHRoZW1zZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFz
IHRoZSBpbmxpbmUgYXNtIGhhcyBubyBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51
bWJlciBpcywgaXQnbGwgZ2VuZXJhbGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0
aGluZ3MgdG8KKyMgd29yayB3ZSBoYXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUg
bnVtYmVycworIyAyLiBjaGFuZ2UgYC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBh
cHByb3ByaWF0ZSBmaWxlIG51bWJlci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBu
ZWVkIHNvbWUgY29uY2VwdCBvZiAic2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBh
IGdpdmVuIGAubG9jYCBkaXJlY3RpdmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFj
a2luZyB0aGUgI0FQUC8jTk9BUFAgZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3
aGVuIGl0CisjIHN3aXRjaCB0by9mcm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2Ug
Y29udmVydAorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAi
YmFyIgorIyAgICAgLmZpbGUgMiAiZm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAK
KyMgICAgIC5sb2MgMSwgWQorIyB0bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAor
IyAgICAgLmZpbGUgMiAiYmFyIgorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBY
CisjICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3Jl
cXVpcmUgJ3N0cmluZ2lvJworcmVxdWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNz
ID0gU3RydWN0Lm5ldyg6c3RyKQorUGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9y
KQorCisjIFBhcnNlcyB0aGUgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxl
IGFzc2VtYmxlciBkaXJlY3RpdmUKK2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRl
ZiBpbml0aWFsaXplKHMpCisgICAgQHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAg
ZGVmIHBhcnNlCisgICAgQHMuc2tpcCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFz
dCBvbmUgc3RyaW5nIGxpdGVyYWwKKyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAg
IGlmIHJldC5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisK
KyAgICBAcy5za2lwKC9ccyovKQorICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFy
c2VSZXN1bHRFcnJvci5uZXcoIkV4cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0i
KQorICAgIGVuZAorICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisg
IGVuZAorICBkZWYgcGFyc2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmls
PworICAgICAgZXJyID0gIkV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31g
IChwb3MgI3tAcy5wb3N9KSIKKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIp
CisgICAgZW5kCisgICAgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAor
ICBkZWYgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0g
QHMucG9zCisgICAgd2hpbGUgdHJ1ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNo
YXJhY3RlcnMKKyAgICAgIEBzLnNraXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwv
KQorICAgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwn
LCBjb25zdW1lIGJvdGggY2hhcmFjdGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25k
ICdcJyB3aWxsIG5vdCBiZSB0cmVhdGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5l
eHQKKyAgICAgICAgZWxzaWYgQHMuc2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29u
c3VtZSBib3RoIGNoYXJhY3RlcnMgc28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAg
IyB0ZXJtaW5hdGUgdGhlIHN0cmluZy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAg
ICAgICBuZXh0CisgICAgICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91
dCBhIHByZWNlZWRpbmcgJ1wnOyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2Un
cmUgYWxyZWFkeSBwYXN0IHRoZSAnIicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAg
ICAgIyBjaGFyYWN0ZXJzLgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhA
cy5zdHJpbmdbc3RhcnRfcG9zLi4oQHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPwor
ICAgICAgICBlcnIgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBw
b3MgI3tzdGFydF9wb3N9IGluICN7QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0RXJyb3IubmV3KGVycikKKyAgICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9y
ICgje0BzLmluc3BlY3R9KSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwg
c3RyLCByZXMpCisgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UK
KyAgaWYgcmVzLmlzX2E/KEFycmF5KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAg
ICAgIG91dGYucHV0cygiUGFyc2UgcmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVk
ICN7cmVzfSIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0g
cmVzWzBdCisgICAgICBvdXRmLnB1dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBl
Y3RlZCBgI3tyZXNbMF19YCIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1
cm4gdHJ1ZQorICBlbHNpZiByZXMuaXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/
KDplcnJvcikKKyAgICAgIGlmIG5vdCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93
bmNhc2UpCisgICAgICAgIGVyciA9ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBu
b3QgaW5jbHVkZSBleHBlY3RlZCBzdWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0
cyhlcnIpCisgICAgICAgIHJldHVybiBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1
ZQorICAgIGVuZAorICAgIG91dGYucHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdv
dCBzdWNjZXNzZnVsIHBhcnNlICN7cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UK
KyAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitk
ZWYgc2VsZnRlc3QKKyAgbnJfc3VjY2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBs
ZSBzdHJpbmcKKyAgICBbJyJmb28vYmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycs
ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVy
bWluYXRlZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxc
IiIsICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAg
IFsiXCJmb29cXFxcXCIiLCBbImZvb1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICci
JworICAgIFsnImZvb1wiYmFyIicsIFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBy
ZWxhdGl2ZQorICAgIFsnImZvby9iYXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFy
c2UgYWJzb2x1dGUKKyAgICBbJyIvYmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNl
IGFic29sdXRlIHdpdGggdHdvIGNvbXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIv
YmF6J11dLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXIn
LCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tl
biB3aXRob3V0IHdoaXRlc3BhY2UKKyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBs
aW5lIl0sCisKKyAgICAjIFdpbGwgbm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3Rp
dmVzCisgICAgWycid29ya2luZ19kaXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2Yg
bGluZSJdCisgIF0KKyAgb3V0ZiA9IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxz
dHIsIHJlc3wKKyAgICBpZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVk
ICs9IDEKKyAgICBlbmQKKyAgfQorICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAg
ICRzdGRlcnIucHV0cyhvdXRmLnN0cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0
ZXN0cyBmYWlsZWQgI3tucl9zdWNjZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykK
KyAgZW5kCitlbmQKKworIyBLZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0
byB3aGljaCBmaWxlIHBhdGguIFdlIGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNz
IEZpbGVTbG90VHJhY2tlcgorICBAQG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwg
c2xvdAorICBAQHBhdGhzID0ge30gIyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGlu
aXRpYWxpemUocGFyZW50KQorICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBm
cm9tIG91ciBvd24gbG9jYWwgc2xvdHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAg
ICMgdG8gYSBnbG9iYWwgc2xvdC4KKyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBt
YWtlIHN1cmUgdGhhdCAuZmlsZSBkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRo
IGFyZQorICAjIGRlZHVwJ2QsIGkuZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRo
L3RvL2luY2x1ZGUuaCIKKyAgIyAgICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2lu
Y2x1ZGUuaCIKKyAgIyB0aGVuIHRoZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQg
dG8gdGhlIHNhbWUgImdsb2JhbCIgc2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xv
dCkKKyAgICBjdXJyX3Nsb3QgPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8K
KyAgICAgICMgV2UgaGF2ZW4ndCBzZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3Qg
PD0gQEBuZXh0X2ZyZWUKKyAgICAgICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hl
cyB3aXRoIGFuIGV4aXN0aW5nIG9uZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8g
YmUgYWxsb2NhdGVkLiBJbiBlaXRoZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQg
ZnJlZSBzbG90LgorICAgICAgICBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisg
ICAgICAgICMgRG9uJ3QgYWxsb3cgc2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5k
bGUgdGhlbSwgYnV0CisgICAgICAgICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5v
dyByYXRoZXIgdGhhbiBwYXBlcmluZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4K
KyAgICAgICAgJHN0ZGVyci5wdXRzKCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBz
ZWVuICN7QEBuZXh0X2ZyZWV9IHNvIGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgICMgV2UndmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMg
ZmlsZS4KKyAgICBlbmQKKyAgICBAc2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAg
aWYgQHNsb3RfbWFwW3Nsb3RdLm5pbD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNs
b3QgI3tzbG90fSIKKyAgICBlbmQKKyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBw
YXRoCisgIGRlZiBzbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0K
KyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2Nh
bCBzbG90CisgIGRlZiByZW1hcF9zbG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNs
b3RfbWFwLnNpemUgPiAwCisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhh
cyBkZWZpbmVkIGEgLmZpbGUsIG9ubHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxl
U2xvdFRyYWNrZXIuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlu
bGluZSBhc20gc3RhdGVtZW50LgorICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxz
aWYgbm90IEBwYXJlbnQubmlsPworICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVu
dCBoYXMgbm90IGRlZmluZWQgYSAuZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJl
Y3RpdmVzIHJlZmVyIHRvIGZpbGVzIGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBU
aGlzIGlzIHRoZSBjYXNlIGZvciBub24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3Rh
dGVtZW50cy4KKyAgICAgIHJldCA9IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAor
ICAgIGlmIHJldC5uaWw/CisgICAgICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0i
CisgICAgZW5kCisgICAgcmV0CisgIGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9z
bG90KHBhdGgpCisgICAgQEBwYXRoc1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2Zy
ZWUgKz0gMQorICBlbmQKK2VuZAorCisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBr
ZWVwaW5nIHRyYWNrIG9mIHdoZXRoZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2Vj
dGlvbi4KK2NsYXNzIEFzbVJlYWRlcgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNj
ZXNzb3IgOmFwcF90b19ub2FwcCwgOm5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQor
ICAgIEBmID0gZgorICAgIEBmLnJld2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9
IGZhbHNlCisgICAgQGxhc3Rfc3dpdGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1l
c3NhZ2VzCisgIGVuZAorICBkZWYgbmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9
IEBmLmdldHMKKyAgICAgIGlmIGwubmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisg
ICAgICBAbGluZW5yICs9IDEKKyAgICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAg
ICAgaWYgQGluX2FwcAorICAgICAgICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBi
dXQgYWxyZWFkeSBpbiAjQVBQICgje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAg
ICAgQGluX2FwcCA9IHRydWUKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAg
ICBpZiBAbm9hcHBfdG9fYXBwCisgICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAg
ICAgZW5kCisgICAgICBlbmQKKyAgICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAg
ICAgICAgaWYgbm90IEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tA
bGluZW5yfSBidXQgd2FzIG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNo
fSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rf
c3dpdGNoID0gQGxpbmVucgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFw
cF90b19ub2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBs
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBA
ZmlsZV9yZSA9IC9eXHMqWy5dZmlsZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAg
QEBsb2NfcmUgPSAvXig/PHdoaXRlMT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90Plxk
KykoPzxyZXN0PlxzK1xkKy4qKSQvCisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBA
b3V0ZiA9IG91dGYKKyAgICBAdHJhY2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQor
ICAgIEBhc21fcmVhZGVyID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVy
IGFuICNBUFAgc2VjdGlvbiAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAg
IyBpbmxpbmUgYXNtIHN0YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVm
ZmVjdAorICAgICMgcHJvY2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBh
IG5ldyAibmFtZXNwYWNlIgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBj
b25jZXJuZWQpLiBUaGlzIGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBz
aXplIHdpbGwgZWl0aGVyIGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVy
LmFwcF90b19ub2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9h
cHBfdG9fYXBwID0gUHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQHRyYWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNb
LTFdKSkKKyAgICB9CisgIGVuZAorICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9
IEBhc21fcmVhZGVyLm5leHRfbGluZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQg
PSBAQGZpbGVfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZl
KG1kKQorICAgICAgICBuZXh0CisgICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2go
bCkKKyAgICAgIGlmIG1kCisgICAgICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQK
KyAgICAgIGVuZAorICAgICAgQG91dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiBsb2NfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFz
dAorICAgIHNsb3QgPSB0cmFja2VyLnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91
dGYucHV0cygiI3ttZFs6d2hpdGUxXX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVz
dF19IikKKyAgZW5kCisgIGRlZiBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRy
YWNrZXJzLmxhc3QKKworICAgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpy
ZXN0XSkucGFyc2UKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJy
LnB1dHMoIkVycm9yIHBhcnNpbmcgcGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7
cHIuZXJyb3J9IikKKyAgICAgIGV4aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIK
KyAgICB0cmFja2VyLnJlZ2lzdGVyX3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBz
bG90ID0gdHJhY2tlci5zbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmls
ZVx0I3tzbG90fSAje21kWzpyZXN0XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1
cmUgb3VyIHRlc3RzIHN0aWxsIHBhc3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisj
IG91ciBydW50aW1lIGFuZCBlbnN1cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25l
IHRyeWluZyBvdXQKKyMgY2hhbmdlcyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdW
LnNpemUgIT0gMgorICAkc3RkZXJyLnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQor
ICBleGl0KDIpCitlbmQKKworaW5wYXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBh
dGhuYW1lLm5ldyhuKSB9CisKK2lmIG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJO
b3QgYSByZWd1bGFyIGZpbGU6IGAje2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlu
cGF0aC5leHRuYW1lLnVwY2FzZSAhPSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmls
ZSBgI3tpbnBhdGh9YCBkb2Vzbid0IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2lu
ZyBvbiBhbnl3YXkuLi4iKQorZW5kCisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAor
ICBGaWxlLm9wZW4ob3V0cGF0aCwgInciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29s
dmVyLm5ldyhpbmYsIG91dGYpLnJ1bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUz
ODEzYTlmYjMzZTJmZjIzNTJjNjllYmE3Ni4uOWUyYTc0MmEyNGE5MTZmY2ZlYmQxZGEyZTBhODY5
YjMzNzhlMGMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcApAQCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpl
eGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBW
TSogdm0sCiAjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNl
bmRpZgogCisjaWYgZGVmaW5lZChQT1NUUFJPQ0VTU19BU00pICYmIENPTVBJTEVSKEdDQykKKy8v
IFRoaXMgd29ya3MgYXJvdW5kIGEgYnVnIGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9u
IHVuaXQKKy8vIGRvZXNuJ3QgaGF2ZSBhbnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRz
IGxpbmUgdGFibGUgd29uJ3QKKy8vIGV2ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0
ZXJ9X2xsaW50X2FzbSBzbyB0aGF0IHRoZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2
ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQgaXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0
byB0aGUgY29tcGlsZXIuIFRoaXMgd2F5LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8v
IGxsaW50IGFzbSBjb2RlIHRvIHRoaXMgY29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3Nm
dWxseSBsb29rCisvLyB1cCB0aGUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uCitNQVJLRVJfU1lN
Qk9MKGJlZm9yZV9sbGludF9hc20pCisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAv
LyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMg
YWxsIG9mIHRoZSBhc3NlbWJseSBjb2RlCiAvLyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21w
aWxlZCBmcm9tIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1i
bHkuaCIKIAorI2lmIGRlZmluZWQoUE9TVFBST0NFU1NfQVNNKSAmJiBDT01QSUxFUihHQ0MpCitN
QVJLRVJfU1lNQk9MKGFmdGVyX2xsaW50X2FzbSkKKyNlbmRpZiAvKiBXVEZfQ09NUElMRVJfR0ND
ICovCisKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY29uZmlnLnJiCmluZGV4IDQ5NTQzZmNkMWIyZmExNmU2NTg4YjY4MzI4OWFjMDQ3
NzI3YjdmMGUuLjJmMzEyM2U1ZmEwNDM1M2RhMGEzNzJmNDU5ZWQzNzhhZGY4MzI5YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKQEAgLTg5LDYgKzg5LDEw
IEBAIGRlZiBzaG91bGRFbmFibGVEZWJ1Z0Fubm90YXRpb25zKCkKICAgICAgICAgICAgICAgICBl
bmQKICAgICAgICAgICAgIGVuZAogICAgICAgICBlbmQKKyAgICBlbHNpZiBFTlZbIkNNQUtFX0NY
WF9DT01QSUxFUl9JRCJdID09ICdHTlUnIGFuZAorICAgICAgICAgRU5WWyJHQ0NfT0ZGTElORUFT
TV9TT1VSQ0VfTUFQIl0gPT0gJ09OJworICAgICAgIyBBbGwgR0NDIHZlcnNpb25zIHRoYXQgY2Fu
IGJ1aWxkIEpTQyBzdXBwb3J0IGRlYnVnIGFubm90YXRpb25zCisgICAgICByZXR1cm4gdHJ1ZQog
ICAgIGVuZAogCiAgICAgZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IDQzNzRjYjNhZjIzYzg5YmI1MzQ5
NDY5ZGM4OGVmYzY0NDYxNGE0N2MuLmRmY2M0NTQxYTQ5OWE5NmVmZDVjNjFjYTE1YjZhMTNhYWI3
NzA2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGlsZXIuaApAQCAtMzgyLDYgKzM4MiwxNSBAQAogI2RlZmluZSBXQVJOX1VO
VVNFRF9SRVRVUk4KICNlbmRpZgogCisvKiBOT19SRU9SREVSICovCisjaWYgIWRlZmluZWQoTk9f
UkVPUkRFUikgJiYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBOT19SRU9SREVSIF9fYXR0cmlidXRl
X18oKF9fbm9fcmVvcmRlcl9fKSkKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoTUFSS0VSX1NZTUJP
TCkgJiYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBNQVJLRVJfU1lNQk9MKG5hbWUpIHZvaWQgTk9f
UkVPUkRFUiBuYW1lKHZvaWQpIHsgX19hc21fXygiIik7IH0KKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoX19oYXNfaW5jbHVkZSkgJiYgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgX19oYXNfaW5jbHVk
ZShwYXRoKSAwCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394363</attachid>
            <date>2020-03-24 07:16:42 -0700</date>
            <delta_ts>2020-03-25 10:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200324141640.patch</filename>
            <type>text/plain</type>
            <size>27258</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi5lOTZjOWQ3Yzg3ZjRjMjk3
MzA5Y2ZkNzExZTlmMWU1YTA4MjI3YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wMy0yNCAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIG9mZmVycyBubyB3
YXkgdG8gb3ZlcnJpZGUgdGhlIGNvbXBpbGVyIG9uIGEKKyAgICAgICAgcGVyLWZpbGUgYmFzaXMg
YW5kIEdDQyBkb2Vzbid0IGFsbG93IHNldHRpbmcgdGhlIGFzc2VtYmxlciBleGNlcHQgYXQKKyAg
ICAgICAgY29uZmlndXJlIHRpbWUsIHNvIHdlIG5lZWQgdG8gd3JhcCBldmVyeSBjb21waWxlciBp
bnZvY2F0aW9uLiBUaGlzCisgICAgICAgIG9ubHkgaGFwcGVucyB3aGVuIGJ1aWxkaW5nIHdpdGgg
R0NDIGFuZCB0aGUgdXNlciBoYXMgZXhwbGljaXRseQorICAgICAgICByZXF1ZXN0ZWQgaXQsIGVp
dGhlciBieSBzZWxlY3RpbmcgYSBkZWJ1ZyBidWlsZCBvciBzZXR0aW5nCisgICAgICAgIEdDQ19P
RkZMSU5FQVNNX1NPVVJDRV9NQVAuCisKKyAgICAgICAgVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3Zl
cmhlYWQsIHdlIHVzZSBhIHR3by1sZXZlbCB3cmFwcGVyIHNjaGVtZS4gVGhlCisgICAgICAgIGZp
cnN0IHdyYXBwZXIgKGN4eC13cmFwcGVyLCBpbiAvYmluL3NoKSBxdWlja2x5IGNoZWNrcyBpZiB0
aGVyZSdzIGEKKyAgICAgICAgc3BlY2lhbCBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbiBpbiB0aGUg
YXJndW1lbnRzLiBJZiBub3QsIGl0J2xsCisgICAgICAgIGV4ZWN1dGUgdGhlIHJlZ3VsYXIgY29t
cGlsZXIuIElmIHRoZSBzcGVjaWFsIGFyZ3VtZW50IGlzIHRoZXJlLCBpdCdsbAorICAgICAgICBl
eGVjIGEgc2Vjb25kIGxldmVsIHdyYXBwZXIgKHBvc3Rwcm9jZXNzLWFzbSwgcnVieSkgdGhhdCBn
ZW5lcmF0ZXMgYQorICAgICAgICAuUyBmaWxlLCB3aGljaCBnZXRzIHJld3JpdHRlbiBieSByZXNv
bHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYi4gVGhlCisgICAgICAgIG92ZXJoZWFkIGFwcGVhcnMg
dG8gYmUgaW4gdGhlIG5vaXNlLgorCisgICAgICAgIFNlY29uZCwgR0RCIHdpbGwgb25seSBsb29r
IGF0IHRoZSBsaW5lIHRhYmxlIGZvciBhIGNvbXBpbGF0aW9uIHVuaXQgaWYKKyAgICAgICAgaXQg
Y2FuIGZpcnN0IHJlc29sdmUgdGhlIGFkZHJlc3MgdG8gb25lIG9mIHRoZSBrbm93biBzeW1ib2xz
IGluIHRoZQorICAgICAgICBmaWxlLiBJbnRyb2R1Y2UgbWFya2VyIHN5bWJvbHMgdG8gd29yayBh
cm91bmQgdGhpcyBidWcuCisKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFNjcmlwdHMvY3h4LXdyYXBwZXI6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcG9zdHByb2Nl
c3MtYXNtOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxp
Y3RzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKiBvZmZsaW5lYXNtL2NvbmZpZy5yYjoKKwogMjAyMC0wMy0yMiAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlbmFtZSBr
ZWVwQWxpdmUgdG8gZW5zdXJlU3RpbGxBbGl2ZUhlcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTY5MjRkZmZjN2I4MDU3ZTJi
MjY5ZTEwZWViMzdjZWFmZjBkODBlNS4uYzdkMWVmZjhhYmY1ZDEzNDQ4ZWRjODM1MzVmMzQzNzQ3
OWM4ZmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMy0yNCAgQW5nZWxvcyBPaWtvbm9t
b3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFz
bSBkZWJ1ZyBhbm5vdGF0aW9ucyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21waWxlci5oOgorCiAyMDIwLTAzLTIzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdWaWV3OjpzdGFy
dHNXaXRoIGFuZCBTdHJpbmc6OnN0YXJ0c1dpdGggZG8gbm90IHRyZWF0IG51bGwgc3RyaW5ncyB0
aGUgc2FtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNmZjIyNWUwNzFk
OWViNGNjNDRlZGU4ZWE2ZTg1ZjQxYjViZTI3ZTguLmMyZTYyMWY5OTllMWZhOTg4YTZlNDc4NTE0
Y2E0ODkzMmE3NTRiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEz
MCw2ICsxMzAsMzQgQEAgZW5kaWYgKCkKIAogc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfU09V
UkNFU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfS9TY3JpcHRzIikKIAoraWYgKENNQUtFX0NP
TVBJTEVSX0lTX0dOVUNYWCBBTkQgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUCkKKyAgbWVzc2Fn
ZShTVEFUVVMgIkVuYWJsaW5nIGFzbSBwb3N0cHJvY2Vzc2luZyIpCisgICMgQXMgdGhlcmUncyBw
b29yIHRvb2xjaGFpbiBzdXBwb3J0IGZvciB1c2luZyBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4KKyAg
IyBpbmxpbmUgYXNtIChpLmUuIHRoZXJlJ3Mgbm8gd2F5IHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0
aGUgYC5maWxlYAorICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhl
IGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAjIGludHJvZHVjZSBhIHBvc3Rwcm9jZXNzaW5nIHBh
c3MgZm9yIHRoZSBhc20gdGhhdCBnZXRzIGFzc2VtYmxlZAorICAjIGludG8gYW4gb2JqZWN0IGZp
bGUuICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNsb3cgZG93biB0aGUKKyAgIyBidWlsZCBp
biB0aGUgY29tbW9uIGNhc2UuIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cgdXMg
dG8KKyAgIyBpbnRyb2R1Y2UgYSBjb21waWxlciB3cmFwcGVyIGZvciBhIHNpbmdsZSBzb3VyY2Ug
ZmlsZSwgc28gd2Ugd3JhcAorICAjIGV2ZXJ5dGhpbmcgaW4gdGhlIGN4eC13cmFwcGVyIHRoYXQg
cXVpY2tseSBkZXRlcm1pbmVzIGlmCisgICMgcG9zdHByb2Nlc3NpbmcgaXMgbmVlZGVkLiBJZiBu
b3QsIGl0J2xsIGp1c3QgZXhlYyB0aGUgcmVndWxhcgorICAjIGNvbXBpbGVyLiBJZiBzbywgaXQn
bGwgZXhlYyB0aGUgc2xvdyBwYXRoIHdyYXBwZXIgdGhhdCBhY3R1YWxseQorICAjIGRvZXMgdGhl
IHBvc3Rwcm9jZXNzaW5nLgorCisgICMgTm90ZTogdGhlIGAuZmlsZWAgZGlyZWN0aXZlcyBlbWl0
dGVkIGJ5IGFzbS5yYiBhcmUgb25seSBhbiBpc3N1ZQorICAjIHdoZW4gd2UncmUgY29tcGlsaW5n
IHRoZSAuY3h4IGZpbGUgd2l0aCAtZworICBzZXQoQ01BS0VfQ1hYX0NPTVBJTEVSX0xBVU5DSEVS
ICIke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19ESVJ9L2N4eC13cmFwcGVyIikKKwor
ICAjIEFkZCBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUgKHVudXNlZCBpbiB0aGUgc291
cmNlKSB0bworICAjIHNpZ25pZnkgdG8gb3VyIHdyYXBwZXIgdGhhdCB3ZSB3YW50IGFzbSBwb3N0
cHJvY2Vzc2luZyBmb3IgdGhpcworICAjIGZpbGUuIFdlIHBhc3MgaW4gdGhlIGZpbGVuYW1lIHNv
IHRoYXQgdGhlIHdyYXBwZXIgY2FuIGFjY3VyYXRlbHkKKyAgIyBpZGVudGlmeSB0aGUgc291cmNl
IGZpbGUuCisgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygibGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAiCisgICAgUFJPUEVSVElFUworICAgIENPTVBJTEVfREVGSU5JVElPTlMgIlBP
U1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCisKK2VuZGlmICgp
CisKICMgR2xvYmJpbmcgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgZ2VuZXJhdG9yLXNwZWNpZmlj
IGZpbGUgbmFtZXMgYXJlIHByZWZpeGVkIHdpdGggdGhlaXIgZGlyZWN0b3J5LgogIyBUb3AtbGV2
ZWwgc2NyaXB0cyBzaG91bGQgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLCBzaW5jZSB0aGV5IGFyZSBp
bnZva2VkIGR1cmluZyB0aGUgYnVpbGQuCiAKQEAgLTMyMyw3ICszNTEsNyBAQCBhZGRfY3VzdG9t
X2NvbW1hbmQoCiAgICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vJHtMTEludE91dHB1dH0KICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiCiAgICAgREVQRU5EUyBMTEludE9mZnNldHNFeHRyYWN0b3Ig
JHtMTElOVF9BU019ICR7T0ZGTElORV9BU019ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Jbml0V2FzbS5hc20KLSAgICBDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIgLUkke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gJDxUQVJHRVRfRklMRTpMTEludE9mZnNldHNFeHRyYWN0b3I+ICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0gJHtPRkZMSU5F
X0FTTV9BUkdTfQorICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlbnYgQ01BS0VfQ1hY
X0NPTVBJTEVSX0lEPSR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSBHQ0NfT0ZGTElORUFTTV9TT1VS
Q0VfTUFQPSR7R0NDX09GRkxJTkVBU01fU09VUkNFX01BUH0gJHtSVUJZX0VYRUNVVEFCTEV9ICR7
SkFWQVNDUklQVENPUkVfRElSfS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSAkPFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtK
YXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJ
TkVfQVNNX0FSR1N9CiAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIHRvdWNoX25vY3Jl
YXRlICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0K
ICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9CiAgICAgVkVSQkFUSU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9jeHgtd3JhcHBlciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2N4eC13cmFw
cGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhjZGFmZjcyODgwYjc1Mzg0MDEzY2U0ZTRjMmE2NDNjZmFlMjYyNmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9jeHgtd3Jh
cHBlcgpAQCAtMCwwICsxLDIxIEBACisjIS9iaW4vc2gKKworIyBUaGlzIGlzIHRoZSAiZmFzdCBw
YXRoIiB3cmFwcGVyIGZvciBBU00gcG9zdHByb2Nlc3NpbmcuIEluIHRoZQorIyBjb21tb24gY2Fz
ZSwgd2UnbGwgZXhhbWluZSBvdXIgYXJndW1lbnRzLCBkZXRlcm1pbmUgdGhlcmUncyBubyBuZWVk
CisjIGZvciBwb3N0cHJvY2Vzc2luZyBhbmQgZXhlYyB0aGUgY29tcGlsZXIuICBUaGlzIGlzIGNv
ZGVkIGluIFBPU0lYCisjIHNoLCBpbiB0aGUgaG9wZSB0aGF0IHdlJ2xsIGJlIHJ1biBieSBzb21l
IGxpZ2h0d2VpZ2h0IHNoZWxsIHRoYXQgaGFzCisjIG1pbmltYWwgc3RhcnR1cCB0aW1lLgorCitw
b3N0cHJvY2Vzcz0wCitmb3IgYXJnIGluICIkQCI7IGRvCisgICAgaWYgWyAieC1EUE9TVFBST0NF
U1NfQVNNIiA9ICJ4JHthcmclJT0qfSIgXTsgdGhlbgorCXBvc3Rwcm9jZXNzPTEKKwlicmVhawor
ICAgIGZpCitkb25lCisKK2lmIFsgJHBvc3Rwcm9jZXNzIC1lcSAwIF07IHRoZW4KKyAgICBleGVj
ICIkQCIKK2ZpCisKK2V4ZWMgIiQoZGlybmFtZSAiJDAiKS9wb3N0cHJvY2Vzcy1hc20iICIkQCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NjIzYzIyYzc5Y2Y4ZjhmOTc1ZDI3NTViZWI4OGY4NmE5YjM0MGI4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtCkBA
IC0wLDAgKzEsMTcwIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgV3JhcHBlciBmb3IgYSAu
Y3BwIC0+IC5vIGNvbXBpbGF0aW9uIGNvbW1hbmQuIEl0CisjIDEuIGNvbnZlcnRzIHRoZSBjb21t
YW5kIHRvIGdlbmVyYXRlIGEgYC5zJyBmaWxlCisjIDIuIHJ1bnMgdGhlIEFTTSBwb3N0cHJvY2Vz
c29yIG9uIGl0IHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBgLnNgIGZpbGUKKyMgMy4gYXNzZW1ibGVz
IHRoZSBgLnNgIGZpbGUgdG8gYSBgLm9gIGZpbGUKKworJGFzbV9zdWZmaXhfcHJlID0gIi5wcmUu
cyIKKyRhc21fc3VmZml4ID0gIi5zIgorJHBvc3Rwcm9jZXNzb3IgPSAiI3tGaWxlLmRpcm5hbWUo
JDApfS9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYiIKKworCiskaW50ZXJtZWRpYXRlX3Bh
dGhzID0gW10KKworIyBXZSBuZWVkIHRvIHdvcmsgd2l0aCBpbmRpY2VzIGEgbG90IGFuZCB1bmZv
cnR1bmF0ZWx5ICdnZXRvcHRsb25nJyBpbgorIyB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0
IGV4cG9zZSBvcHRpbmQsIHNvIHdlJ3JlIGdvaW5nIHdpdGgKKyMgYXJyYXkgc2VhcmNoZXMgZm9y
IHNpbXBsaWNpdHkuCitkZWYgaW5kZXhfbm9mYWlsKGFyeSwgZiwgZXJybXNnKQorICBpZHggPSBh
cnkuaW5kZXggeyB8ZWx8CisgICAgZi5jYWxsKGVsKQorICB9CisgIGlmIGlkeC5uaWw/CisgICAg
JHN0ZGVyci5wdXRzKGVycm1zZykKKyAgICBleGl0KDMpCisgIGVuZAorICBpZHgKK2VuZAorCisj
IEZpbmQgYW5kIHJldHVybiB0aGUgc291cmNlIGZpbGUgZm9yIHRoaXMgY29tcGlsYXRpb24gY29t
bWFuZCwKKyMgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgYXJncy4gTm90ZSB0aGF0IHRoZSBwYXRoIChB
KSBhcyBpdCBhcHBlYXJzIGhlcmUKKyMgKGNvbWluZyBmcm9tIGEgY21ha2UgcnVsZSkgaXMgbGlr
ZWx5IHRvIGJlIGRpZmZlcmVudCB0byB0aGUKKyMgYW5vbnltb3VzIGFyZ3VtZW50IChCKSB0byB0
aGUgY29tcGlsYXRpb24gY29tbWFuZC4gSG93ZXZlciwgQSB3aWxsCisjIGJlIGEgc3VmZml4IG9m
IEIuCisjCisjIEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHRoZXJl
LiBUaGlzIGhhcyBhbHJlYWR5CisjIGJlZW4gY2hlY2tlZCBieSBgY3h4LXdyYXBwZXJgLCBvdGhl
cndpc2Ugd2Ugd291bGRuJ3QgYmUgcnVubmluZy4KK2RlZiBleHRyYWN0X2lucHV0IShhcmdzKQor
ICBwcmVmaXggPSAnLURQT1NUUFJPQ0VTU19BU009JworCisgIGlkeCA9IGluZGV4X25vZmFpbChh
cmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgYXJnLnN0YXJ0X3dpdGg/KHByZWZpeCkKKyAgfSwg
Ik5vIGAtRFBPU1RQUk9DRVNTX0FTTWAgYXJndW1lbnRgIikKKworICBwYXRoID0gYXJnc1tpZHhd
W3ByZWZpeC5zaXplLi4tMV0KKyAgaWYgcGF0aC5zaXplID09IDAKKyAgICAkc3RkZXJyLnB1dHMo
IkVtcHR5IHBhdGggaW4gLURQT1NUUFJPQ0VTU19BU009IikKKyAgICBleGl0KDMpCisgIGVuZAor
ICAjIFdlIG9ubHkgbmVlZCB0aGlzIHRvIGJlIGRlZmluZWQgZm9yIHRoZSBwcmVwcm9jZXNzb3Ig
KG5vdCBhbnkKKyAgIyB3cmFwcGVyKSBmcm9tIG5vdyBvbi4KKyAgYXJnc1tpZHhdID0gIi1EUE9T
VFBST0NFU1NfQVNNIgorICByZXR1cm4gcGF0aAorZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgYXJndW1lbnQgZW5kaW5nIGluIHRoaXMgc3VmZml4LgorIworIyBFeGl0IHdpdGgg
YW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzbid0IHRoZXJlLiBXZSdyZSBvbmx5IGV2ZXIKKyMg
Y2FsbGVkIHdpdGggYXJndW1lbnRzIHdlIGtub3cgYXJlIGJlaW5nIHBhc3NlZCBpbiBieSB0aGUg
YnVpbGQKKyMgc3lzdGVtLgorZGVmIGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCB3YW50ZWQpCisg
IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFy
Zy5lbmRfd2l0aD8od2FudGVkKQorICAgICAgICAgICAgICAgfSwgIk5vIGFyZ3VtZW50IGVuZHMg
d2l0aCAje3dhbnRlZH0iKQorZW5kCisKKyMgR2V0IGluZGV4IG9mIGEgZ2l2ZW4gYXJndW1lbnQu
IERpZSBpZiBpdCdzIG5vdCB0aGVyZS4KK2RlZiBnZXRfYXJnX2lkeChhcmdzLCB3YW50ZWQpCisg
IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFy
ZyA9PSB3YW50ZWQKKyAgICAgICAgICAgICAgIH0sICJObyBgI3t3YW50ZWR9YCBhcmd1bWVudCIp
CitlbmQKKworIyBHZXQgdGhlIGluZGV4IG9mIGAtb2AgYW5kIHZlcmlmeSB0aGF0IGFuIGFyZ3Vt
ZW50IGZvbGxvd3MuCisjIEJvdGggYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3QgKGZyb20gb3VyIGJ1
aWxkIHN5c3RlbSkuCitkZWYgZ2V0X29faWR4KGFyZ3MpCisgIGkgPSBnZXRfYXJnX2lkeChhcmdz
LCAnLW8nKQorICBpZiAoaSArIDEpID49IGFyZ3Muc2l6ZQorICAgICRzdGRlcnIucHV0cygiTm8g
YXJndW1lbnQgdG8gYC1vYCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaQorZW5kCisKKyMgUnVu
IGNvbW1hbmQgYW5kIGRpZSBpZiBpdCBmYWlscywgcHJvcGFnYXRpbmcgdGhlIGV4aXQgY29kZS4K
K2RlZiBydW5fY21kKGNtZCkKKyAgcGlkID0gUHJvY2Vzcy5zcGF3bigqY21kKQorICBQcm9jZXNz
LndhaXRwaWQocGlkKQorICByZXQgPSAkPworICBpZiBub3QgcmV0LnN1Y2Nlc3M/CisgICAgJHN0
ZGVyci5wdXRzKCJFcnJvciBydW5uaW5nIGNtZDogI3tyZXR9IikKKyAgICBleGl0KHJldC5leGl0
c3RhdHVzKQorICBlbmQKK2VuZAorCisjIENvbnZlcnQKKyMgICAgY3h4IC1vIGJsYWgubyAtYyBi
bGFoLmNwcAorIyB0bworIyAgICBjeHggLW8gYmxhaC5zIC1TIGJsYWguY3BwCitkZWYgYnVpbGRf
Y3h4X2NtZChhcmdzKQorICBjX2lkeCA9IGdldF9hcmdfaWR4KGFyZ3MsICctYycpCisgIG9faWR4
ID0gZ2V0X29faWR4KGFyZ3MpCisKKyAgY3h4X2FyZ3MgPSBhcmdzLmNsb25lCisKKyAgY3h4X2Fy
Z3NbY19pZHhdID0gJy1TJworICBvX3BhdGggPSBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGN4eF9h
cmdzW29faWR4ICsgMV0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICAkaW50
ZXJtZWRpYXRlX3BhdGhzIDw8IGN4eF9hcmdzW29faWR4ICsgMV0KKyAgaWYgY3h4X2FyZ3Nbb19p
ZHggKyAxXSA9PSBvX3BhdGgKKyAgICAkc3RkZXJyLnB1dHMoIk91dHB1dCBmaWxlIG5hbWUgbm90
IGFuIG9iamVjdCBmaWxlOiBgI3tvX3BhdGh9YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgY3h4
X2FyZ3MKK2VuZAorCisjIERvCisjICAgICBtdiBibGFoLlMgYmxhaC5wcmUuUworIyBUaGUgcmVh
c29uIHdlIGRvIGEgcmVuYW1lIGluc3RlYWQgb2YgZGlyZWN0bHkgZ2VuZXJhdGluZyB0aGUgLnBy
ZS5zCisjIGZpbGUgd2hlbiBjb21waWxpbmcgaXMgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyAu
ZHdvIGZpbGUgd2lsbCBoYXZlCisjIHRoZSBjb3JyZWN0IG5hbWUgZW1iZWRkZWQuCitkZWYgcmVu
YW1lX3NfZmlsZShhcmdzKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisg
IEZpbGUucmVuYW1lKG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpLAorICAgICAgICAg
ICAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4X3ByZSkpCitlbmQKKworIyBCdWls
ZAorIyAgICAgcG9zdHByb2Nlc3NvciBibGFoLnByZS5TIGJsYWguUworZGVmIGJ1aWxkX3Bvc3Rw
cm9jZXNzb3JfY21kKGFyZ3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0K
KworICBwcF9hcmdzID0gWworICAgICRwb3N0cHJvY2Vzc29yLAorICAgIG9fcGF0aC5zdWIoL1su
XW8kLywgJGFzbV9zdWZmaXhfcHJlKSwgIyBpbnB1dAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywg
JGFzbV9zdWZmaXgpICMgb3V0cHV0CisgIF0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9h
cmdzWy0yXQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTFdCisgIHBwX2FyZ3MK
K2VuZAorCisjIEJ1aWxkCisjICAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguUworZGVmIGJ1aWxk
X2FzX2NtZChhcmdzLCBpX3BhdGgpCisgIGlfaWR4ID0gZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3Ms
IGlfcGF0aCkKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIGFzX2Fy
Z3MgPSBhcmdzLmNsb25lCisgIGlfcGF0aCA9IGFzX2FyZ3NbaV9pZHhdCisgIGFzX2FyZ3NbaV9p
ZHhdID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgYXNfYXJncworZW5kCisK
K2FyZ3MgPSBBUkdWLnRvX2EKK2lfcGF0aCA9IGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisKK2JlZ2lu
CisgIHJ1bl9jbWQoYnVpbGRfY3h4X2NtZChhcmdzKSkKKyAgcmVuYW1lX3NfZmlsZShhcmdzKQor
ICBydW5fY21kKGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3MpKQorICBydW5fY21kKGJ1aWxk
X2FzX2NtZChhcmdzLCBpX3BhdGgpKQorZW5zdXJlCisgICRpbnRlcm1lZGlhdGVfcGF0aHMuZWFj
aCB7IHxwfAorICAgIGlmIEZpbGUuZXhpc3Q/KHApCisgICAgICBGaWxlLmRlbGV0ZShwKQorICAg
IGVuZAorICB9CitlbmQKKworZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MmNjN2VlYzVhYjQ2NjMzMTlkY2I0YjQ0NzViMzUzMzgyODdiN2VkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25m
bGljdHMucmIKQEAgLTAsMCArMSwzNzYgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBSZXNv
bHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4gYXNzZW1ibGVyIGZpbGVzLiBU
aG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBzdGF0ZW1lbnRzIHdoaWNoIHRoZW1z
ZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFzIHRoZSBpbmxpbmUgYXNtIGhhcyBu
byBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51bWJlciBpcywgaXQnbGwgZ2VuZXJh
bGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0aGluZ3MgdG8KKyMgd29yayB3ZSBo
YXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUgbnVtYmVycworIyAyLiBjaGFuZ2Ug
YC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBhcHByb3ByaWF0ZSBmaWxlIG51bWJl
ci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBuZWVkIHNvbWUgY29uY2VwdCBvZiAi
c2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBhIGdpdmVuIGAubG9jYCBkaXJlY3Rp
dmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFja2luZyB0aGUgI0FQUC8jTk9BUFAg
ZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3aGVuIGl0CisjIHN3aXRjaCB0by9m
cm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2UgY29udmVydAorIyAgICAgLmZpbGUg
MSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAiYmFyIgorIyAgICAgLmZpbGUgMiAi
Zm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwgWQorIyB0
bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMiAiYmFyIgor
IyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBYCisjICAgICAjTk9BUFAKKyMgICAg
IC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVpcmUgJ3N0cmluZ2lvJworcmVx
dWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNzID0gU3RydWN0Lm5ldyg6c3RyKQor
UGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9yKQorCisjIFBhcnNlcyB0aGUgc2lu
Z2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxlIGFzc2VtYmxlciBkaXJlY3RpdmUK
K2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRlZiBpbml0aWFsaXplKHMpCisgICAg
QHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAgZGVmIHBhcnNlCisgICAgQHMuc2tp
cCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFzdCBvbmUgc3RyaW5nIGxpdGVyYWwK
KyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIHJldC5yZXNwb25kX3RvPyg6
ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisKKyAgICBAcy5za2lwKC9ccyovKQor
ICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoIkV4
cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0iKQorICAgIGVuZAorICAgIHJldHVy
biBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisgIGVuZAorICBkZWYgcGFyc2Vfc3Ry
aW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmlsPworICAgICAgZXJyID0gIkV4cGVj
dGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31gIChwb3MgI3tAcy5wb3N9KSIKKyAg
ICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgZW5kCisgICAgcGFyc2Vf
dW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAorICBkZWYgcGFyc2VfdW50aWxfZW5k
X29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0gQHMucG9zCisgICAgd2hpbGUgdHJ1
ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICAgIEBzLnNr
aXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAgICAgICBpZiBAcy5zY2Fu
KC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwnLCBjb25zdW1lIGJvdGggY2hhcmFj
dGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25kICdcJyB3aWxsIG5vdCBiZSB0cmVh
dGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZWxzaWYgQHMu
c2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29uc3VtZSBib3RoIGNoYXJhY3RlcnMg
c28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAgIyB0ZXJtaW5hdGUgdGhlIHN0cmlu
Zy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAgICAgICBuZXh0CisgICAgICBlbHNp
ZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91dCBhIHByZWNlZWRpbmcgJ1wnOyB0
ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2UncmUgYWxyZWFkeSBwYXN0IHRoZSAn
IicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAgICAgIyBjaGFyYWN0ZXJzLgorICAg
ICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhAcy5zdHJpbmdbc3RhcnRfcG9zLi4o
QHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPworICAgICAgICBlcnIgPSAiVW50ZXJt
aW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBwb3MgI3tzdGFydF9wb3N9IGluICN7
QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAg
ICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9yICgje0BzLmluc3BlY3R9KSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgIHByID0gRmls
ZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UKKyAgaWYgcmVzLmlzX2E/KEFycmF5
KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIG91dGYucHV0cygiUGFyc2Ug
cmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVkICN7cmVzfSIpCisgICAgICByZXR1
cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0gcmVzWzBdCisgICAgICBvdXRmLnB1
dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBlY3RlZCBgI3tyZXNbMF19YCIpCisg
ICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1cm4gdHJ1ZQorICBlbHNpZiByZXMu
aXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIGlmIG5v
dCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93bmNhc2UpCisgICAgICAgIGVyciA9
ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBub3QgaW5jbHVkZSBleHBlY3RlZCBz
dWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0cyhlcnIpCisgICAgICAgIHJldHVy
biBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1ZQorICAgIGVuZAorICAgIG91dGYu
cHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdvdCBzdWNjZXNzZnVsIHBhcnNlICN7
cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UKKyAgICByYWlzZSAiSW50ZXJuYWwg
ZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitkZWYgc2VsZnRlc3QKKyAgbnJfc3Vj
Y2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBsZSBzdHJpbmcKKyAgICBbJyJmb28v
YmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycsICJVbnRlcm1pbmF0ZWQgc3RyaW5n
IGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJh
bCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxcIiIsICJVbnRlcm1pbmF0ZWQgc3Ry
aW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAgIFsiXCJmb29cXFxcXCIiLCBbImZv
b1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICciJworICAgIFsnImZvb1wiYmFyIics
IFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSByZWxhdGl2ZQorICAgIFsnImZvby9i
YXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUKKyAgICBbJyIv
YmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFic29sdXRlIHdpdGggdHdvIGNv
bXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIvYmF6J11dLAorCisgICAgIyBDYW4g
ZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxp
bmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbiB3aXRob3V0IHdoaXRlc3BhY2UK
KyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAgICAjIFdpbGwg
bm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3RpdmVzCisgICAgWycid29ya2luZ19k
aXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdCisgIF0KKyAgb3V0ZiA9
IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxzdHIsIHJlc3wKKyAgICBpZiB0ZXN0
KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVkICs9IDEKKyAgICBlbmQKKyAgfQor
ICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAgICRzdGRlcnIucHV0cyhvdXRmLnN0
cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0ZXN0cyBmYWlsZWQgI3tucl9zdWNj
ZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykKKyAgZW5kCitlbmQKKworIyBLZWVw
IHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0byB3aGljaCBmaWxlIHBhdGguIFdl
IGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNzIEZpbGVTbG90VHJhY2tlcgorICBA
QG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwgc2xvdAorICBAQHBhdGhzID0ge30g
IyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGluaXRpYWxpemUocGFyZW50KQorICAg
IEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBmcm9tIG91ciBvd24gbG9jYWwgc2xv
dHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAgICMgdG8gYSBnbG9iYWwgc2xvdC4K
KyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBtYWtlIHN1cmUgdGhhdCAuZmlsZSBk
aXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRoIGFyZQorICAjIGRlZHVwJ2QsIGku
ZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRoL3RvL2luY2x1ZGUuaCIKKyAgIyAg
ICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2luY2x1ZGUuaCIKKyAgIyB0aGVuIHRo
ZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQgdG8gdGhlIHNhbWUgImdsb2JhbCIg
c2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xvdCkKKyAgICBjdXJyX3Nsb3QgPSBA
QHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8KKyAgICAgICMgV2UgaGF2ZW4ndCBz
ZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3QgPD0gQEBuZXh0X2ZyZWUKKyAgICAg
ICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hlcyB3aXRoIGFuIGV4aXN0aW5nIG9u
ZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8gYmUgYWxsb2NhdGVkLiBJbiBlaXRo
ZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQgZnJlZSBzbG90LgorICAgICAgICBh
c3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisgICAgICAgICMgRG9uJ3QgYWxsb3cg
c2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5kbGUgdGhlbSwgYnV0CisgICAgICAg
ICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5vdyByYXRoZXIgdGhhbiBwYXBlcmlu
ZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4KKyAgICAgICAgJHN0ZGVyci5wdXRz
KCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBzZWVuICN7QEBuZXh0X2ZyZWV9IHNv
IGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICMgV2Un
dmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMgZmlsZS4KKyAgICBlbmQKKyAgICBA
c2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgQHNsb3RfbWFwW3Nsb3RdLm5p
bD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNsb3QgI3tzbG90fSIKKyAgICBlbmQK
KyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBwYXRoCisgIGRlZiBzbG90X2Zvcl9w
YXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0KKyAgZW5kCisgICMgUmV0dXJuIGds
b2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2NhbCBzbG90CisgIGRlZiByZW1hcF9z
bG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNsb3RfbWFwLnNpemUgPiAwCisgICAg
ICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBkZWZpbmVkIGEgLmZpbGUsIG9u
bHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxlU2xvdFRyYWNrZXIuIFRoaXMgaXMg
dGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlubGluZSBhc20gc3RhdGVtZW50Lgor
ICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxzaWYgbm90IEBwYXJlbnQubmlsPwor
ICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVudCBoYXMgbm90IGRlZmluZWQgYSAu
ZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJlY3RpdmVzIHJlZmVyIHRvIGZpbGVz
IGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBUaGlzIGlzIHRoZSBjYXNlIGZvciBu
b24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3RhdGVtZW50cy4KKyAgICAgIHJldCA9
IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAorICAgIGlmIHJldC5uaWw/CisgICAg
ICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0iCisgICAgZW5kCisgICAgcmV0Cisg
IGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgQEBwYXRo
c1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2ZyZWUgKz0gMQorICBlbmQKK2VuZAor
CisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBrZWVwaW5nIHRyYWNrIG9mIHdoZXRo
ZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2VjdGlvbi4KK2NsYXNzIEFzbVJlYWRl
cgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNjZXNzb3IgOmFwcF90b19ub2FwcCwg
Om5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQorICAgIEBmID0gZgorICAgIEBmLnJl
d2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9IGZhbHNlCisgICAgQGxhc3Rfc3dp
dGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1lc3NhZ2VzCisgIGVuZAorICBkZWYg
bmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBmLmdldHMKKyAgICAgIGlmIGwu
bmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisgICAgICBAbGluZW5yICs9IDEKKyAg
ICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgQGluX2FwcAorICAgICAg
ICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgYWxyZWFkeSBpbiAjQVBQICgj
e0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2FwcCA9IHRydWUKKyAg
ICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAgICBpZiBAbm9hcHBfdG9fYXBwCisg
ICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAg
ICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgbm90IEBpbl9hcHAK
KyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgd2FzIG5vdCBp
biAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVuZAorICAg
ICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAg
ICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90b19ub2FwcC5jYWxsKCkKKyAg
ICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBsCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBAZmlsZV9yZSA9IC9eXHMqWy5dZmls
ZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAgQEBsb2NfcmUgPSAvXig/PHdoaXRl
MT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90PlxkKykoPzxyZXN0PlxzK1xkKy4qKSQv
CisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBAb3V0ZiA9IG91dGYKKyAgICBAdHJh
Y2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQorICAgIEBhc21fcmVhZGVyID0gQXNt
UmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFuICNBUFAgc2VjdGlvbiAoaS5l
LiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBpbmxpbmUgYXNtIHN0YXRlbWVu
dCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVjdAorICAgICMgcHJvY2Vzc2lu
ZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5ldyAibmFtZXNwYWNlIgorICAg
ICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25jZXJuZWQpLiBUaGlzIGlzIGFu
IGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXplIHdpbGwgZWl0aGVyIGJlIDEg
KE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFwcF90b19ub2FwcCA9IFByb2Mu
bmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0cmFj
a2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBfdG9fYXBwID0gUHJvYy5uZXcg
eyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYWNrZXJz
LnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNbLTFdKSkKKyAgICB9CisgIGVuZAor
ICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBhc21fcmVhZGVyLm5leHRfbGlu
ZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBAQGZpbGVfcmUubWF0Y2gobCkK
KyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgICAgICBuZXh0Cisg
ICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1kCisgICAg
ICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAgICAgQG91
dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5kCisgIGRlZiBsb2NfZGlyZWN0
aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorICAgIHNsb3QgPSB0cmFja2Vy
LnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYucHV0cygiI3ttZFs6d2hpdGUx
XX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19IikKKyAgZW5kCisgIGRlZiBm
aWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNrZXJzLmxhc3QKKworICAgIHBy
ID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0XSkucGFyc2UKKyAgICBpZiBw
ci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHBhcnNpbmcg
cGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIuZXJyb3J9IikKKyAgICAgIGV4
aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAgICB0cmFja2VyLnJlZ2lzdGVy
X3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90ID0gdHJhY2tlci5zbG90X2Zv
cl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0I3tzbG90fSAje21kWzpyZXN0
XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUgb3VyIHRlc3RzIHN0aWxsIHBh
c3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91ciBydW50aW1lIGFuZCBlbnN1
cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRyeWluZyBvdXQKKyMgY2hhbmdl
cyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNpemUgIT0gMgorICAkc3RkZXJy
LnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBleGl0KDIpCitlbmQKKworaW5w
YXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhuYW1lLm5ldyhuKSB9CisKK2lm
IG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3QgYSByZWd1bGFyIGZpbGU6IGAj
e2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0aC5leHRuYW1lLnVwY2FzZSAh
PSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBgI3tpbnBhdGh9YCBkb2Vzbid0
IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBvbiBhbnl3YXkuLi4iKQorZW5k
CisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBGaWxlLm9wZW4ob3V0cGF0aCwg
InciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVyLm5ldyhpbmYsIG91dGYpLnJ1
bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEzYTlmYjMzZTJmZjIzNTJjNjll
YmE3Ni4uOWUyYTc0MmEyNGE5MTZmY2ZlYmQxZGEyZTBhODY5YjMzNzhlMGMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcApA
QCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5
T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAjZGVmaW5lIE9GRkxJ
TkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRpZgogCisjaWYgZGVmaW5lZChQ
T1NUUFJPQ0VTU19BU00pICYmIENPTVBJTEVSKEdDQykKKy8vIFRoaXMgd29ya3MgYXJvdW5kIGEg
YnVnIGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8vIGRvZXNuJ3QgaGF2
ZSBhbnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFibGUgd29uJ3QKKy8v
IGV2ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50X2FzbSBzbyB0aGF0
IHRoZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1l
bnQgaXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29tcGlsZXIuIFRoaXMg
d2F5LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFzbSBjb2RlIHRvIHRo
aXMgY29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29rCisvLyB1cCB0aGUg
bGluZSBudW1iZXIgaW5mb3JtYXRpb24uCitNQVJLRVJfU1lNQk9MKGJlZm9yZV9sbGludF9hc20p
CisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5l
cmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBj
b2RlCiAvLyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorI2lmIGRlZmluZWQo
UE9TVFBST0NFU1NfQVNNKSAmJiBDT01QSUxFUihHQ0MpCitNQVJLRVJfU1lNQk9MKGFmdGVyX2xs
aW50X2FzbSkKKyNlbmRpZiAvKiBXVEZfQ09NUElMRVJfR0NDICovCisKICNlbmRpZiAvLyBFTkFC
TEUoQ19MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
Y29uZmlnLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCmlu
ZGV4IDQ5NTQzZmNkMWIyZmExNmU2NTg4YjY4MzI4OWFjMDQ3NzI3YjdmMGUuLjJmMzEyM2U1ZmEw
NDM1M2RhMGEzNzJmNDU5ZWQzNzhhZGY4MzI5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9jb25maWcucmIKQEAgLTg5LDYgKzg5LDEwIEBAIGRlZiBzaG91bGRFbmFibGVE
ZWJ1Z0Fubm90YXRpb25zKCkKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIGVuZAog
ICAgICAgICBlbmQKKyAgICBlbHNpZiBFTlZbIkNNQUtFX0NYWF9DT01QSUxFUl9JRCJdID09ICdH
TlUnIGFuZAorICAgICAgICAgRU5WWyJHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQIl0gPT0gJ09O
JworICAgICAgIyBBbGwgR0NDIHZlcnNpb25zIHRoYXQgY2FuIGJ1aWxkIEpTQyBzdXBwb3J0IGRl
YnVnIGFubm90YXRpb25zCisgICAgICByZXR1cm4gdHJ1ZQogICAgIGVuZAogCiAgICAgZmFsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCmluZGV4IDQzNzRjYjNhZjIzYzg5YmI1MzQ5NDY5ZGM4OGVmYzY0NDYxNGE0N2Mu
LmRmY2M0NTQxYTQ5OWE5NmVmZDVjNjFjYTE1YjZhMTNhYWI3NzA2MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApA
QCAtMzgyLDYgKzM4MiwxNSBAQAogI2RlZmluZSBXQVJOX1VOVVNFRF9SRVRVUk4KICNlbmRpZgog
CisvKiBOT19SRU9SREVSICovCisjaWYgIWRlZmluZWQoTk9fUkVPUkRFUikgJiYgQ09NUElMRVIo
R0NDKQorI2RlZmluZSBOT19SRU9SREVSIF9fYXR0cmlidXRlX18oKF9fbm9fcmVvcmRlcl9fKSkK
KyNlbmRpZgorCisjaWYgIWRlZmluZWQoTUFSS0VSX1NZTUJPTCkgJiYgQ09NUElMRVIoR0NDKQor
I2RlZmluZSBNQVJLRVJfU1lNQk9MKG5hbWUpIHZvaWQgTk9fUkVPUkRFUiBuYW1lKHZvaWQpIHsg
X19hc21fXygiIik7IH0KKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYg
Q09NUElMRVIoTVNWQykKICNkZWZpbmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNDb21tb24uY21ha2UKaW5kZXggYTU3NGVmOGMyMjJiYTA3MjBkMjJhMWZkNWQ1Yzgx
NTNhNGRjZjcyMS4uZWExMzYyNDgzZTc4MGU0MTVjYzg1NDhjYzZmOTE0YjJhODhjZDhjZSAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNDb21tb24uY21ha2UKQEAgLTExMiw2ICsxMTIsMTUgQEAgaWYgKERFQlVHX0ZJ
U1NJT04pCiAgICAgc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJ
TktFUl9GTEFHU30gLVdsLC0tZ2RiLWluZGV4IikKIGVuZGlmICgpCiAKK3NldChHQ0NfT0ZGTElO
RUFTTV9TT1VSQ0VfTUFQX0RFRkFVTFQgT0ZGKQoraWYgKENNQUtFX0JVSUxEX1RZUEUgU1RSRVFV
QUwgIkRlYnVnIiBPUiBDTUFLRV9CVUlMRF9UWVBFIFNUUkVRVUFMICJSZWxXaXRoRGViSW5mbyIp
CisgICAgc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBPTikKK2VuZGlmICgp
CisKK29wdGlvbihHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVnIGxp
bmUgaW5mb3JtYXRpb24gZm9yIG9mZmxpbmVhc20tZ2VuZXJhdGVkIGNvZGUiCisgICR7R0NDX09G
RkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxUfSkKKwogIyBFbmFibGUgdGhlIHVzYWdlIG9mIE9w
ZW5NUC4KICMgIC0gQXQgdGhpcyBtb21lbnQsIE9wZW5NUCBpcyBvbmx5IHVzZWQgYXMgYW4gYWx0
ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24KICMgICAgdG8gbmF0aXZlIHRocmVhZHMgZm9yIHRoZSBw
YXJhbGxlbGl6YXRpb24gb2YgdGhlIFNWRyBmaWx0ZXJzLgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IGZkY2QzMmY4NjY4NWFjZWU0MGUxNTdlNjNiMjI0ZTMzNmY3ZmE2
OWQuLjE5MGQxMTFmMjQ2MDFjODA2YjgwYmFjZTQwYzgzYWY1YTE0YmE2N2EgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMy0yNCAg
QW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KKworICAgICAgICBF
bmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9ucyBmb3IgR0NDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxMTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
Q29tbW9uLmNtYWtlOgorCiAyMDIwLTAzLTIzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIERpc2FibGUgc3lzdGVtZCBsb2dnaW5n
IGJ5IGRlZmF1bHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394511</attachid>
            <date>2020-03-25 10:06:51 -0700</date>
            <delta_ts>2020-03-25 10:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200325170649.patch</filename>
            <type>text/plain</type>
            <size>29173</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi5iNGNlYzFhMzU1MDg2NTE0
ZjUxMmNlNjViZjE2YmNhODJmM2ZkMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wMy0yNSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2NyaXB0cy9wb3N0cHJvY2Vzcy1h
c206IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMu
cmI6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIG9mZmxpbmVhc20vY29uZmlnLnJiOgorCiAy
MDIwLTAzLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmVuYW1lIGtlZXBBbGl2ZSB0byBlbnN1cmVTdGlsbEFsaXZlSGVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA1NjkyNGRmZmM3YjgwNTdlMmIyNjllMTBlZWIzN2NlYWZmMGQ4MGU1Li41M2IxYjBjNDUxYTU3
ODdhZTdjZjM2YmU2MDY3MWNiOGExOWYzNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAz
LTI1ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIEVuYWJsZSBvZmZsaW5lYXNtIGRlYnVnIGFubm90YXRpb25zIGZvciBHQ0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzExOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0NvbXBpbGVyLmg6
CisKIDIwMjAtMDMtMjMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGggYW5kIFN0cmluZzo6c3RhcnRzV2l0aCBkbyBub3Qg
dHJlYXQgbnVsbCBzdHJpbmdzIHRoZSBzYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uODc0MjZl
OTkxZmE2NjE4NjZkNDdiN2RkMDgxNGRhYWJmZmZjODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAg
ICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0
cHV0fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFz
bS9hc20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0g
JHtPRkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0
Qnl0ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRX
YXNtLmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVf
RElSfS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAkPFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9Cisg
ICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9
JHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0Nf
T0ZGTElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30K
ICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdf
RElSRUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJC
QVRJTSkKQEAgLTEzNjIsNiArMTM2Miw0MSBAQCB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhM
TEludE9mZnNldHNFeHRyYWN0b3IgU1lTVEVNIFBSSVZBVEUgJHtKYXZhU2NyaXB0Q29yZQogCiBh
ZGRfc3ViZGlyZWN0b3J5KHNoZWxsKQogCisjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3Vw
cG9ydCBmb3IgdXNpbmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisjIGlubGluZSBhc20gKGkuZS4g
dGhlcmUncyBubyB3YXkgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisjIGRpcmVj
dGl2ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3
ZQorIyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0
cyBhc3NlbWJsZWQgaW50bworIyBhbiBvYmplY3QgZmlsZS4gV2Ugb25seSBuZWVkIHRvIGRvIHRo
aXMgZm9yIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93
IHVzIHRvIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyMgc2luZ2xlIHNvdXJj
ZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgaXQuCith
ZGRfbGlicmFyeShMb3dMZXZlbEludGVycHJldGVyIE9CSkVDVCBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAorICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtM
TEludE91dHB1dH0pCisKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50ZXJw
cmV0ZXIKKyAgICBQUklWQVRFICR7SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFU30K
KyAgICAke0phdmFTY3JpcHRDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30KKyAgICAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9KQorCitpZiAoQ01BS0VfQ09NUElM
RVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQKQorICAgIG1lc3NhZ2Uo
U1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisgICAgc2V0KExvd0xldmVs
SW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTX0RJ
Un0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3BlcnR5KFBST1BfUlVMRV9M
QVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyIFJVTEVfTEFVTkNIX0NPTVBJTEUpCisg
ICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAgICAgc2V0KExvd0xldmVsSW50
ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0gJHtQUk9Q
X1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQorICAgIHNldF9wcm9wZXJ0eShU
QVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlcgorICAgICAgICBQUk9QRVJUWSBSVUxFX0xBVU5DSF9D
T01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVJ9IikKKworICAgICMgUGFzcyBp
biB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLCBzbyB0aGF0
CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBpZGVudGlmeSB0aGUgc291cmNlIGZp
bGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCJsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAgICAgICBDT01QSUxFX0RFRklOSVRJ
T05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiKQorZW5k
aWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTIExvd0xldmVsSW50
ZXJwcmV0ZXIpCisKIFdFQktJVF9DT01QVVRFX1NPVVJDRVMoSmF2YVNjcmlwdENvcmUpCiBXRUJL
SVRfV1JBUF9TT1VSQ0VMSVNUKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCiBXRUJLSVRfRlJB
TUVXT1JLKEphdmFTY3JpcHRDb3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
cG9zdHByb2Nlc3MtYXNtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGEzMTJlZTRhNzgxNDlmYzllOWVlMTM0Mzgx
YWM0ZjZjZDAwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9wb3N0cHJvY2Vzcy1hc20KQEAgLTAsMCArMSwxOTMgQEAKKyMhL3Vzci9iaW4vZW52IHJ1
YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuIEwuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFdyYXBwZXIgZm9yIGEgLmNwcCAtPiAubyBjb21w
aWxhdGlvbiBjb21tYW5kLiBJdAorIyAxLiBjb252ZXJ0cyB0aGUgY29tbWFuZCB0byBnZW5lcmF0
ZSBhIGAucycgZmlsZQorIyAyLiBydW5zIHRoZSBBU00gcG9zdHByb2Nlc3NvciBvbiBpdCB0byBn
ZW5lcmF0ZSB0aGUgZmluYWwgYC5zYCBmaWxlCisjIDMuIGFzc2VtYmxlcyB0aGUgYC5zYCBmaWxl
IHRvIGEgYC5vYCBmaWxlCisKKyRhc21fc3VmZml4X3ByZSA9ICIucHJlLnMiCiskYXNtX3N1ZmZp
eCA9ICIucyIKKyRwb3N0cHJvY2Vzc29yID0gIiN7RmlsZS5kaXJuYW1lKCQwKX0vcmVzb2x2ZS1h
c20tZmlsZS1jb25mbGljdHMucmIiCisKKworJGludGVybWVkaWF0ZV9wYXRocyA9IFtdCisKKyMg
V2UgbmVlZCB0byB3b3JrIHdpdGggaW5kaWNlcyBhIGxvdCBhbmQgdW5mb3J0dW5hdGVseSAnZ2V0
b3B0bG9uZycgaW4KKyMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBleHBvc2Ugb3B0aW5k
LCBzbyB3ZSdyZSBnb2luZyB3aXRoCisjIGFycmF5IHNlYXJjaGVzIGZvciBzaW1wbGljaXR5Lgor
ZGVmIGluZGV4X25vZmFpbChhcnksIGYsIGVycm1zZykKKyAgaWR4ID0gYXJ5LmluZGV4IHsgfGVs
fAorICAgIGYuY2FsbChlbCkKKyAgfQorICBpZiBpZHgubmlsPworICAgICRzdGRlcnIucHV0cyhl
cnJtc2cpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaWR4CitlbmQKKworIyBGaW5kIGFuZCByZXR1
cm4gdGhlIHNvdXJjZSBmaWxlIGZvciB0aGlzIGNvbXBpbGF0aW9uIGNvbW1hbmQsCisjIHJlbW92
aW5nIGl0IGZyb20gdGhlIGFyZ3MuIE5vdGUgdGhhdCB0aGUgcGF0aCAoQSkgYXMgaXQgYXBwZWFy
cyBoZXJlCisjIChjb21pbmcgZnJvbSBhIGNtYWtlIHJ1bGUpIGlzIGxpa2VseSB0byBiZSBkaWZm
ZXJlbnQgdG8gdGhlCisjIGFub255bW91cyBhcmd1bWVudCAoQikgdG8gdGhlIGNvbXBpbGF0aW9u
IGNvbW1hbmQuIEhvd2V2ZXIsIEEgd2lsbAorIyBiZSBhIHN1ZmZpeCBvZiBCLgorIworIyBFeGl0
IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGVyZS4gVGhpcyBoYXMgYWxy
ZWFkeQorIyBiZWVuIGNoZWNrZWQgYnkgYGN4eC13cmFwcGVyYCwgb3RoZXJ3aXNlIHdlIHdvdWxk
bid0IGJlIHJ1bm5pbmcuCitkZWYgZXh0cmFjdF9pbnB1dCEoYXJncykKKyAgcHJlZml4ID0gJy1E
UE9TVFBST0NFU1NfQVNNPScKKworICBpZHggPSBpbmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcg
eyB8YXJnfAorICAgIGFyZy5zdGFydF93aXRoPyhwcmVmaXgpCisgIH0sICJObyBgLURQT1NUUFJP
Q0VTU19BU01gIGFyZ3VtZW50YCIpCisKKyAgcGF0aCA9IGFyZ3NbaWR4XVtwcmVmaXguc2l6ZS4u
LTFdCisgIGlmIHBhdGguc2l6ZSA9PSAwCisgICAgJHN0ZGVyci5wdXRzKCJFbXB0eSBwYXRoIGlu
IC1EUE9TVFBST0NFU1NfQVNNPSIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgIyBXZSBvbmx5IG5l
ZWQgdGhpcyB0byBiZSBkZWZpbmVkIGZvciB0aGUgcHJlcHJvY2Vzc29yIChub3QgYW55CisgICMg
d3JhcHBlcikgZnJvbSBub3cgb24uCisgIGFyZ3NbaWR4XSA9ICItRFBPU1RQUk9DRVNTX0FTTSIK
KyAgcmV0dXJuIHBhdGgKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGVuZGluZyBpbiB0aGlzIHN1ZmZpeC4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRo
ZSBhcmd1bWVudCBpc24ndCB0aGVyZS4gV2UncmUgb25seSBldmVyCisjIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyB3ZSBrbm93IGFyZSBiZWluZyBwYXNzZWQgaW4gYnkgdGhlIGJ1aWxkCisjIHN5c3Rl
bS4KK2RlZiBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgd2FudGVkKQorICBpbmRleF9ub2ZhaWwo
YXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcuZW5kX3dpdGg/KHdh
bnRlZCkKKyAgICAgICAgICAgICAgIH0sICJObyBhcmd1bWVudCBlbmRzIHdpdGggI3t3YW50ZWR9
IikKK2VuZAorCisjIEdldCBpbmRleCBvZiBhIGdpdmVuIGFyZ3VtZW50LiBEaWUgaWYgaXQncyBu
b3QgdGhlcmUuCitkZWYgZ2V0X2FyZ19pZHgoYXJncywgd2FudGVkKQorICBpbmRleF9ub2ZhaWwo
YXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcgPT0gd2FudGVkCisg
ICAgICAgICAgICAgICB9LCAiTm8gYCN7d2FudGVkfWAgYXJndW1lbnQiKQorZW5kCisKKyMgR2V0
IHRoZSBpbmRleCBvZiBgLW9gIGFuZCB2ZXJpZnkgdGhhdCBhbiBhcmd1bWVudCBmb2xsb3dzLgor
IyBCb3RoIGFyZSBndWFyYW50ZWVkIHRvIGV4aXN0IChmcm9tIG91ciBidWlsZCBzeXN0ZW0pLgor
ZGVmIGdldF9vX2lkeChhcmdzKQorICBpID0gZ2V0X2FyZ19pZHgoYXJncywgJy1vJykKKyAgaWYg
KGkgKyAxKSA+PSBhcmdzLnNpemUKKyAgICAkc3RkZXJyLnB1dHMoIk5vIGFyZ3VtZW50IHRvIGAt
b2AiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGkKK2VuZAorCisjIFJ1biBjb21tYW5kIGFuZCBk
aWUgaWYgaXQgZmFpbHMsIHByb3BhZ2F0aW5nIHRoZSBleGl0IGNvZGUuCitkZWYgcnVuX2NtZChj
bWQpCisgIHBpZCA9IFByb2Nlc3Muc3Bhd24oKmNtZCkKKyAgUHJvY2Vzcy53YWl0cGlkKHBpZCkK
KyAgcmV0ID0gJD8KKyAgaWYgbm90IHJldC5zdWNjZXNzPworICAgICRzdGRlcnIucHV0cygiRXJy
b3IgcnVubmluZyBjbWQ6ICN7cmV0fSIpCisgICAgZXhpdChyZXQuZXhpdHN0YXR1cykKKyAgZW5k
CitlbmQKKworIyBDb252ZXJ0CisjICAgIGN4eCAtbyBibGFoLm8gLWMgYmxhaC5jcHAKKyMgdG8K
KyMgICAgY3h4IC1vIGJsYWgucyAtUyBibGFoLmNwcAorZGVmIGJ1aWxkX2N4eF9jbWQoYXJncykK
KyAgY19pZHggPSBnZXRfYXJnX2lkeChhcmdzLCAnLWMnKQorICBvX2lkeCA9IGdldF9vX2lkeChh
cmdzKQorCisgIGN4eF9hcmdzID0gYXJncy5jbG9uZQorCisgIGN4eF9hcmdzW2NfaWR4XSA9ICct
UycKKyAgb19wYXRoID0gY3h4X2FyZ3Nbb19pZHggKyAxXQorICBjeHhfYXJnc1tvX2lkeCArIDFd
ID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgJGludGVybWVkaWF0ZV9wYXRo
cyA8PCBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGlmIGN4eF9hcmdzW29faWR4ICsgMV0gPT0gb19w
YXRoCisgICAgJHN0ZGVyci5wdXRzKCJPdXRwdXQgZmlsZSBuYW1lIG5vdCBhbiBvYmplY3QgZmls
ZTogYCN7b19wYXRofWAiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGN4eF9hcmdzCitlbmQKKwor
IyBEbworIyAgICAgbXYgYmxhaC5TIGJsYWgucHJlLlMKKyMgVGhlIHJlYXNvbiB3ZSBkbyBhIHJl
bmFtZSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGdlbmVyYXRpbmcgdGhlIC5wcmUucworIyBmaWxlIHdo
ZW4gY29tcGlsaW5nIGlzIHNvIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgLmR3byBmaWxlIHdpbGwg
aGF2ZQorIyB0aGUgY29ycmVjdCBuYW1lIGVtYmVkZGVkLgorZGVmIHJlbmFtZV9zX2ZpbGUoYXJn
cykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorICBGaWxlLnJlbmFtZShv
X3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSwKKyAgICAgICAgICAgICAgb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpKQorZW5kCisKKyMgQnVpbGQKKyMgICAgIHBvc3Rw
cm9jZXNzb3IgYmxhaC5wcmUuUyBibGFoLlMKK2RlZiBidWlsZF9wb3N0cHJvY2Vzc29yX2NtZChh
cmdzKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisKKyAgcHBfYXJncyA9
IFsKKyAgICAkcG9zdHByb2Nlc3NvciwKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3Vm
Zml4X3ByZSksICMgaW5wdXQKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSAj
IG91dHB1dAorICBdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJnc1stMl0KKyAgJGlu
dGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0xXQorICBwcF9hcmdzCitlbmQKKworIyBCdWls
ZAorIyAgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLlMKK2RlZiBidWlsZF9hc19jbWQoYXJncywg
aV9wYXRoKQorICBpX2lkeCA9IGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCBpX3BhdGgpCisgIG9f
cGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBhc19hcmdzID0gYXJncy5jbG9u
ZQorICBpX3BhdGggPSBhc19hcmdzW2lfaWR4XQorICBhc19hcmdzW2lfaWR4XSA9IG9fcGF0aC5z
dWIoL1suXW8kLywgJGFzbV9zdWZmaXgpCisgIGFzX2FyZ3MKK2VuZAorCithcmdzID0gQVJHVi50
b19hCitpX3BhdGggPSBleHRyYWN0X2lucHV0IShhcmdzKQorCitiZWdpbgorICBydW5fY21kKGJ1
aWxkX2N4eF9jbWQoYXJncykpCisgIHJlbmFtZV9zX2ZpbGUoYXJncykKKyAgcnVuX2NtZChidWls
ZF9wb3N0cHJvY2Vzc29yX2NtZChhcmdzKSkKKyAgcnVuX2NtZChidWlsZF9hc19jbWQoYXJncywg
aV9wYXRoKSkKK2Vuc3VyZQorICAkaW50ZXJtZWRpYXRlX3BhdGhzLmVhY2ggeyB8cHwKKyAgICBp
ZiBGaWxlLmV4aXN0PyhwKQorICAgICAgRmlsZS5kZWxldGUocCkKKyAgICBlbmQKKyAgfQorZW5k
CisKK2V4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jl
c29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE4MzJkOGQwMWYy
OWNhYWEzNmE5ZDZjMGIxNDk2MWQ3YTQ4YjdkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiCkBAIC0w
LDAgKzEsMzk5IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBSZXNvbHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4gYXNzZW1ibGVyIGZp
bGVzLiBUaG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBzdGF0ZW1lbnRzIHdoaWNo
IHRoZW1zZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFzIHRoZSBpbmxpbmUgYXNt
IGhhcyBubyBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51bWJlciBpcywgaXQnbGwg
Z2VuZXJhbGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0aGluZ3MgdG8KKyMgd29y
ayB3ZSBoYXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUgbnVtYmVycworIyAyLiBj
aGFuZ2UgYC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBhcHByb3ByaWF0ZSBmaWxl
IG51bWJlci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBuZWVkIHNvbWUgY29uY2Vw
dCBvZiAic2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBhIGdpdmVuIGAubG9jYCBk
aXJlY3RpdmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFja2luZyB0aGUgI0FQUC8j
Tk9BUFAgZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3aGVuIGl0CisjIHN3aXRj
aCB0by9mcm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2UgY29udmVydAorIyAgICAg
LmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAiYmFyIgorIyAgICAgLmZp
bGUgMiAiZm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwg
WQorIyB0bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMiAi
YmFyIgorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBYCisjICAgICAjTk9BUFAK
KyMgICAgIC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVpcmUgJ3N0cmluZ2lv
JworcmVxdWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNzID0gU3RydWN0Lm5ldyg6
c3RyKQorUGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9yKQorCisjIFBhcnNlcyB0
aGUgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxlIGFzc2VtYmxlciBkaXJl
Y3RpdmUKK2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRlZiBpbml0aWFsaXplKHMp
CisgICAgQHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAgZGVmIHBhcnNlCisgICAg
QHMuc2tpcCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFzdCBvbmUgc3RyaW5nIGxp
dGVyYWwKKyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIHJldC5yZXNwb25k
X3RvPyg6ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisKKyAgICBAcy5za2lwKC9c
cyovKQorICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5u
ZXcoIkV4cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0iKQorICAgIGVuZAorICAg
IHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisgIGVuZAorICBkZWYgcGFy
c2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmlsPworICAgICAgZXJyID0g
IkV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31gIChwb3MgI3tAcy5wb3N9
KSIKKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgZW5kCisgICAg
cGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAorICBkZWYgcGFyc2VfdW50
aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0gQHMucG9zCisgICAgd2hp
bGUgdHJ1ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICAg
IEBzLnNraXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAgICAgICBpZiBA
cy5zY2FuKC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwnLCBjb25zdW1lIGJvdGgg
Y2hhcmFjdGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25kICdcJyB3aWxsIG5vdCBi
ZSB0cmVhdGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZWxz
aWYgQHMuc2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29uc3VtZSBib3RoIGNoYXJh
Y3RlcnMgc28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAgIyB0ZXJtaW5hdGUgdGhl
IHN0cmluZy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAgICAgICBuZXh0CisgICAg
ICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91dCBhIHByZWNlZWRpbmcg
J1wnOyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2UncmUgYWxyZWFkeSBwYXN0
IHRoZSAnIicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAgICAgIyBjaGFyYWN0ZXJz
LgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhAcy5zdHJpbmdbc3RhcnRf
cG9zLi4oQHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPworICAgICAgICBlcnIgPSAi
VW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBwb3MgI3tzdGFydF9wb3N9
IGluICN7QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVy
cikKKyAgICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9yICgje0BzLmluc3BlY3R9
KSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgIHBy
ID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UKKyAgaWYgcmVzLmlzX2E/
KEFycmF5KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIG91dGYucHV0cygi
UGFyc2UgcmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVkICN7cmVzfSIpCisgICAg
ICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0gcmVzWzBdCisgICAgICBv
dXRmLnB1dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBlY3RlZCBgI3tyZXNbMF19
YCIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1cm4gdHJ1ZQorICBlbHNp
ZiByZXMuaXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAg
IGlmIG5vdCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93bmNhc2UpCisgICAgICAg
IGVyciA9ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBub3QgaW5jbHVkZSBleHBl
Y3RlZCBzdWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0cyhlcnIpCisgICAgICAg
IHJldHVybiBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1ZQorICAgIGVuZAorICAg
IG91dGYucHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdvdCBzdWNjZXNzZnVsIHBh
cnNlICN7cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UKKyAgICByYWlzZSAiSW50
ZXJuYWwgZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitkZWYgc2VsZnRlc3QKKyAg
bnJfc3VjY2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBsZSBzdHJpbmcKKyAgICBb
JyJmb28vYmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycsICJVbnRlcm1pbmF0ZWQg
c3RyaW5nIGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVybWluYXRlZCBzdHJpbmcg
bGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxcIiIsICJVbnRlcm1pbmF0
ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAgIFsiXCJmb29cXFxcXCIi
LCBbImZvb1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICciJworICAgIFsnImZvb1wi
YmFyIicsIFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSByZWxhdGl2ZQorICAgIFsn
ImZvby9iYXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUKKyAg
ICBbJyIvYmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFic29sdXRlIHdpdGgg
dHdvIGNvbXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIvYmF6J11dLAorCisgICAg
IyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXInLCAiRXhwZWN0ZWQgZW5k
IG9mIGxpbmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbiB3aXRob3V0IHdoaXRl
c3BhY2UKKyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAgICAj
IFdpbGwgbm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3RpdmVzCisgICAgWycid29y
a2luZ19kaXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdCisgIF0KKyAg
b3V0ZiA9IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxzdHIsIHJlc3wKKyAgICBp
ZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVkICs9IDEKKyAgICBlbmQK
KyAgfQorICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAgICRzdGRlcnIucHV0cyhv
dXRmLnN0cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0ZXN0cyBmYWlsZWQgI3tu
cl9zdWNjZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykKKyAgZW5kCitlbmQKKwor
IyBLZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0byB3aGljaCBmaWxlIHBh
dGguIFdlIGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNzIEZpbGVTbG90VHJhY2tl
cgorICBAQG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwgc2xvdAorICBAQHBhdGhz
ID0ge30gIyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGluaXRpYWxpemUocGFyZW50
KQorICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBmcm9tIG91ciBvd24gbG9j
YWwgc2xvdHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAgICMgdG8gYSBnbG9iYWwg
c2xvdC4KKyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBtYWtlIHN1cmUgdGhhdCAu
ZmlsZSBkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRoIGFyZQorICAjIGRlZHVw
J2QsIGkuZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRoL3RvL2luY2x1ZGUuaCIK
KyAgIyAgICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2luY2x1ZGUuaCIKKyAgIyB0
aGVuIHRoZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQgdG8gdGhlIHNhbWUgImds
b2JhbCIgc2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xvdCkKKyAgICBjdXJyX3Ns
b3QgPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8KKyAgICAgICMgV2UgaGF2
ZW4ndCBzZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3QgPD0gQEBuZXh0X2ZyZWUK
KyAgICAgICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hlcyB3aXRoIGFuIGV4aXN0
aW5nIG9uZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8gYmUgYWxsb2NhdGVkLiBJ
biBlaXRoZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQgZnJlZSBzbG90LgorICAg
ICAgICBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisgICAgICAgICMgRG9uJ3Qg
YWxsb3cgc2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5kbGUgdGhlbSwgYnV0Cisg
ICAgICAgICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5vdyByYXRoZXIgdGhhbiBw
YXBlcmluZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4KKyAgICAgICAgJHN0ZGVy
ci5wdXRzKCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBzZWVuICN7QEBuZXh0X2Zy
ZWV9IHNvIGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
ICMgV2UndmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMgZmlsZS4KKyAgICBlbmQK
KyAgICBAc2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgQHNsb3RfbWFwW3Ns
b3RdLm5pbD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNsb3QgI3tzbG90fSIKKyAg
ICBlbmQKKyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBwYXRoCisgIGRlZiBzbG90
X2Zvcl9wYXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0KKyAgZW5kCisgICMgUmV0
dXJuIGdsb2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2NhbCBzbG90CisgIGRlZiBy
ZW1hcF9zbG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNsb3RfbWFwLnNpemUgPiAw
CisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBkZWZpbmVkIGEgLmZp
bGUsIG9ubHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxlU2xvdFRyYWNrZXIuIFRo
aXMgaXMgdGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlubGluZSBhc20gc3RhdGVt
ZW50LgorICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxzaWYgbm90IEBwYXJlbnQu
bmlsPworICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVudCBoYXMgbm90IGRlZmlu
ZWQgYSAuZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJlY3RpdmVzIHJlZmVyIHRv
IGZpbGVzIGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBUaGlzIGlzIHRoZSBjYXNl
IGZvciBub24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3RhdGVtZW50cy4KKyAgICAg
IHJldCA9IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAorICAgIGlmIHJldC5uaWw/
CisgICAgICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0iCisgICAgZW5kCisgICAg
cmV0CisgIGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAg
QEBwYXRoc1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2ZyZWUgKz0gMQorICBlbmQK
K2VuZAorCisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBrZWVwaW5nIHRyYWNrIG9m
IHdoZXRoZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2VjdGlvbi4KK2NsYXNzIEFz
bVJlYWRlcgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNjZXNzb3IgOmFwcF90b19u
b2FwcCwgOm5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQorICAgIEBmID0gZgorICAg
IEBmLnJld2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9IGZhbHNlCisgICAgQGxh
c3Rfc3dpdGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1lc3NhZ2VzCisgIGVuZAor
ICBkZWYgbmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBmLmdldHMKKyAgICAg
IGlmIGwubmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisgICAgICBAbGluZW5yICs9
IDEKKyAgICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgQGluX2FwcAor
ICAgICAgICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgYWxyZWFkeSBpbiAj
QVBQICgje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2FwcCA9IHRy
dWUKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAgICBpZiBAbm9hcHBfdG9f
YXBwCisgICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBl
bmQKKyAgICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgbm90IEBp
bl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgd2Fz
IG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVu
ZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVu
cgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90b19ub2FwcC5jYWxs
KCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBsCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBAZmlsZV9yZSA9IC9eXHMq
Wy5dZmlsZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAgQEBsb2NfcmUgPSAvXig/
PHdoaXRlMT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90PlxkKykoPzxyZXN0PlxzK1xk
Ky4qKSQvCisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBAb3V0ZiA9IG91dGYKKyAg
ICBAdHJhY2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQorICAgIEBhc21fcmVhZGVy
ID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFuICNBUFAgc2VjdGlv
biAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBpbmxpbmUgYXNtIHN0
YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVjdAorICAgICMgcHJv
Y2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5ldyAibmFtZXNwYWNl
IgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25jZXJuZWQpLiBUaGlz
IGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXplIHdpbGwgZWl0aGVy
IGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFwcF90b19ub2FwcCA9
IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBfdG9fYXBwID0gUHJv
Yy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRy
YWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNbLTFdKSkKKyAgICB9Cisg
IGVuZAorICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBhc21fcmVhZGVyLm5l
eHRfbGluZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBAQGZpbGVfcmUubWF0
Y2gobCkKKyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgICAgICBu
ZXh0CisgICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1k
CisgICAgICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAg
ICAgQG91dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5kCisgIGRlZiBsb2Nf
ZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorICAgIHNsb3QgPSB0
cmFja2VyLnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYucHV0cygiI3ttZFs6
d2hpdGUxXX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19IikKKyAgZW5kCisg
IGRlZiBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNrZXJzLmxhc3QKKwor
ICAgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0XSkucGFyc2UKKyAg
ICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHBh
cnNpbmcgcGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIuZXJyb3J9IikKKyAg
ICAgIGV4aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAgICB0cmFja2VyLnJl
Z2lzdGVyX3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90ID0gdHJhY2tlci5z
bG90X2Zvcl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0I3tzbG90fSAje21k
WzpyZXN0XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUgb3VyIHRlc3RzIHN0
aWxsIHBhc3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91ciBydW50aW1lIGFu
ZCBlbnN1cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRyeWluZyBvdXQKKyMg
Y2hhbmdlcyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNpemUgIT0gMgorICAk
c3RkZXJyLnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBleGl0KDIpCitlbmQK
KworaW5wYXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhuYW1lLm5ldyhuKSB9
CisKK2lmIG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3QgYSByZWd1bGFyIGZp
bGU6IGAje2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0aC5leHRuYW1lLnVw
Y2FzZSAhPSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBgI3tpbnBhdGh9YCBk
b2Vzbid0IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBvbiBhbnl3YXkuLi4i
KQorZW5kCisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBGaWxlLm9wZW4ob3V0
cGF0aCwgInciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVyLm5ldyhpbmYsIG91
dGYpLnJ1bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzdiNjM4YmM0
MDExYzljZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZTZkZWIwMTQyNTIwNDA4ZjhjNzgxMDBh
YTY4NjVkYTVkZjg3ZDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNjc1LDgg
KzY3NSw2IEBAIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHAKIGxsaW50L0xMSW50RXhjZXB0aW9u
cy5jcHAKIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcAogbGxpbnQvTExJbnRUaHVua3MuY3BwCi0v
LyBGSVhNRTogV2UgY2FuJ3QgYnVuZGxlIHRoaXMgZmlsZSBkdWUgdG8gYSBjbGFuZyBidWcuCi1s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBAbm8tdW5pZnkKIAogcGFyc2VyL0xleGVyLmNw
cAogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGY4YWZjN2EwNzBkNzM1Mzgx
M2E5ZmIzM2UyZmYyMzUyYzY5ZWJhNzYuLjM1ZDlhODZlNWEwZWU1OTU1ZWMzMmI1NDdhZjI5MDUw
YjJlMzk1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKQEAgLTUzNyw4ICs1MzcsMTkgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhl
Y3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcywgVk0q
IHZtLAogI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfREVCVUdfTEFCRUwobGFiZWwpCiAjZW5k
aWYKIAorLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4gR0RCIHdoZXJlLCBpZiB0aGUgY29t
cGlsYXRpb24gdW5pdAorLy8gZG9lc24ndCBoYXZlIGFueSBhZGRyZXNzIHJhbmdlIGluZm9ybWF0
aW9uLCBpdHMgbGluZSB0YWJsZSB3b24ndAorLy8gZXZlbiBiZSBjb25zdWx0ZWQuIEVtaXQge2Jl
Zm9yZSxhZnRlcn1fbGxpbnRfYXNtIHNvIHRoYXQgdGhlIGNvZGUKKy8vIGVtaXR0ZWQgaW4gdGhl
IHRvcCBsZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudCBpcyB3aXRoaW4gZnVuY3Rpb25zCisvLyB2
aXNpYmxlIHRvIHRoZSBjb21waWxlci4gVGhpcyB3YXksIEdEQiBjYW4gcmVzb2x2ZSBhIFBDIGlu
IHRoZQorLy8gbGxpbnQgYXNtIGNvZGUgdG8gdGhpcyBjb21waWxhdGlvbiB1bml0IGFuZCB0aGUg
c3VjY2Vzc2Z1bGx5IGxvb2sKKy8vIHVwIHRoZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbi4KK01B
UktFUl9TWU1CT0woYmVmb3JlX2xsaW50X2FzbSkKKwogLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJh
dGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29k
ZQogLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVy
cHJldGVyLmFzbS4KICNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCiAKK01BUktFUl9TWU1CT0wo
YWZ0ZXJfbGxpbnRfYXNtKQorCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFiMmZhMTZlNjU4
OGI2ODMyODlhYzA0NzcyN2I3ZjBlLi4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1OWVkMzc4YWRm
ODMyOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25m
aWcucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCkBA
IC04OSw2ICs4OSwxMCBAQCBkZWYgc2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9ucygpCiAgICAg
ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICBlbmQKICAgICAgICAgZW5kCisgICAgZWxzaWYg
RU5WWyJDTUFLRV9DWFhfQ09NUElMRVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAgICAgIEVOVlsi
R0NDX09GRkxJTkVBU01fU09VUkNFX01BUCJdID09ICdPTicKKyAgICAgICMgQWxsIEdDQyB2ZXJz
aW9ucyB0aGF0IGNhbiBidWlsZCBKU0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9ucworICAgICAg
cmV0dXJuIHRydWUKICAgICBlbmQKIAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCA0Mzc0Y2Iz
YWYyM2M4OWJiNTM0OTQ2OWRjODhlZmM2NDQ2MTRhNDdjLi5kZmNjNDU0MWE0OTlhOTZlZmQ1YzYx
Y2ExNWI2YTEzYWFiNzcwNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIsMTUgQEAKICNk
ZWZpbmUgV0FSTl9VTlVTRURfUkVUVVJOCiAjZW5kaWYKIAorLyogTk9fUkVPUkRFUiAqLworI2lm
ICFkZWZpbmVkKE5PX1JFT1JERVIpICYmIENPTVBJTEVSKEdDQykKKyNkZWZpbmUgTk9fUkVPUkRF
UiBfX2F0dHJpYnV0ZV9fKChfX25vX3Jlb3JkZXJfXykpCisjZW5kaWYKKworI2lmICFkZWZpbmVk
KE1BUktFUl9TWU1CT0wpICYmIENPTVBJTEVSKEdDQykKKyNkZWZpbmUgTUFSS0VSX1NZTUJPTChu
YW1lKSB2b2lkIE5PX1JFT1JERVIgbmFtZSh2b2lkKSB7IF9fYXNtX18oIiIpOyB9CisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIENPTVBJTEVSKE1TVkMpCiAjZGVmaW5l
IF9faGFzX2luY2x1ZGUocGF0aCkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0NvbW1vbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmlu
ZGV4IGE1NzRlZjhjMjIyYmEwNzIwZDIyYTFmZDVkNWM4MTUzYTRkY2Y3MjEuLmVhMTM2MjQ4M2U3
ODBlNDE1Y2M4NTQ4Y2M2ZjkxNGIyYTg4Y2Q4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zQ29tbW9uLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtl
CkBAIC0xMTIsNiArMTEyLDE1IEBAIGlmIChERUJVR19GSVNTSU9OKQogICAgIHNldChDTUFLRV9T
SEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC1XbCwtLWdkYi1p
bmRleCIpCiBlbmRpZiAoKQogCitzZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxU
IE9GRikKK2lmIChDTUFLRV9CVUlMRF9UWVBFIFNUUkVRVUFMICJEZWJ1ZyIgT1IgQ01BS0VfQlVJ
TERfVFlQRSBTVFJFUVVBTCAiUmVsV2l0aERlYkluZm8iKQorICAgIHNldChHQ0NfT0ZGTElORUFT
TV9TT1VSQ0VfTUFQX0RFRkFVTFQgT04pCitlbmRpZiAoKQorCitvcHRpb24oR0NDX09GRkxJTkVB
U01fU09VUkNFX01BUAorICAiUHJvZHVjZSBkZWJ1ZyBsaW5lIGluZm9ybWF0aW9uIGZvciBvZmZs
aW5lYXNtLWdlbmVyYXRlZCBjb2RlIgorICAke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVG
QVVMVH0pCisKICMgRW5hYmxlIHRoZSB1c2FnZSBvZiBPcGVuTVAuCiAjICAtIEF0IHRoaXMgbW9t
ZW50LCBPcGVuTVAgaXMgb25seSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9u
CiAjICAgIHRvIG5hdGl2ZSB0aHJlYWRzIGZvciB0aGUgcGFyYWxsZWxpemF0aW9uIG9mIHRoZSBT
VkcgZmlsdGVycy4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZGNk
MzJmODY2ODVhY2VlNDBlMTU3ZTYzYjIyNGUzMzZmN2ZhNjlkLi5jYWUzNDUwNjk3OWNlYjNkZDcz
ZDQzMjRhOTJmYzU1NGU0YzY2ODYwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDMtMjUgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3Mg
IDxhbmdlbG9zQGlnYWxpYS5jb20+CisKKyAgICAgICAgRW5hYmxlIG9mZmxpbmVhc20gZGVidWcg
YW5ub3RhdGlvbnMgZm9yIEdDQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZToKKwogMjAyMC0w
My0yMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bV1BFXSBEaXNhYmxlIHN5c3RlbWQgbG9nZ2luZyBieSBkZWZhdWx0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394515</attachid>
            <date>2020-03-25 10:24:43 -0700</date>
            <delta_ts>2020-03-31 06:09:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200325172441.patch</filename>
            <type>text/plain</type>
            <size>29273</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi5iNGNlYzFhMzU1MDg2NTE0
ZjUxMmNlNjViZjE2YmNhODJmM2ZkMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wMy0yNSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2NyaXB0cy9wb3N0cHJvY2Vzcy1h
c206IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMu
cmI6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIG9mZmxpbmVhc20vY29uZmlnLnJiOgorCiAy
MDIwLTAzLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmVuYW1lIGtlZXBBbGl2ZSB0byBlbnN1cmVTdGlsbEFsaXZlSGVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA1NjkyNGRmZmM3YjgwNTdlMmIyNjllMTBlZWIzN2NlYWZmMGQ4MGU1Li41M2IxYjBjNDUxYTU3
ODdhZTdjZjM2YmU2MDY3MWNiOGExOWYzNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAz
LTI1ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIEVuYWJsZSBvZmZsaW5lYXNtIGRlYnVnIGFubm90YXRpb25zIGZvciBHQ0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzExOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0NvbXBpbGVyLmg6
CisKIDIwMjAtMDMtMjMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGggYW5kIFN0cmluZzo6c3RhcnRzV2l0aCBkbyBub3Qg
dHJlYXQgbnVsbCBzdHJpbmdzIHRoZSBzYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uODc0MjZl
OTkxZmE2NjE4NjZkNDdiN2RkMDgxNGRhYWJmZmZjODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAg
ICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0
cHV0fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFz
bS9hc20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0g
JHtPRkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0
Qnl0ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRX
YXNtLmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVf
RElSfS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAkPFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9Cisg
ICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9
JHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0Nf
T0ZGTElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30K
ICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdf
RElSRUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJC
QVRJTSkKQEAgLTEzNjIsNiArMTM2Miw0MSBAQCB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhM
TEludE9mZnNldHNFeHRyYWN0b3IgU1lTVEVNIFBSSVZBVEUgJHtKYXZhU2NyaXB0Q29yZQogCiBh
ZGRfc3ViZGlyZWN0b3J5KHNoZWxsKQogCisjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3Vw
cG9ydCBmb3IgdXNpbmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisjIGlubGluZSBhc20gKGkuZS4g
dGhlcmUncyBubyB3YXkgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisjIGRpcmVj
dGl2ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3
ZQorIyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0
cyBhc3NlbWJsZWQgaW50bworIyBhbiBvYmplY3QgZmlsZS4gV2Ugb25seSBuZWVkIHRvIGRvIHRo
aXMgZm9yIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93
IHVzIHRvIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyMgc2luZ2xlIHNvdXJj
ZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgaXQuCith
ZGRfbGlicmFyeShMb3dMZXZlbEludGVycHJldGVyIE9CSkVDVCBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAorICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtM
TEludE91dHB1dH0pCisKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50ZXJw
cmV0ZXIKKyAgICBQUklWQVRFICR7SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFU30K
KyAgICAke0phdmFTY3JpcHRDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30KKyAgICAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9KQorCitpZiAoQ01BS0VfQ09NUElM
RVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQKQorICAgIG1lc3NhZ2Uo
U1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisgICAgc2V0KExvd0xldmVs
SW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTX0RJ
Un0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3BlcnR5KFBST1BfUlVMRV9M
QVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyIFJVTEVfTEFVTkNIX0NPTVBJTEUpCisg
ICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAgICAgc2V0KExvd0xldmVsSW50
ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0gJHtQUk9Q
X1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQorICAgIHNldF9wcm9wZXJ0eShU
QVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlcgorICAgICAgICBQUk9QRVJUWSBSVUxFX0xBVU5DSF9D
T01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVJ9IikKKworICAgICMgUGFzcyBp
biB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLCBzbyB0aGF0
CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBpZGVudGlmeSB0aGUgc291cmNlIGZp
bGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCJsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAgICAgICBDT01QSUxFX0RFRklOSVRJ
T05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiKQorZW5k
aWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTIExvd0xldmVsSW50
ZXJwcmV0ZXIpCisKIFdFQktJVF9DT01QVVRFX1NPVVJDRVMoSmF2YVNjcmlwdENvcmUpCiBXRUJL
SVRfV1JBUF9TT1VSQ0VMSVNUKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCiBXRUJLSVRfRlJB
TUVXT1JLKEphdmFTY3JpcHRDb3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
cG9zdHByb2Nlc3MtYXNtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGEzMTJlZTRhNzgxNDlmYzllOWVlMTM0Mzgx
YWM0ZjZjZDAwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9wb3N0cHJvY2Vzcy1hc20KQEAgLTAsMCArMSwxOTMgQEAKKyMhL3Vzci9iaW4vZW52IHJ1
YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuIEwuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFdyYXBwZXIgZm9yIGEgLmNwcCAtPiAubyBjb21w
aWxhdGlvbiBjb21tYW5kLiBJdAorIyAxLiBjb252ZXJ0cyB0aGUgY29tbWFuZCB0byBnZW5lcmF0
ZSBhIGAucycgZmlsZQorIyAyLiBydW5zIHRoZSBBU00gcG9zdHByb2Nlc3NvciBvbiBpdCB0byBn
ZW5lcmF0ZSB0aGUgZmluYWwgYC5zYCBmaWxlCisjIDMuIGFzc2VtYmxlcyB0aGUgYC5zYCBmaWxl
IHRvIGEgYC5vYCBmaWxlCisKKyRhc21fc3VmZml4X3ByZSA9ICIucHJlLnMiCiskYXNtX3N1ZmZp
eCA9ICIucyIKKyRwb3N0cHJvY2Vzc29yID0gIiN7RmlsZS5kaXJuYW1lKCQwKX0vcmVzb2x2ZS1h
c20tZmlsZS1jb25mbGljdHMucmIiCisKKworJGludGVybWVkaWF0ZV9wYXRocyA9IFtdCisKKyMg
V2UgbmVlZCB0byB3b3JrIHdpdGggaW5kaWNlcyBhIGxvdCBhbmQgdW5mb3J0dW5hdGVseSAnZ2V0
b3B0bG9uZycgaW4KKyMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBleHBvc2Ugb3B0aW5k
LCBzbyB3ZSdyZSBnb2luZyB3aXRoCisjIGFycmF5IHNlYXJjaGVzIGZvciBzaW1wbGljaXR5Lgor
ZGVmIGluZGV4X25vZmFpbChhcnksIGYsIGVycm1zZykKKyAgaWR4ID0gYXJ5LmluZGV4IHsgfGVs
fAorICAgIGYuY2FsbChlbCkKKyAgfQorICBpZiBpZHgubmlsPworICAgICRzdGRlcnIucHV0cyhl
cnJtc2cpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaWR4CitlbmQKKworIyBGaW5kIGFuZCByZXR1
cm4gdGhlIHNvdXJjZSBmaWxlIGZvciB0aGlzIGNvbXBpbGF0aW9uIGNvbW1hbmQsCisjIHJlbW92
aW5nIGl0IGZyb20gdGhlIGFyZ3MuIE5vdGUgdGhhdCB0aGUgcGF0aCAoQSkgYXMgaXQgYXBwZWFy
cyBoZXJlCisjIChjb21pbmcgZnJvbSBhIGNtYWtlIHJ1bGUpIGlzIGxpa2VseSB0byBiZSBkaWZm
ZXJlbnQgdG8gdGhlCisjIGFub255bW91cyBhcmd1bWVudCAoQikgdG8gdGhlIGNvbXBpbGF0aW9u
IGNvbW1hbmQuIEhvd2V2ZXIsIEEgd2lsbAorIyBiZSBhIHN1ZmZpeCBvZiBCLgorIworIyBFeGl0
IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGVyZS4gVGhpcyBoYXMgYWxy
ZWFkeQorIyBiZWVuIGNoZWNrZWQgYnkgYGN4eC13cmFwcGVyYCwgb3RoZXJ3aXNlIHdlIHdvdWxk
bid0IGJlIHJ1bm5pbmcuCitkZWYgZXh0cmFjdF9pbnB1dCEoYXJncykKKyAgcHJlZml4ID0gJy1E
UE9TVFBST0NFU1NfQVNNPScKKworICBpZHggPSBpbmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcg
eyB8YXJnfAorICAgIGFyZy5zdGFydF93aXRoPyhwcmVmaXgpCisgIH0sICJObyBgLURQT1NUUFJP
Q0VTU19BU01gIGFyZ3VtZW50YCIpCisKKyAgcGF0aCA9IGFyZ3NbaWR4XVtwcmVmaXguc2l6ZS4u
LTFdCisgIGlmIHBhdGguc2l6ZSA9PSAwCisgICAgJHN0ZGVyci5wdXRzKCJFbXB0eSBwYXRoIGlu
IC1EUE9TVFBST0NFU1NfQVNNPSIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgIyBXZSBvbmx5IG5l
ZWQgdGhpcyB0byBiZSBkZWZpbmVkIGZvciB0aGUgcHJlcHJvY2Vzc29yIChub3QgYW55CisgICMg
d3JhcHBlcikgZnJvbSBub3cgb24uCisgIGFyZ3NbaWR4XSA9ICItRFBPU1RQUk9DRVNTX0FTTSIK
KyAgcmV0dXJuIHBhdGgKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGVuZGluZyBpbiB0aGlzIHN1ZmZpeC4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRo
ZSBhcmd1bWVudCBpc24ndCB0aGVyZS4gV2UncmUgb25seSBldmVyCisjIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyB3ZSBrbm93IGFyZSBiZWluZyBwYXNzZWQgaW4gYnkgdGhlIGJ1aWxkCisjIHN5c3Rl
bS4KK2RlZiBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgd2FudGVkKQorICBpbmRleF9ub2ZhaWwo
YXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcuZW5kX3dpdGg/KHdh
bnRlZCkKKyAgICAgICAgICAgICAgIH0sICJObyBhcmd1bWVudCBlbmRzIHdpdGggI3t3YW50ZWR9
IikKK2VuZAorCisjIEdldCBpbmRleCBvZiBhIGdpdmVuIGFyZ3VtZW50LiBEaWUgaWYgaXQncyBu
b3QgdGhlcmUuCitkZWYgZ2V0X2FyZ19pZHgoYXJncywgd2FudGVkKQorICBpbmRleF9ub2ZhaWwo
YXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcgPT0gd2FudGVkCisg
ICAgICAgICAgICAgICB9LCAiTm8gYCN7d2FudGVkfWAgYXJndW1lbnQiKQorZW5kCisKKyMgR2V0
IHRoZSBpbmRleCBvZiBgLW9gIGFuZCB2ZXJpZnkgdGhhdCBhbiBhcmd1bWVudCBmb2xsb3dzLgor
IyBCb3RoIGFyZSBndWFyYW50ZWVkIHRvIGV4aXN0IChmcm9tIG91ciBidWlsZCBzeXN0ZW0pLgor
ZGVmIGdldF9vX2lkeChhcmdzKQorICBpID0gZ2V0X2FyZ19pZHgoYXJncywgJy1vJykKKyAgaWYg
KGkgKyAxKSA+PSBhcmdzLnNpemUKKyAgICAkc3RkZXJyLnB1dHMoIk5vIGFyZ3VtZW50IHRvIGAt
b2AiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGkKK2VuZAorCisjIFJ1biBjb21tYW5kIGFuZCBk
aWUgaWYgaXQgZmFpbHMsIHByb3BhZ2F0aW5nIHRoZSBleGl0IGNvZGUuCitkZWYgcnVuX2NtZChj
bWQpCisgIHBpZCA9IFByb2Nlc3Muc3Bhd24oKmNtZCkKKyAgUHJvY2Vzcy53YWl0cGlkKHBpZCkK
KyAgcmV0ID0gJD8KKyAgaWYgbm90IHJldC5zdWNjZXNzPworICAgICRzdGRlcnIucHV0cygiRXJy
b3IgcnVubmluZyBjbWQ6ICN7cmV0fSIpCisgICAgZXhpdChyZXQuZXhpdHN0YXR1cykKKyAgZW5k
CitlbmQKKworIyBDb252ZXJ0CisjICAgIGN4eCAtbyBibGFoLm8gLWMgYmxhaC5jcHAKKyMgdG8K
KyMgICAgY3h4IC1vIGJsYWgucyAtUyBibGFoLmNwcAorZGVmIGJ1aWxkX2N4eF9jbWQoYXJncykK
KyAgY19pZHggPSBnZXRfYXJnX2lkeChhcmdzLCAnLWMnKQorICBvX2lkeCA9IGdldF9vX2lkeChh
cmdzKQorCisgIGN4eF9hcmdzID0gYXJncy5jbG9uZQorCisgIGN4eF9hcmdzW2NfaWR4XSA9ICct
UycKKyAgb19wYXRoID0gY3h4X2FyZ3Nbb19pZHggKyAxXQorICBjeHhfYXJnc1tvX2lkeCArIDFd
ID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgJGludGVybWVkaWF0ZV9wYXRo
cyA8PCBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGlmIGN4eF9hcmdzW29faWR4ICsgMV0gPT0gb19w
YXRoCisgICAgJHN0ZGVyci5wdXRzKCJPdXRwdXQgZmlsZSBuYW1lIG5vdCBhbiBvYmplY3QgZmls
ZTogYCN7b19wYXRofWAiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGN4eF9hcmdzCitlbmQKKwor
IyBEbworIyAgICAgbXYgYmxhaC5TIGJsYWgucHJlLlMKKyMgVGhlIHJlYXNvbiB3ZSBkbyBhIHJl
bmFtZSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGdlbmVyYXRpbmcgdGhlIC5wcmUucworIyBmaWxlIHdo
ZW4gY29tcGlsaW5nIGlzIHNvIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgLmR3byBmaWxlIHdpbGwg
aGF2ZQorIyB0aGUgY29ycmVjdCBuYW1lIGVtYmVkZGVkLgorZGVmIHJlbmFtZV9zX2ZpbGUoYXJn
cykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorICBGaWxlLnJlbmFtZShv
X3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSwKKyAgICAgICAgICAgICAgb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpKQorZW5kCisKKyMgQnVpbGQKKyMgICAgIHBvc3Rw
cm9jZXNzb3IgYmxhaC5wcmUuUyBibGFoLlMKK2RlZiBidWlsZF9wb3N0cHJvY2Vzc29yX2NtZChh
cmdzKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisKKyAgcHBfYXJncyA9
IFsKKyAgICAkcG9zdHByb2Nlc3NvciwKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3Vm
Zml4X3ByZSksICMgaW5wdXQKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSAj
IG91dHB1dAorICBdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJnc1stMl0KKyAgJGlu
dGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0xXQorICBwcF9hcmdzCitlbmQKKworIyBCdWls
ZAorIyAgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLlMKK2RlZiBidWlsZF9hc19jbWQoYXJncywg
aV9wYXRoKQorICBpX2lkeCA9IGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCBpX3BhdGgpCisgIG9f
cGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBhc19hcmdzID0gYXJncy5jbG9u
ZQorICBpX3BhdGggPSBhc19hcmdzW2lfaWR4XQorICBhc19hcmdzW2lfaWR4XSA9IG9fcGF0aC5z
dWIoL1suXW8kLywgJGFzbV9zdWZmaXgpCisgIGFzX2FyZ3MKK2VuZAorCithcmdzID0gQVJHVi50
b19hCitpX3BhdGggPSBleHRyYWN0X2lucHV0IShhcmdzKQorCitiZWdpbgorICBydW5fY21kKGJ1
aWxkX2N4eF9jbWQoYXJncykpCisgIHJlbmFtZV9zX2ZpbGUoYXJncykKKyAgcnVuX2NtZChidWls
ZF9wb3N0cHJvY2Vzc29yX2NtZChhcmdzKSkKKyAgcnVuX2NtZChidWlsZF9hc19jbWQoYXJncywg
aV9wYXRoKSkKK2Vuc3VyZQorICAkaW50ZXJtZWRpYXRlX3BhdGhzLmVhY2ggeyB8cHwKKyAgICBp
ZiBGaWxlLmV4aXN0PyhwKQorICAgICAgRmlsZS5kZWxldGUocCkKKyAgICBlbmQKKyAgfQorZW5k
CisKK2V4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jl
c29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE4MzJkOGQwMWYy
OWNhYWEzNmE5ZDZjMGIxNDk2MWQ3YTQ4YjdkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiCkBAIC0w
LDAgKzEsMzk5IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBSZXNvbHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4gYXNzZW1ibGVyIGZp
bGVzLiBUaG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBzdGF0ZW1lbnRzIHdoaWNo
IHRoZW1zZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFzIHRoZSBpbmxpbmUgYXNt
IGhhcyBubyBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51bWJlciBpcywgaXQnbGwg
Z2VuZXJhbGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0aGluZ3MgdG8KKyMgd29y
ayB3ZSBoYXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUgbnVtYmVycworIyAyLiBj
aGFuZ2UgYC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBhcHByb3ByaWF0ZSBmaWxl
IG51bWJlci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBuZWVkIHNvbWUgY29uY2Vw
dCBvZiAic2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBhIGdpdmVuIGAubG9jYCBk
aXJlY3RpdmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFja2luZyB0aGUgI0FQUC8j
Tk9BUFAgZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3aGVuIGl0CisjIHN3aXRj
aCB0by9mcm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2UgY29udmVydAorIyAgICAg
LmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAiYmFyIgorIyAgICAgLmZp
bGUgMiAiZm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwg
WQorIyB0bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMiAi
YmFyIgorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBYCisjICAgICAjTk9BUFAK
KyMgICAgIC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVpcmUgJ3N0cmluZ2lv
JworcmVxdWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNzID0gU3RydWN0Lm5ldyg6
c3RyKQorUGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9yKQorCisjIFBhcnNlcyB0
aGUgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxlIGFzc2VtYmxlciBkaXJl
Y3RpdmUKK2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRlZiBpbml0aWFsaXplKHMp
CisgICAgQHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAgZGVmIHBhcnNlCisgICAg
QHMuc2tpcCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFzdCBvbmUgc3RyaW5nIGxp
dGVyYWwKKyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIHJldC5yZXNwb25k
X3RvPyg6ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisKKyAgICBAcy5za2lwKC9c
cyovKQorICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5u
ZXcoIkV4cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0iKQorICAgIGVuZAorICAg
IHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisgIGVuZAorICBkZWYgcGFy
c2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmlsPworICAgICAgZXJyID0g
IkV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31gIChwb3MgI3tAcy5wb3N9
KSIKKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgZW5kCisgICAg
cGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAorICBkZWYgcGFyc2VfdW50
aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0gQHMucG9zCisgICAgd2hp
bGUgdHJ1ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICAg
IEBzLnNraXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAgICAgICBpZiBA
cy5zY2FuKC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwnLCBjb25zdW1lIGJvdGgg
Y2hhcmFjdGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25kICdcJyB3aWxsIG5vdCBi
ZSB0cmVhdGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZWxz
aWYgQHMuc2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29uc3VtZSBib3RoIGNoYXJh
Y3RlcnMgc28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAgIyB0ZXJtaW5hdGUgdGhl
IHN0cmluZy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAgICAgICBuZXh0CisgICAg
ICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91dCBhIHByZWNlZWRpbmcg
J1wnOyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2UncmUgYWxyZWFkeSBwYXN0
IHRoZSAnIicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAgICAgIyBjaGFyYWN0ZXJz
LgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhAcy5zdHJpbmdbc3RhcnRf
cG9zLi4oQHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPworICAgICAgICBlcnIgPSAi
VW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBwb3MgI3tzdGFydF9wb3N9
IGluICN7QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVy
cikKKyAgICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9yICgje0BzLmluc3BlY3R9
KSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgIHBy
ID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UKKyAgaWYgcmVzLmlzX2E/
KEFycmF5KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIG91dGYucHV0cygi
UGFyc2UgcmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVkICN7cmVzfSIpCisgICAg
ICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0gcmVzWzBdCisgICAgICBv
dXRmLnB1dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBlY3RlZCBgI3tyZXNbMF19
YCIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1cm4gdHJ1ZQorICBlbHNp
ZiByZXMuaXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAg
IGlmIG5vdCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93bmNhc2UpCisgICAgICAg
IGVyciA9ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBub3QgaW5jbHVkZSBleHBl
Y3RlZCBzdWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0cyhlcnIpCisgICAgICAg
IHJldHVybiBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1ZQorICAgIGVuZAorICAg
IG91dGYucHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdvdCBzdWNjZXNzZnVsIHBh
cnNlICN7cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UKKyAgICByYWlzZSAiSW50
ZXJuYWwgZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitkZWYgc2VsZnRlc3QKKyAg
bnJfc3VjY2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBsZSBzdHJpbmcKKyAgICBb
JyJmb28vYmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycsICJVbnRlcm1pbmF0ZWQg
c3RyaW5nIGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVybWluYXRlZCBzdHJpbmcg
bGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxcIiIsICJVbnRlcm1pbmF0
ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAgIFsiXCJmb29cXFxcXCIi
LCBbImZvb1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICciJworICAgIFsnImZvb1wi
YmFyIicsIFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSByZWxhdGl2ZQorICAgIFsn
ImZvby9iYXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUKKyAg
ICBbJyIvYmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFic29sdXRlIHdpdGgg
dHdvIGNvbXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIvYmF6J11dLAorCisgICAg
IyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXInLCAiRXhwZWN0ZWQgZW5k
IG9mIGxpbmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbiB3aXRob3V0IHdoaXRl
c3BhY2UKKyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAgICAj
IFdpbGwgbm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3RpdmVzCisgICAgWycid29y
a2luZ19kaXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdCisgIF0KKyAg
b3V0ZiA9IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxzdHIsIHJlc3wKKyAgICBp
ZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVkICs9IDEKKyAgICBlbmQK
KyAgfQorICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAgICRzdGRlcnIucHV0cyhv
dXRmLnN0cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0ZXN0cyBmYWlsZWQgI3tu
cl9zdWNjZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykKKyAgZW5kCitlbmQKKwor
IyBLZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0byB3aGljaCBmaWxlIHBh
dGguIFdlIGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNzIEZpbGVTbG90VHJhY2tl
cgorICBAQG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwgc2xvdAorICBAQHBhdGhz
ID0ge30gIyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGluaXRpYWxpemUocGFyZW50
KQorICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBmcm9tIG91ciBvd24gbG9j
YWwgc2xvdHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAgICMgdG8gYSBnbG9iYWwg
c2xvdC4KKyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBtYWtlIHN1cmUgdGhhdCAu
ZmlsZSBkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRoIGFyZQorICAjIGRlZHVw
J2QsIGkuZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRoL3RvL2luY2x1ZGUuaCIK
KyAgIyAgICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2luY2x1ZGUuaCIKKyAgIyB0
aGVuIHRoZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQgdG8gdGhlIHNhbWUgImds
b2JhbCIgc2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xvdCkKKyAgICBjdXJyX3Ns
b3QgPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8KKyAgICAgICMgV2UgaGF2
ZW4ndCBzZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3QgPD0gQEBuZXh0X2ZyZWUK
KyAgICAgICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hlcyB3aXRoIGFuIGV4aXN0
aW5nIG9uZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8gYmUgYWxsb2NhdGVkLiBJ
biBlaXRoZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQgZnJlZSBzbG90LgorICAg
ICAgICBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisgICAgICAgICMgRG9uJ3Qg
YWxsb3cgc2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5kbGUgdGhlbSwgYnV0Cisg
ICAgICAgICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5vdyByYXRoZXIgdGhhbiBw
YXBlcmluZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4KKyAgICAgICAgJHN0ZGVy
ci5wdXRzKCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBzZWVuICN7QEBuZXh0X2Zy
ZWV9IHNvIGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
ICMgV2UndmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMgZmlsZS4KKyAgICBlbmQK
KyAgICBAc2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgQHNsb3RfbWFwW3Ns
b3RdLm5pbD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNsb3QgI3tzbG90fSIKKyAg
ICBlbmQKKyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBwYXRoCisgIGRlZiBzbG90
X2Zvcl9wYXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0KKyAgZW5kCisgICMgUmV0
dXJuIGdsb2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2NhbCBzbG90CisgIGRlZiBy
ZW1hcF9zbG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNsb3RfbWFwLnNpemUgPiAw
CisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBkZWZpbmVkIGEgLmZp
bGUsIG9ubHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxlU2xvdFRyYWNrZXIuIFRo
aXMgaXMgdGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlubGluZSBhc20gc3RhdGVt
ZW50LgorICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxzaWYgbm90IEBwYXJlbnQu
bmlsPworICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVudCBoYXMgbm90IGRlZmlu
ZWQgYSAuZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJlY3RpdmVzIHJlZmVyIHRv
IGZpbGVzIGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBUaGlzIGlzIHRoZSBjYXNl
IGZvciBub24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3RhdGVtZW50cy4KKyAgICAg
IHJldCA9IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAorICAgIGlmIHJldC5uaWw/
CisgICAgICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0iCisgICAgZW5kCisgICAg
cmV0CisgIGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAg
QEBwYXRoc1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2ZyZWUgKz0gMQorICBlbmQK
K2VuZAorCisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBrZWVwaW5nIHRyYWNrIG9m
IHdoZXRoZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2VjdGlvbi4KK2NsYXNzIEFz
bVJlYWRlcgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNjZXNzb3IgOmFwcF90b19u
b2FwcCwgOm5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQorICAgIEBmID0gZgorICAg
IEBmLnJld2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9IGZhbHNlCisgICAgQGxh
c3Rfc3dpdGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1lc3NhZ2VzCisgIGVuZAor
ICBkZWYgbmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBmLmdldHMKKyAgICAg
IGlmIGwubmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisgICAgICBAbGluZW5yICs9
IDEKKyAgICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgQGluX2FwcAor
ICAgICAgICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgYWxyZWFkeSBpbiAj
QVBQICgje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2FwcCA9IHRy
dWUKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAgICBpZiBAbm9hcHBfdG9f
YXBwCisgICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBl
bmQKKyAgICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAgaWYgbm90IEBp
bl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQgd2Fz
IG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVu
ZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVu
cgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90b19ub2FwcC5jYWxs
KCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBsCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBAZmlsZV9yZSA9IC9eXHMq
Wy5dZmlsZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAgQEBsb2NfcmUgPSAvXig/
PHdoaXRlMT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90PlxkKykoPzxyZXN0PlxzK1xk
Ky4qKSQvCisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBAb3V0ZiA9IG91dGYKKyAg
ICBAdHJhY2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQorICAgIEBhc21fcmVhZGVy
ID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFuICNBUFAgc2VjdGlv
biAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBpbmxpbmUgYXNtIHN0
YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVjdAorICAgICMgcHJv
Y2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5ldyAibmFtZXNwYWNl
IgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25jZXJuZWQpLiBUaGlz
IGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXplIHdpbGwgZWl0aGVy
IGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFwcF90b19ub2FwcCA9
IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBfdG9fYXBwID0gUHJv
Yy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRy
YWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNbLTFdKSkKKyAgICB9Cisg
IGVuZAorICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBhc21fcmVhZGVyLm5l
eHRfbGluZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBAQGZpbGVfcmUubWF0
Y2gobCkKKyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgICAgICBu
ZXh0CisgICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1k
CisgICAgICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAg
ICAgQG91dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5kCisgIGRlZiBsb2Nf
ZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorICAgIHNsb3QgPSB0
cmFja2VyLnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYucHV0cygiI3ttZFs6
d2hpdGUxXX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19IikKKyAgZW5kCisg
IGRlZiBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNrZXJzLmxhc3QKKwor
ICAgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0XSkucGFyc2UKKyAg
ICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHBh
cnNpbmcgcGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIuZXJyb3J9IikKKyAg
ICAgIGV4aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAgICB0cmFja2VyLnJl
Z2lzdGVyX3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90ID0gdHJhY2tlci5z
bG90X2Zvcl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0I3tzbG90fSAje21k
WzpyZXN0XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUgb3VyIHRlc3RzIHN0
aWxsIHBhc3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91ciBydW50aW1lIGFu
ZCBlbnN1cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRyeWluZyBvdXQKKyMg
Y2hhbmdlcyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNpemUgIT0gMgorICAk
c3RkZXJyLnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBleGl0KDIpCitlbmQK
KworaW5wYXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhuYW1lLm5ldyhuKSB9
CisKK2lmIG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3QgYSByZWd1bGFyIGZp
bGU6IGAje2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0aC5leHRuYW1lLnVw
Y2FzZSAhPSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBgI3tpbnBhdGh9YCBk
b2Vzbid0IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBvbiBhbnl3YXkuLi4i
KQorZW5kCisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBGaWxlLm9wZW4ob3V0
cGF0aCwgInciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVyLm5ldyhpbmYsIG91
dGYpLnJ1bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzdiNjM4YmM0
MDExYzljZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZTZkZWIwMTQyNTIwNDA4ZjhjNzgxMDBh
YTY4NjVkYTVkZjg3ZDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNjc1LDgg
KzY3NSw2IEBAIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHAKIGxsaW50L0xMSW50RXhjZXB0aW9u
cy5jcHAKIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcAogbGxpbnQvTExJbnRUaHVua3MuY3BwCi0v
LyBGSVhNRTogV2UgY2FuJ3QgYnVuZGxlIHRoaXMgZmlsZSBkdWUgdG8gYSBjbGFuZyBidWcuCi1s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBAbm8tdW5pZnkKIAogcGFyc2VyL0xleGVyLmNw
cAogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGY4YWZjN2EwNzBkNzM1Mzgx
M2E5ZmIzM2UyZmYyMzUyYzY5ZWJhNzYuLmQ1MTAzMTMxOWExODcxMjM1MzhiNjdiNmQzZDE0YWFm
ZmYwNDdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKQEAgLTUzNyw4ICs1MzcsMjMgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhl
Y3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcywgVk0q
IHZtLAogI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfREVCVUdfTEFCRUwobGFiZWwpCiAjZW5k
aWYKIAorI2lmIENPTVBJTEVSKEdDQykKKy8vIFRoaXMgd29ya3MgYXJvdW5kIGEgYnVnIGluIEdE
QiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8vIGRvZXNuJ3QgaGF2ZSBhbnkgYWRk
cmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFibGUgd29uJ3QKKy8vIGV2ZW4gYmUg
Y29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50X2FzbSBzbyB0aGF0IHRoZSBjb2Rl
CisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQgaXMgd2l0
aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29tcGlsZXIuIFRoaXMgd2F5LCBHREIg
Y2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFzbSBjb2RlIHRvIHRoaXMgY29tcGls
YXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29rCisvLyB1cCB0aGUgbGluZSBudW1i
ZXIgaW5mb3JtYXRpb24uCitNQVJLRVJfU1lNQk9MKGJlZm9yZV9sbGludF9hc20pCisjZW5kaWYg
LyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkg
b2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBjb2RlCiAvLyBm
b3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorI2lmIENPTVBJTEVSKEdDQykKK01B
UktFUl9TWU1CT0woYWZ0ZXJfbGxpbnRfYXNtKQorI2VuZGlmIC8qIFdURl9DT01QSUxFUl9HQ0Mg
Ki8KKwogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jb25maWcucmIKaW5kZXggNDk1NDNmY2QxYjJmYTE2ZTY1ODhiNjgzMjg5YWMwNDc3
MjdiN2YwZS4uMmYzMTIzZTVmYTA0MzUzZGEwYTM3MmY0NTllZDM3OGFkZjgzMjlhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgpAQCAtODksNiArODksMTAg
QEAgZGVmIHNob3VsZEVuYWJsZURlYnVnQW5ub3RhdGlvbnMoKQogICAgICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgZW5kCiAgICAgICAgIGVuZAorICAgIGVsc2lmIEVOVlsiQ01BS0VfQ1hY
X0NPTVBJTEVSX0lEIl0gPT0gJ0dOVScgYW5kCisgICAgICAgICBFTlZbIkdDQ19PRkZMSU5FQVNN
X1NPVVJDRV9NQVAiXSA9PSAnT04nCisgICAgICAjIEFsbCBHQ0MgdmVyc2lvbnMgdGhhdCBjYW4g
YnVpbGQgSlNDIHN1cHBvcnQgZGVidWcgYW5ub3RhdGlvbnMKKyAgICAgIHJldHVybiB0cnVlCiAg
ICAgZW5kCiAKICAgICBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNDM3NGNiM2FmMjNjODliYjUzNDk0
NjlkYzg4ZWZjNjQ0NjE0YTQ3Yy4uZGZjYzQ1NDFhNDk5YTk2ZWZkNWM2MWNhMTViNmExM2FhYjc3
MDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Db21waWxlci5oCkBAIC0zODIsNiArMzgyLDE1IEBACiAjZGVmaW5lIFdBUk5fVU5V
U0VEX1JFVFVSTgogI2VuZGlmCiAKKy8qIE5PX1JFT1JERVIgKi8KKyNpZiAhZGVmaW5lZChOT19S
RU9SREVSKSAmJiBDT01QSUxFUihHQ0MpCisjZGVmaW5lIE5PX1JFT1JERVIgX19hdHRyaWJ1dGVf
XygoX19ub19yZW9yZGVyX18pKQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChNQVJLRVJfU1lNQk9M
KSAmJiBDT01QSUxFUihHQ0MpCisjZGVmaW5lIE1BUktFUl9TWU1CT0wobmFtZSkgdm9pZCBOT19S
RU9SREVSIG5hbWUodm9pZCkgeyBfX2FzbV9fKCIiKTsgfQorI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBfX2hhc19pbmNsdWRl
KHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24u
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQppbmRleCBhNTc0ZWY4YzIy
MmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIxLi5lYTEzNjI0ODNlNzgwZTQxNWNjODU0OGNj
NmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQpAQCAtMTEyLDYgKzEx
MiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAgICBzZXQoQ01BS0VfU0hBUkVEX0xJTktFUl9G
TEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtV2wsLS1nZGItaW5kZXgiKQogZW5kaWYg
KCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBPRkYpCitpZiAoQ01B
S0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciIE9SIENNQUtFX0JVSUxEX1RZUEUgU1RSRVFV
QUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9E
RUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9uKEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVAK
KyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1hdGlvbiBmb3Igb2ZmbGluZWFzbS1nZW5lcmF0
ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RFRkFVTFR9KQorCiAjIEVu
YWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAgLSBBdCB0aGlzIG1vbWVudCwgT3Blbk1QIGlz
IG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbgogIyAgICB0byBuYXRp
dmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXphdGlvbiBvZiB0aGUgU1ZHIGZpbHRlcnMuCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmRjZDMyZjg2Njg1YWNlZTQw
ZTE1N2U2M2IyMjRlMzM2ZjdmYTY5ZC4uY2FlMzQ1MDY5NzljZWIzZGQ3M2Q0MzI0YTkyZmM1NTRl
NGM2Njg2MCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDIwLTAzLTI1ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIEVuYWJsZSBvZmZsaW5lYXNtIGRlYnVnIGFubm90YXRpb25zIGZv
ciBHQ0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2U6CisKIDIwMjAtMDMtMjMgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gRGlz
YWJsZSBzeXN0ZW1kIGxvZ2dpbmcgYnkgZGVmYXVsdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395029</attachid>
            <date>2020-03-31 06:09:44 -0700</date>
            <delta_ts>2020-03-31 07:54:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200331130942.patch</filename>
            <type>text/plain</type>
            <size>27940</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi41MDA5MmI1YjE4ZDUyMzMw
YWFmOWZiNjRlMTcyYTg4MjExODI4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZl
IHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNWU5YTZjMTgy
ZmFmM2FhMjEwODMyOGU3NmRiNmUwZWZkMjc2ZTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBP
VVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0
fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9h
c20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtP
RkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNt
LmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
PFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
ICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElS
RUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJ
TSkKQEAgLTEzNjIsNiArMTM2Miw0MSBAQCB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhMTElu
dE9mZnNldHNFeHRyYWN0b3IgU1lTVEVNIFBSSVZBVEUgJHtKYXZhU2NyaXB0Q29yZQogCiBhZGRf
c3ViZGlyZWN0b3J5KHNoZWxsKQogCisjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9y
dCBmb3IgdXNpbmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisjIGlubGluZSBhc20gKGkuZS4gdGhl
cmUncyBubyB3YXkgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisjIGRpcmVjdGl2
ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQor
IyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0cyBh
c3NlbWJsZWQgaW50bworIyBhbiBvYmplY3QgZmlsZS4gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMg
Zm9yIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVz
IHRvIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyMgc2luZ2xlIHNvdXJjZSBm
aWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgaXQuCithZGRf
bGlicmFyeShMb3dMZXZlbEludGVycHJldGVyTGliIE9CSkVDVCBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAorICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtM
TEludE91dHB1dH0pCisKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50ZXJw
cmV0ZXJMaWIKKyAgICBQUklWQVRFICR7SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklF
U30KKyAgICAke0phdmFTY3JpcHRDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30KKyAg
ICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9KQorCitpZiAoQ01BS0VfQ09N
UElMRVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQKQorICAgIG1lc3Nh
Z2UoU1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisgICAgc2V0KExvd0xl
dmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VT
X0RJUn0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3BlcnR5KFBST1BfUlVM
RV9MQVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyTGliIFJVTEVfTEFVTkNIX0NPTVBJ
TEUpCisgICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAgICAgc2V0KExvd0xl
dmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0g
JHtQUk9QX1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQorICAgIHNldF9wcm9w
ZXJ0eShUQVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgICAgICBQUk9QRVJUWSBSVUxF
X0xBVU5DSF9DT01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVJ9IikKKworICAg
ICMgUGFzcyBpbiB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZl
LCBzbyB0aGF0CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBpZGVudGlmeSB0aGUg
c291cmNlIGZpbGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCJsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAgICAgICBDT01QSUxF
X0RFRklOSVRJT05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAiKQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTIExv
d0xldmVsSW50ZXJwcmV0ZXJMaWIpCisKIFdFQktJVF9DT01QVVRFX1NPVVJDRVMoSmF2YVNjcmlw
dENvcmUpCiBXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30p
CiBXRUJLSVRfRlJBTUVXT1JLKEphdmFTY3JpcHRDb3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGEzMTJlZTRhNzgxNDlm
YzllOWVlMTM0MzgxYWM0ZjZjZDAwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9wb3N0cHJvY2Vzcy1hc20KQEAgLTAsMCArMSwxOTMgQEAKKyMhL3Vz
ci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuIEwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFdyYXBwZXIgZm9yIGEgLmNw
cCAtPiAubyBjb21waWxhdGlvbiBjb21tYW5kLiBJdAorIyAxLiBjb252ZXJ0cyB0aGUgY29tbWFu
ZCB0byBnZW5lcmF0ZSBhIGAucycgZmlsZQorIyAyLiBydW5zIHRoZSBBU00gcG9zdHByb2Nlc3Nv
ciBvbiBpdCB0byBnZW5lcmF0ZSB0aGUgZmluYWwgYC5zYCBmaWxlCisjIDMuIGFzc2VtYmxlcyB0
aGUgYC5zYCBmaWxlIHRvIGEgYC5vYCBmaWxlCisKKyRhc21fc3VmZml4X3ByZSA9ICIucHJlLnMi
CiskYXNtX3N1ZmZpeCA9ICIucyIKKyRwb3N0cHJvY2Vzc29yID0gIiN7RmlsZS5kaXJuYW1lKCQw
KX0vcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIiCisKKworJGludGVybWVkaWF0ZV9wYXRo
cyA9IFtdCisKKyMgV2UgbmVlZCB0byB3b3JrIHdpdGggaW5kaWNlcyBhIGxvdCBhbmQgdW5mb3J0
dW5hdGVseSAnZ2V0b3B0bG9uZycgaW4KKyMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBl
eHBvc2Ugb3B0aW5kLCBzbyB3ZSdyZSBnb2luZyB3aXRoCisjIGFycmF5IHNlYXJjaGVzIGZvciBz
aW1wbGljaXR5LgorZGVmIGluZGV4X25vZmFpbChhcnksIGYsIGVycm1zZykKKyAgaWR4ID0gYXJ5
LmluZGV4IHsgfGVsfAorICAgIGYuY2FsbChlbCkKKyAgfQorICBpZiBpZHgubmlsPworICAgICRz
dGRlcnIucHV0cyhlcnJtc2cpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaWR4CitlbmQKKworIyBG
aW5kIGFuZCByZXR1cm4gdGhlIHNvdXJjZSBmaWxlIGZvciB0aGlzIGNvbXBpbGF0aW9uIGNvbW1h
bmQsCisjIHJlbW92aW5nIGl0IGZyb20gdGhlIGFyZ3MuIE5vdGUgdGhhdCB0aGUgcGF0aCAoQSkg
YXMgaXQgYXBwZWFycyBoZXJlCisjIChjb21pbmcgZnJvbSBhIGNtYWtlIHJ1bGUpIGlzIGxpa2Vs
eSB0byBiZSBkaWZmZXJlbnQgdG8gdGhlCisjIGFub255bW91cyBhcmd1bWVudCAoQikgdG8gdGhl
IGNvbXBpbGF0aW9uIGNvbW1hbmQuIEhvd2V2ZXIsIEEgd2lsbAorIyBiZSBhIHN1ZmZpeCBvZiBC
LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGVyZS4g
VGhpcyBoYXMgYWxyZWFkeQorIyBiZWVuIGNoZWNrZWQgYnkgYGN4eC13cmFwcGVyYCwgb3RoZXJ3
aXNlIHdlIHdvdWxkbid0IGJlIHJ1bm5pbmcuCitkZWYgZXh0cmFjdF9pbnB1dCEoYXJncykKKyAg
cHJlZml4ID0gJy1EUE9TVFBST0NFU1NfQVNNPScKKworICBpZHggPSBpbmRleF9ub2ZhaWwoYXJn
cywgUHJvYy5uZXcgeyB8YXJnfAorICAgIGFyZy5zdGFydF93aXRoPyhwcmVmaXgpCisgIH0sICJO
byBgLURQT1NUUFJPQ0VTU19BU01gIGFyZ3VtZW50YCIpCisKKyAgcGF0aCA9IGFyZ3NbaWR4XVtw
cmVmaXguc2l6ZS4uLTFdCisgIGlmIHBhdGguc2l6ZSA9PSAwCisgICAgJHN0ZGVyci5wdXRzKCJF
bXB0eSBwYXRoIGluIC1EUE9TVFBST0NFU1NfQVNNPSIpCisgICAgZXhpdCgzKQorICBlbmQKKyAg
IyBXZSBvbmx5IG5lZWQgdGhpcyB0byBiZSBkZWZpbmVkIGZvciB0aGUgcHJlcHJvY2Vzc29yIChu
b3QgYW55CisgICMgd3JhcHBlcikgZnJvbSBub3cgb24uCisgIGFyZ3NbaWR4XSA9ICItRFBPU1RQ
Uk9DRVNTX0FTTSIKKyAgcmV0dXJuIHBhdGgKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgdGhl
IGZpcnN0IGFyZ3VtZW50IGVuZGluZyBpbiB0aGlzIHN1ZmZpeC4KKyMKKyMgRXhpdCB3aXRoIGFu
IGVycm9yIGlmIHRoZSBhcmd1bWVudCBpc24ndCB0aGVyZS4gV2UncmUgb25seSBldmVyCisjIGNh
bGxlZCB3aXRoIGFyZ3VtZW50cyB3ZSBrbm93IGFyZSBiZWluZyBwYXNzZWQgaW4gYnkgdGhlIGJ1
aWxkCisjIHN5c3RlbS4KK2RlZiBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgd2FudGVkKQorICBp
bmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcu
ZW5kX3dpdGg/KHdhbnRlZCkKKyAgICAgICAgICAgICAgIH0sICJObyBhcmd1bWVudCBlbmRzIHdp
dGggI3t3YW50ZWR9IikKK2VuZAorCisjIEdldCBpbmRleCBvZiBhIGdpdmVuIGFyZ3VtZW50LiBE
aWUgaWYgaXQncyBub3QgdGhlcmUuCitkZWYgZ2V0X2FyZ19pZHgoYXJncywgd2FudGVkKQorICBp
bmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcg
PT0gd2FudGVkCisgICAgICAgICAgICAgICB9LCAiTm8gYCN7d2FudGVkfWAgYXJndW1lbnQiKQor
ZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiBgLW9gIGFuZCB2ZXJpZnkgdGhhdCBhbiBhcmd1bWVu
dCBmb2xsb3dzLgorIyBCb3RoIGFyZSBndWFyYW50ZWVkIHRvIGV4aXN0IChmcm9tIG91ciBidWls
ZCBzeXN0ZW0pLgorZGVmIGdldF9vX2lkeChhcmdzKQorICBpID0gZ2V0X2FyZ19pZHgoYXJncywg
Jy1vJykKKyAgaWYgKGkgKyAxKSA+PSBhcmdzLnNpemUKKyAgICAkc3RkZXJyLnB1dHMoIk5vIGFy
Z3VtZW50IHRvIGAtb2AiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGkKK2VuZAorCisjIFJ1biBj
b21tYW5kIGFuZCBkaWUgaWYgaXQgZmFpbHMsIHByb3BhZ2F0aW5nIHRoZSBleGl0IGNvZGUuCitk
ZWYgcnVuX2NtZChjbWQpCisgIHBpZCA9IFByb2Nlc3Muc3Bhd24oKmNtZCkKKyAgUHJvY2Vzcy53
YWl0cGlkKHBpZCkKKyAgcmV0ID0gJD8KKyAgaWYgbm90IHJldC5zdWNjZXNzPworICAgICRzdGRl
cnIucHV0cygiRXJyb3IgcnVubmluZyBjbWQ6ICN7cmV0fSIpCisgICAgZXhpdChyZXQuZXhpdHN0
YXR1cykKKyAgZW5kCitlbmQKKworIyBDb252ZXJ0CisjICAgIGN4eCAtbyBibGFoLm8gLWMgYmxh
aC5jcHAKKyMgdG8KKyMgICAgY3h4IC1vIGJsYWgucyAtUyBibGFoLmNwcAorZGVmIGJ1aWxkX2N4
eF9jbWQoYXJncykKKyAgY19pZHggPSBnZXRfYXJnX2lkeChhcmdzLCAnLWMnKQorICBvX2lkeCA9
IGdldF9vX2lkeChhcmdzKQorCisgIGN4eF9hcmdzID0gYXJncy5jbG9uZQorCisgIGN4eF9hcmdz
W2NfaWR4XSA9ICctUycKKyAgb19wYXRoID0gY3h4X2FyZ3Nbb19pZHggKyAxXQorICBjeHhfYXJn
c1tvX2lkeCArIDFdID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgJGludGVy
bWVkaWF0ZV9wYXRocyA8PCBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGlmIGN4eF9hcmdzW29faWR4
ICsgMV0gPT0gb19wYXRoCisgICAgJHN0ZGVyci5wdXRzKCJPdXRwdXQgZmlsZSBuYW1lIG5vdCBh
biBvYmplY3QgZmlsZTogYCN7b19wYXRofWAiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGN4eF9h
cmdzCitlbmQKKworIyBEbworIyAgICAgbXYgYmxhaC5TIGJsYWgucHJlLlMKKyMgVGhlIHJlYXNv
biB3ZSBkbyBhIHJlbmFtZSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGdlbmVyYXRpbmcgdGhlIC5wcmUu
cworIyBmaWxlIHdoZW4gY29tcGlsaW5nIGlzIHNvIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgLmR3
byBmaWxlIHdpbGwgaGF2ZQorIyB0aGUgY29ycmVjdCBuYW1lIGVtYmVkZGVkLgorZGVmIHJlbmFt
ZV9zX2ZpbGUoYXJncykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorICBG
aWxlLnJlbmFtZShvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSwKKyAgICAgICAgICAg
ICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpKQorZW5kCisKKyMgQnVpbGQK
KyMgICAgIHBvc3Rwcm9jZXNzb3IgYmxhaC5wcmUuUyBibGFoLlMKK2RlZiBidWlsZF9wb3N0cHJv
Y2Vzc29yX2NtZChhcmdzKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisK
KyAgcHBfYXJncyA9IFsKKyAgICAkcG9zdHByb2Nlc3NvciwKKyAgICBvX3BhdGguc3ViKC9bLl1v
JC8sICRhc21fc3VmZml4X3ByZSksICMgaW5wdXQKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRh
c21fc3VmZml4KSAjIG91dHB1dAorICBdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJn
c1stMl0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0xXQorICBwcF9hcmdzCitl
bmQKKworIyBCdWlsZAorIyAgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLlMKK2RlZiBidWlsZF9h
c19jbWQoYXJncywgaV9wYXRoKQorICBpX2lkeCA9IGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCBp
X3BhdGgpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBhc19hcmdz
ID0gYXJncy5jbG9uZQorICBpX3BhdGggPSBhc19hcmdzW2lfaWR4XQorICBhc19hcmdzW2lfaWR4
XSA9IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpCisgIGFzX2FyZ3MKK2VuZAorCith
cmdzID0gQVJHVi50b19hCitpX3BhdGggPSBleHRyYWN0X2lucHV0IShhcmdzKQorCitiZWdpbgor
ICBydW5fY21kKGJ1aWxkX2N4eF9jbWQoYXJncykpCisgIHJlbmFtZV9zX2ZpbGUoYXJncykKKyAg
cnVuX2NtZChidWlsZF9wb3N0cHJvY2Vzc29yX2NtZChhcmdzKSkKKyAgcnVuX2NtZChidWlsZF9h
c19jbWQoYXJncywgaV9wYXRoKSkKK2Vuc3VyZQorICAkaW50ZXJtZWRpYXRlX3BhdGhzLmVhY2gg
eyB8cHwKKyAgICBpZiBGaWxlLmV4aXN0PyhwKQorICAgICAgRmlsZS5kZWxldGUocCkKKyAgICBl
bmQKKyAgfQorZW5kCisKK2V4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjE4MzJkOGQwMWYyOWNhYWEzNmE5ZDZjMGIxNDk2MWQ3YTQ4YjdkZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxp
Y3RzLnJiCkBAIC0wLDAgKzEsMzk5IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIyBSZXNvbHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4g
YXNzZW1ibGVyIGZpbGVzLiBUaG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBzdGF0
ZW1lbnRzIHdoaWNoIHRoZW1zZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFzIHRo
ZSBpbmxpbmUgYXNtIGhhcyBubyBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51bWJl
ciBpcywgaXQnbGwgZ2VuZXJhbGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0aGlu
Z3MgdG8KKyMgd29yayB3ZSBoYXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUgbnVt
YmVycworIyAyLiBjaGFuZ2UgYC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBhcHBy
b3ByaWF0ZSBmaWxlIG51bWJlci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBuZWVk
IHNvbWUgY29uY2VwdCBvZiAic2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBhIGdp
dmVuIGAubG9jYCBkaXJlY3RpdmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFja2lu
ZyB0aGUgI0FQUC8jTk9BUFAgZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3aGVu
IGl0CisjIHN3aXRjaCB0by9mcm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2UgY29u
dmVydAorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAiYmFy
IgorIyAgICAgLmZpbGUgMiAiZm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAKKyMg
ICAgIC5sb2MgMSwgWQorIyB0bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAg
ICAgLmZpbGUgMiAiYmFyIgorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBYCisj
ICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVp
cmUgJ3N0cmluZ2lvJworcmVxdWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNzID0g
U3RydWN0Lm5ldyg6c3RyKQorUGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9yKQor
CisjIFBhcnNlcyB0aGUgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxlIGFz
c2VtYmxlciBkaXJlY3RpdmUKK2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRlZiBp
bml0aWFsaXplKHMpCisgICAgQHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAgZGVm
IHBhcnNlCisgICAgQHMuc2tpcCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFzdCBv
bmUgc3RyaW5nIGxpdGVyYWwKKyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlm
IHJldC5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisKKyAg
ICBAcy5za2lwKC9ccyovKQorICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFyc2VS
ZXN1bHRFcnJvci5uZXcoIkV4cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0iKQor
ICAgIGVuZAorICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisgIGVu
ZAorICBkZWYgcGFyc2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmlsPwor
ICAgICAgZXJyID0gIkV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31gIChw
b3MgI3tAcy5wb3N9KSIKKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisg
ICAgZW5kCisgICAgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAorICBk
ZWYgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0gQHMu
cG9zCisgICAgd2hpbGUgdHJ1ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNoYXJh
Y3RlcnMKKyAgICAgIEBzLnNraXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwvKQor
ICAgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwnLCBj
b25zdW1lIGJvdGggY2hhcmFjdGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25kICdc
JyB3aWxsIG5vdCBiZSB0cmVhdGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5leHQK
KyAgICAgICAgZWxzaWYgQHMuc2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29uc3Vt
ZSBib3RoIGNoYXJhY3RlcnMgc28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAgIyB0
ZXJtaW5hdGUgdGhlIHN0cmluZy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAgICAg
ICBuZXh0CisgICAgICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91dCBh
IHByZWNlZWRpbmcgJ1wnOyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2UncmUg
YWxyZWFkeSBwYXN0IHRoZSAnIicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAgICAg
IyBjaGFyYWN0ZXJzLgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhAcy5z
dHJpbmdbc3RhcnRfcG9zLi4oQHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPworICAg
ICAgICBlcnIgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBwb3Mg
I3tzdGFydF9wb3N9IGluICN7QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0
RXJyb3IubmV3KGVycikKKyAgICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9yICgj
e0BzLmluc3BlY3R9KSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwgc3Ry
LCByZXMpCisgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UKKyAg
aWYgcmVzLmlzX2E/KEFycmF5KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAg
IG91dGYucHV0cygiUGFyc2UgcmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVkICN7
cmVzfSIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0gcmVz
WzBdCisgICAgICBvdXRmLnB1dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBlY3Rl
ZCBgI3tyZXNbMF19YCIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1cm4g
dHJ1ZQorICBlbHNpZiByZXMuaXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDpl
cnJvcikKKyAgICAgIGlmIG5vdCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93bmNh
c2UpCisgICAgICAgIGVyciA9ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBub3Qg
aW5jbHVkZSBleHBlY3RlZCBzdWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0cyhl
cnIpCisgICAgICAgIHJldHVybiBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1ZQor
ICAgIGVuZAorICAgIG91dGYucHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdvdCBz
dWNjZXNzZnVsIHBhcnNlICN7cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UKKyAg
ICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitkZWYg
c2VsZnRlc3QKKyAgbnJfc3VjY2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBsZSBz
dHJpbmcKKyAgICBbJyJmb28vYmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycsICJV
bnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVybWlu
YXRlZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxcIiIs
ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAgIFsi
XCJmb29cXFxcXCIiLCBbImZvb1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICciJwor
ICAgIFsnImZvb1wiYmFyIicsIFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSByZWxh
dGl2ZQorICAgIFsnImZvby9iYXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2Ug
YWJzb2x1dGUKKyAgICBbJyIvYmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFi
c29sdXRlIHdpdGggdHdvIGNvbXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIvYmF6
J11dLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXInLCAi
RXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbiB3
aXRob3V0IHdoaXRlc3BhY2UKKyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5l
Il0sCisKKyAgICAjIFdpbGwgbm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3RpdmVz
CisgICAgWycid29ya2luZ19kaXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2YgbGlu
ZSJdCisgIF0KKyAgb3V0ZiA9IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxzdHIs
IHJlc3wKKyAgICBpZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVkICs9
IDEKKyAgICBlbmQKKyAgfQorICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAgICRz
dGRlcnIucHV0cyhvdXRmLnN0cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0ZXN0
cyBmYWlsZWQgI3tucl9zdWNjZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykKKyAg
ZW5kCitlbmQKKworIyBLZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0byB3
aGljaCBmaWxlIHBhdGguIFdlIGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNzIEZp
bGVTbG90VHJhY2tlcgorICBAQG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwgc2xv
dAorICBAQHBhdGhzID0ge30gIyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGluaXRp
YWxpemUocGFyZW50KQorICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBmcm9t
IG91ciBvd24gbG9jYWwgc2xvdHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAgICMg
dG8gYSBnbG9iYWwgc2xvdC4KKyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBtYWtl
IHN1cmUgdGhhdCAuZmlsZSBkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRoIGFy
ZQorICAjIGRlZHVwJ2QsIGkuZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRoL3Rv
L2luY2x1ZGUuaCIKKyAgIyAgICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2luY2x1
ZGUuaCIKKyAgIyB0aGVuIHRoZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQgdG8g
dGhlIHNhbWUgImdsb2JhbCIgc2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xvdCkK
KyAgICBjdXJyX3Nsb3QgPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8KKyAg
ICAgICMgV2UgaGF2ZW4ndCBzZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3QgPD0g
QEBuZXh0X2ZyZWUKKyAgICAgICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hlcyB3
aXRoIGFuIGV4aXN0aW5nIG9uZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8gYmUg
YWxsb2NhdGVkLiBJbiBlaXRoZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQgZnJl
ZSBzbG90LgorICAgICAgICBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisgICAg
ICAgICMgRG9uJ3QgYWxsb3cgc2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5kbGUg
dGhlbSwgYnV0CisgICAgICAgICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5vdyBy
YXRoZXIgdGhhbiBwYXBlcmluZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4KKyAg
ICAgICAgJHN0ZGVyci5wdXRzKCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBzZWVu
ICN7QEBuZXh0X2ZyZWV9IHNvIGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAorICAg
IGVsc2UKKyAgICAgICMgV2UndmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMgZmls
ZS4KKyAgICBlbmQKKyAgICBAc2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAgaWYg
QHNsb3RfbWFwW3Nsb3RdLm5pbD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNsb3Qg
I3tzbG90fSIKKyAgICBlbmQKKyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBwYXRo
CisgIGRlZiBzbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0KKyAg
ZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2NhbCBz
bG90CisgIGRlZiByZW1hcF9zbG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNsb3Rf
bWFwLnNpemUgPiAwCisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBk
ZWZpbmVkIGEgLmZpbGUsIG9ubHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxlU2xv
dFRyYWNrZXIuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlubGlu
ZSBhc20gc3RhdGVtZW50LgorICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxzaWYg
bm90IEBwYXJlbnQubmlsPworICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVudCBo
YXMgbm90IGRlZmluZWQgYSAuZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJlY3Rp
dmVzIHJlZmVyIHRvIGZpbGVzIGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBUaGlz
IGlzIHRoZSBjYXNlIGZvciBub24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3RhdGVt
ZW50cy4KKyAgICAgIHJldCA9IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAorICAg
IGlmIHJldC5uaWw/CisgICAgICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0iCisg
ICAgZW5kCisgICAgcmV0CisgIGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9zbG90
KHBhdGgpCisgICAgQEBwYXRoc1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2ZyZWUg
Kz0gMQorICBlbmQKK2VuZAorCisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBrZWVw
aW5nIHRyYWNrIG9mIHdoZXRoZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2VjdGlv
bi4KK2NsYXNzIEFzbVJlYWRlcgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNjZXNz
b3IgOmFwcF90b19ub2FwcCwgOm5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQorICAg
IEBmID0gZgorICAgIEBmLnJld2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9IGZh
bHNlCisgICAgQGxhc3Rfc3dpdGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1lc3Nh
Z2VzCisgIGVuZAorICBkZWYgbmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBm
LmdldHMKKyAgICAgIGlmIGwubmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisgICAg
ICBAbGluZW5yICs9IDEKKyAgICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAg
aWYgQGluX2FwcAorICAgICAgICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQg
YWxyZWFkeSBpbiAjQVBQICgje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAg
QGluX2FwcCA9IHRydWUKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAgICBp
ZiBAbm9hcHBfdG9fYXBwCisgICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAgICAg
ZW5kCisgICAgICBlbmQKKyAgICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAgICAg
ICAgaWYgbm90IEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGlu
ZW5yfSBidXQgd2FzIG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSki
CisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dp
dGNoID0gQGxpbmVucgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90
b19ub2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBsCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBAZmls
ZV9yZSA9IC9eXHMqWy5dZmlsZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAgQEBs
b2NfcmUgPSAvXig/PHdoaXRlMT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90PlxkKyko
PzxyZXN0PlxzK1xkKy4qKSQvCisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBAb3V0
ZiA9IG91dGYKKyAgICBAdHJhY2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQorICAg
IEBhc21fcmVhZGVyID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFu
ICNBUFAgc2VjdGlvbiAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBp
bmxpbmUgYXNtIHN0YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVj
dAorICAgICMgcHJvY2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5l
dyAibmFtZXNwYWNlIgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25j
ZXJuZWQpLiBUaGlzIGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXpl
IHdpbGwgZWl0aGVyIGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFw
cF90b19ub2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBf
dG9fYXBwID0gUHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQHRyYWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNbLTFd
KSkKKyAgICB9CisgIGVuZAorICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBh
c21fcmVhZGVyLm5leHRfbGluZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBA
QGZpbGVfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1k
KQorICAgICAgICBuZXh0CisgICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkK
KyAgICAgIGlmIG1kCisgICAgICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAg
ICAgIGVuZAorICAgICAgQG91dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5k
CisgIGRlZiBsb2NfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAor
ICAgIHNsb3QgPSB0cmFja2VyLnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYu
cHV0cygiI3ttZFs6d2hpdGUxXX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19
IikKKyAgZW5kCisgIGRlZiBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNr
ZXJzLmxhc3QKKworICAgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0
XSkucGFyc2UKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1
dHMoIkVycm9yIHBhcnNpbmcgcGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIu
ZXJyb3J9IikKKyAgICAgIGV4aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAg
ICB0cmFja2VyLnJlZ2lzdGVyX3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90
ID0gdHJhY2tlci5zbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0
I3tzbG90fSAje21kWzpyZXN0XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUg
b3VyIHRlc3RzIHN0aWxsIHBhc3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91
ciBydW50aW1lIGFuZCBlbnN1cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRy
eWluZyBvdXQKKyMgY2hhbmdlcyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNp
emUgIT0gMgorICAkc3RkZXJyLnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBl
eGl0KDIpCitlbmQKKworaW5wYXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhu
YW1lLm5ldyhuKSB9CisKK2lmIG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3Qg
YSByZWd1bGFyIGZpbGU6IGAje2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0
aC5leHRuYW1lLnVwY2FzZSAhPSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBg
I3tpbnBhdGh9YCBkb2Vzbid0IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBv
biBhbnl3YXkuLi4iKQorZW5kCisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBG
aWxlLm9wZW4ob3V0cGF0aCwgInciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVy
Lm5ldyhpbmYsIG91dGYpLnJ1bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggYzdiNjM4YmM0MDExYzljZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZTZkZWIwMTQyNTIw
NDA4ZjhjNzgxMDBhYTY4NjVkYTVkZjg3ZDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtNjc1LDggKzY3NSw2IEBAIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHAKIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAKIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcAogbGxpbnQvTExJbnRU
aHVua3MuY3BwCi0vLyBGSVhNRTogV2UgY2FuJ3QgYnVuZGxlIHRoaXMgZmlsZSBkdWUgdG8gYSBj
bGFuZyBidWcuCi1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBAbm8tdW5pZnkKIAogcGFy
c2VyL0xleGVyLmNwcAogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGY4YWZj
N2EwNzBkNzM1MzgxM2E5ZmIzM2UyZmYyMzUyYzY5ZWJhNzYuLmQ1MTAzMTMxOWExODcxMjM1Mzhi
NjdiNmQzZDE0YWFmZmYwNDdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTUzNyw4ICs1MzcsMjMgQEAgSlNWYWx1
ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lkKiBleGVjdXRhYmxl
QWRkcmVzcywgVk0qIHZtLAogI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfREVCVUdfTEFCRUwo
bGFiZWwpCiAjZW5kaWYKIAorI2lmIENPTVBJTEVSKEdDQykKKy8vIFRoaXMgd29ya3MgYXJvdW5k
IGEgYnVnIGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8vIGRvZXNuJ3Qg
aGF2ZSBhbnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFibGUgd29uJ3QK
Ky8vIGV2ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50X2FzbSBzbyB0
aGF0IHRoZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5lIGFzbSBzdGF0
ZW1lbnQgaXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29tcGlsZXIuIFRo
aXMgd2F5LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFzbSBjb2RlIHRv
IHRoaXMgY29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29rCisvLyB1cCB0
aGUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uCitNQVJLRVJfU1lNQk9MKGJlZm9yZV9sbGludF9h
c20pCisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAvLyBUaGlzIGlzIGEgZmlsZSBn
ZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJs
eSBjb2RlCiAvLyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorI2lmIENPTVBJ
TEVSKEdDQykKK01BUktFUl9TWU1CT0woYWZ0ZXJfbGxpbnRfYXNtKQorI2VuZGlmIC8qIFdURl9D
T01QSUxFUl9HQ0MgKi8KKwogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKaW5kZXggNDk1NDNmY2QxYjJmYTE2ZTY1ODhi
NjgzMjg5YWMwNDc3MjdiN2YwZS4uMmYzMTIzZTVmYTA0MzUzZGEwYTM3MmY0NTllZDM3OGFkZjgz
MjlhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmln
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgpAQCAt
ODksNiArODksMTAgQEAgZGVmIHNob3VsZEVuYWJsZURlYnVnQW5ub3RhdGlvbnMoKQogICAgICAg
ICAgICAgICAgIGVuZAogICAgICAgICAgICAgZW5kCiAgICAgICAgIGVuZAorICAgIGVsc2lmIEVO
VlsiQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIl0gPT0gJ0dOVScgYW5kCisgICAgICAgICBFTlZbIkdD
Q19PRkZMSU5FQVNNX1NPVVJDRV9NQVAiXSA9PSAnT04nCisgICAgICAjIEFsbCBHQ0MgdmVyc2lv
bnMgdGhhdCBjYW4gYnVpbGQgSlNDIHN1cHBvcnQgZGVidWcgYW5ub3RhdGlvbnMKKyAgICAgIHJl
dHVybiB0cnVlCiAgICAgZW5kCiAKICAgICBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNDM3NGNiM2Fm
MjNjODliYjUzNDk0NjlkYzg4ZWZjNjQ0NjE0YTQ3Yy4uZGZjYzQ1NDFhNDk5YTk2ZWZkNWM2MWNh
MTViNmExM2FhYjc3MDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC0zODIsNiArMzgyLDE1IEBACiAjZGVm
aW5lIFdBUk5fVU5VU0VEX1JFVFVSTgogI2VuZGlmCiAKKy8qIE5PX1JFT1JERVIgKi8KKyNpZiAh
ZGVmaW5lZChOT19SRU9SREVSKSAmJiBDT01QSUxFUihHQ0MpCisjZGVmaW5lIE5PX1JFT1JERVIg
X19hdHRyaWJ1dGVfXygoX19ub19yZW9yZGVyX18pKQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChN
QVJLRVJfU1lNQk9MKSAmJiBDT01QSUxFUihHQ0MpCisjZGVmaW5lIE1BUktFUl9TWU1CT0wobmFt
ZSkgdm9pZCBOT19SRU9SREVSIG5hbWUodm9pZCkgeyBfX2FzbV9fKCIiKTsgfQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBf
X2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQppbmRl
eCBhNTc0ZWY4YzIyMmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIxLi5lYTEzNjI0ODNlNzgw
ZTQxNWNjODU0OGNjNmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0NvbW1vbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQpA
QCAtMTEyLDYgKzExMiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAgICBzZXQoQ01BS0VfU0hB
UkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtV2wsLS1nZGItaW5k
ZXgiKQogZW5kaWYgKCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBP
RkYpCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciIE9SIENNQUtFX0JVSUxE
X1RZUEUgU1RSRVFVQUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQoR0NDX09GRkxJTkVBU01f
U09VUkNFX01BUF9ERUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9uKEdDQ19PRkZMSU5FQVNN
X1NPVVJDRV9NQVAKKyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1hdGlvbiBmb3Igb2ZmbGlu
ZWFzbS1nZW5lcmF0ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RFRkFV
TFR9KQorCiAjIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAgLSBBdCB0aGlzIG1vbWVu
dCwgT3Blbk1QIGlzIG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbgog
IyAgICB0byBuYXRpdmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXphdGlvbiBvZiB0aGUgU1ZH
IGZpbHRlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395039</attachid>
            <date>2020-03-31 07:54:41 -0700</date>
            <delta_ts>2020-03-31 09:52:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200331145440.patch</filename>
            <type>text/plain</type>
            <size>27864</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi41MDA5MmI1YjE4ZDUyMzMw
YWFmOWZiNjRlMTcyYTg4MjExODI4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZl
IHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uOTYyOGE3YTBh
NmU1MzE4OTg0M2ZiZDdmYTZhZmVjOWIyZmRlNWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBP
VVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0
fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9h
c20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtP
RkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNt
LmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
PFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
ICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElS
RUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJ
TSkKQEAgLTEzNjIsNiArMTM2MiwzOSBAQCB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhMTElu
dE9mZnNldHNFeHRyYWN0b3IgU1lTVEVNIFBSSVZBVEUgJHtKYXZhU2NyaXB0Q29yZQogCiBhZGRf
c3ViZGlyZWN0b3J5KHNoZWxsKQogCisjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9y
dCBmb3IgdXNpbmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisjIGlubGluZSBhc20gKGkuZS4gdGhl
cmUncyBubyB3YXkgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisjIGRpcmVjdGl2
ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQor
IyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0cyBh
c3NlbWJsZWQgaW50bworIyBhbiBvYmplY3QgZmlsZS4gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMg
Zm9yIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVz
IHRvIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyMgc2luZ2xlIHNvdXJjZSBm
aWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgaXQuCithZGRf
bGlicmFyeShMb3dMZXZlbEludGVycHJldGVyTGliIE9CSkVDVCBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAorICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtM
TEludE91dHB1dH0pCisKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50ZXJw
cmV0ZXJMaWIKKyAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0Q29yZSxJ
TkNMVURFX0RJUkVDVE9SSUVTPiIpCisKK2lmIChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFggQU5E
IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVApCisgICAgbWVzc2FnZShTVEFUVVMgIkVuYWJsaW5n
IGFzbSBwb3N0cHJvY2Vzc2luZyIpCisKKyAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9MQVVO
Q0hFUiAiJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElSfS9wb3N0cHJvY2Vzcy1h
c20iKQorICAgIGdldF90YXJnZXRfcHJvcGVydHkoUFJPUF9SVUxFX0xBVU5DSF9DT01QSUxFIExv
d0xldmVsSW50ZXJwcmV0ZXJMaWIgUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICBpZiAoUFJPUF9S
VUxFX0xBVU5DSF9DT01QSUxFKQorICAgICAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9MQVVO
Q0hFUiAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSAke1BST1BfUlVMRV9MQVVOQ0hf
Q09NUElMRX0iKQorICAgIGVuZGlmICgpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBMb3dMZXZl
bEludGVycHJldGVyTGliCisgICAgICAgIFBST1BFUlRZIFJVTEVfTEFVTkNIX0NPTVBJTEUgIiR7
TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0iKQorCisgICAgIyBQYXNzIGluIHRoZSBmaWxl
bmFtZSBhcyBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIHNvIHRoYXQKKyAgICAjIHRo
ZSB3cmFwcGVyIGNhbiBhY2N1cmF0ZWx5IGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZS4KKyAgICBz
ZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoImxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IgorICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIlBPU1RQ
Uk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCitlbmRpZiAoKQorCits
aXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMgTG93TGV2ZWxJbnRlcnByZXRlckxp
YikKKwogV0VCS0lUX0NPTVBVVEVfU09VUkNFUyhKYXZhU2NyaXB0Q29yZSkKIFdFQktJVF9XUkFQ
X1NPVVJDRUxJU1QoJHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTfSkKIFdFQktJVF9GUkFNRVdPUkso
SmF2YVNjcmlwdENvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9wb3N0cHJvY2Vzcy1hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9wb3N0cHJv
Y2Vzcy1hc20KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwYTMxMmVlNGE3ODE0OWZjOWU5ZWUxMzQzODFhYzRmNmNk
MDBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bv
c3Rwcm9jZXNzLWFzbQpAQCAtMCwwICsxLDE5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisj
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgV3JhcHBlciBmb3IgYSAuY3BwIC0+IC5vIGNvbXBpbGF0aW9u
IGNvbW1hbmQuIEl0CisjIDEuIGNvbnZlcnRzIHRoZSBjb21tYW5kIHRvIGdlbmVyYXRlIGEgYC5z
JyBmaWxlCisjIDIuIHJ1bnMgdGhlIEFTTSBwb3N0cHJvY2Vzc29yIG9uIGl0IHRvIGdlbmVyYXRl
IHRoZSBmaW5hbCBgLnNgIGZpbGUKKyMgMy4gYXNzZW1ibGVzIHRoZSBgLnNgIGZpbGUgdG8gYSBg
Lm9gIGZpbGUKKworJGFzbV9zdWZmaXhfcHJlID0gIi5wcmUucyIKKyRhc21fc3VmZml4ID0gIi5z
IgorJHBvc3Rwcm9jZXNzb3IgPSAiI3tGaWxlLmRpcm5hbWUoJDApfS9yZXNvbHZlLWFzbS1maWxl
LWNvbmZsaWN0cy5yYiIKKworCiskaW50ZXJtZWRpYXRlX3BhdGhzID0gW10KKworIyBXZSBuZWVk
IHRvIHdvcmsgd2l0aCBpbmRpY2VzIGEgbG90IGFuZCB1bmZvcnR1bmF0ZWx5ICdnZXRvcHRsb25n
JyBpbgorIyB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IGV4cG9zZSBvcHRpbmQsIHNvIHdl
J3JlIGdvaW5nIHdpdGgKKyMgYXJyYXkgc2VhcmNoZXMgZm9yIHNpbXBsaWNpdHkuCitkZWYgaW5k
ZXhfbm9mYWlsKGFyeSwgZiwgZXJybXNnKQorICBpZHggPSBhcnkuaW5kZXggeyB8ZWx8CisgICAg
Zi5jYWxsKGVsKQorICB9CisgIGlmIGlkeC5uaWw/CisgICAgJHN0ZGVyci5wdXRzKGVycm1zZykK
KyAgICBleGl0KDMpCisgIGVuZAorICBpZHgKK2VuZAorCisjIEZpbmQgYW5kIHJldHVybiB0aGUg
c291cmNlIGZpbGUgZm9yIHRoaXMgY29tcGlsYXRpb24gY29tbWFuZCwKKyMgcmVtb3ZpbmcgaXQg
ZnJvbSB0aGUgYXJncy4gTm90ZSB0aGF0IHRoZSBwYXRoIChBKSBhcyBpdCBhcHBlYXJzIGhlcmUK
KyMgKGNvbWluZyBmcm9tIGEgY21ha2UgcnVsZSkgaXMgbGlrZWx5IHRvIGJlIGRpZmZlcmVudCB0
byB0aGUKKyMgYW5vbnltb3VzIGFyZ3VtZW50IChCKSB0byB0aGUgY29tcGlsYXRpb24gY29tbWFu
ZC4gSG93ZXZlciwgQSB3aWxsCisjIGJlIGEgc3VmZml4IG9mIEIuCisjCisjIEV4aXQgd2l0aCBh
biBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHRoZXJlLiBUaGlzIGhhcyBhbHJlYWR5Cisj
IGJlZW4gY2hlY2tlZCBieSBgY3h4LXdyYXBwZXJgLCBvdGhlcndpc2Ugd2Ugd291bGRuJ3QgYmUg
cnVubmluZy4KK2RlZiBleHRyYWN0X2lucHV0IShhcmdzKQorICBwcmVmaXggPSAnLURQT1NUUFJP
Q0VTU19BU009JworCisgIGlkeCA9IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxhcmd8
CisgICAgYXJnLnN0YXJ0X3dpdGg/KHByZWZpeCkKKyAgfSwgIk5vIGAtRFBPU1RQUk9DRVNTX0FT
TWAgYXJndW1lbnRgIikKKworICBwYXRoID0gYXJnc1tpZHhdW3ByZWZpeC5zaXplLi4tMV0KKyAg
aWYgcGF0aC5zaXplID09IDAKKyAgICAkc3RkZXJyLnB1dHMoIkVtcHR5IHBhdGggaW4gLURQT1NU
UFJPQ0VTU19BU009IikKKyAgICBleGl0KDMpCisgIGVuZAorICAjIFdlIG9ubHkgbmVlZCB0aGlz
IHRvIGJlIGRlZmluZWQgZm9yIHRoZSBwcmVwcm9jZXNzb3IgKG5vdCBhbnkKKyAgIyB3cmFwcGVy
KSBmcm9tIG5vdyBvbi4KKyAgYXJnc1tpZHhdID0gIi1EUE9TVFBST0NFU1NfQVNNIgorICByZXR1
cm4gcGF0aAorZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYXJndW1lbnQgZW5k
aW5nIGluIHRoaXMgc3VmZml4LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3Vt
ZW50IGlzbid0IHRoZXJlLiBXZSdyZSBvbmx5IGV2ZXIKKyMgY2FsbGVkIHdpdGggYXJndW1lbnRz
IHdlIGtub3cgYXJlIGJlaW5nIHBhc3NlZCBpbiBieSB0aGUgYnVpbGQKKyMgc3lzdGVtLgorZGVm
IGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdzLCBQ
cm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZy5lbmRfd2l0aD8od2FudGVkKQor
ICAgICAgICAgICAgICAgfSwgIk5vIGFyZ3VtZW50IGVuZHMgd2l0aCAje3dhbnRlZH0iKQorZW5k
CisKKyMgR2V0IGluZGV4IG9mIGEgZ2l2ZW4gYXJndW1lbnQuIERpZSBpZiBpdCdzIG5vdCB0aGVy
ZS4KK2RlZiBnZXRfYXJnX2lkeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdzLCBQ
cm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZyA9PSB3YW50ZWQKKyAgICAgICAg
ICAgICAgIH0sICJObyBgI3t3YW50ZWR9YCBhcmd1bWVudCIpCitlbmQKKworIyBHZXQgdGhlIGlu
ZGV4IG9mIGAtb2AgYW5kIHZlcmlmeSB0aGF0IGFuIGFyZ3VtZW50IGZvbGxvd3MuCisjIEJvdGgg
YXJlIGd1YXJhbnRlZWQgdG8gZXhpc3QgKGZyb20gb3VyIGJ1aWxkIHN5c3RlbSkuCitkZWYgZ2V0
X29faWR4KGFyZ3MpCisgIGkgPSBnZXRfYXJnX2lkeChhcmdzLCAnLW8nKQorICBpZiAoaSArIDEp
ID49IGFyZ3Muc2l6ZQorICAgICRzdGRlcnIucHV0cygiTm8gYXJndW1lbnQgdG8gYC1vYCIpCisg
ICAgZXhpdCgzKQorICBlbmQKKyAgaQorZW5kCisKKyMgUnVuIGNvbW1hbmQgYW5kIGRpZSBpZiBp
dCBmYWlscywgcHJvcGFnYXRpbmcgdGhlIGV4aXQgY29kZS4KK2RlZiBydW5fY21kKGNtZCkKKyAg
cGlkID0gUHJvY2Vzcy5zcGF3bigqY21kKQorICBQcm9jZXNzLndhaXRwaWQocGlkKQorICByZXQg
PSAkPworICBpZiBub3QgcmV0LnN1Y2Nlc3M/CisgICAgJHN0ZGVyci5wdXRzKCJFcnJvciBydW5u
aW5nIGNtZDogI3tyZXR9IikKKyAgICBleGl0KHJldC5leGl0c3RhdHVzKQorICBlbmQKK2VuZAor
CisjIENvbnZlcnQKKyMgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLmNwcAorIyB0bworIyAgICBj
eHggLW8gYmxhaC5zIC1TIGJsYWguY3BwCitkZWYgYnVpbGRfY3h4X2NtZChhcmdzKQorICBjX2lk
eCA9IGdldF9hcmdfaWR4KGFyZ3MsICctYycpCisgIG9faWR4ID0gZ2V0X29faWR4KGFyZ3MpCisK
KyAgY3h4X2FyZ3MgPSBhcmdzLmNsb25lCisKKyAgY3h4X2FyZ3NbY19pZHhdID0gJy1TJworICBv
X3BhdGggPSBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGN4eF9hcmdzW29faWR4ICsgMV0gPSBvX3Bh
dGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8IGN4
eF9hcmdzW29faWR4ICsgMV0KKyAgaWYgY3h4X2FyZ3Nbb19pZHggKyAxXSA9PSBvX3BhdGgKKyAg
ICAkc3RkZXJyLnB1dHMoIk91dHB1dCBmaWxlIG5hbWUgbm90IGFuIG9iamVjdCBmaWxlOiBgI3tv
X3BhdGh9YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgY3h4X2FyZ3MKK2VuZAorCisjIERvCisj
ICAgICBtdiBibGFoLlMgYmxhaC5wcmUuUworIyBUaGUgcmVhc29uIHdlIGRvIGEgcmVuYW1lIGlu
c3RlYWQgb2YgZGlyZWN0bHkgZ2VuZXJhdGluZyB0aGUgLnByZS5zCisjIGZpbGUgd2hlbiBjb21w
aWxpbmcgaXMgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyAuZHdvIGZpbGUgd2lsbCBoYXZlCisj
IHRoZSBjb3JyZWN0IG5hbWUgZW1iZWRkZWQuCitkZWYgcmVuYW1lX3NfZmlsZShhcmdzKQorICBv
X3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisgIEZpbGUucmVuYW1lKG9fcGF0aC5z
dWIoL1suXW8kLywgJGFzbV9zdWZmaXgpLAorICAgICAgICAgICAgICBvX3BhdGguc3ViKC9bLl1v
JC8sICRhc21fc3VmZml4X3ByZSkpCitlbmQKKworIyBCdWlsZAorIyAgICAgcG9zdHByb2Nlc3Nv
ciBibGFoLnByZS5TIGJsYWguUworZGVmIGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3MpCisg
IG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBwcF9hcmdzID0gWworICAg
ICRwb3N0cHJvY2Vzc29yLAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhfcHJl
KSwgIyBpbnB1dAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpICMgb3V0cHV0
CisgIF0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0yXQorICAkaW50ZXJtZWRp
YXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTFdCisgIHBwX2FyZ3MKK2VuZAorCisjIEJ1aWxkCisjICAg
ICBjeHggLW8gYmxhaC5vIC1jIGJsYWguUworZGVmIGJ1aWxkX2FzX2NtZChhcmdzLCBpX3BhdGgp
CisgIGlfaWR4ID0gZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3MsIGlfcGF0aCkKKyAgb19wYXRoID0g
YXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIGFzX2FyZ3MgPSBhcmdzLmNsb25lCisgIGlf
cGF0aCA9IGFzX2FyZ3NbaV9pZHhdCisgIGFzX2FyZ3NbaV9pZHhdID0gb19wYXRoLnN1YigvWy5d
byQvLCAkYXNtX3N1ZmZpeCkKKyAgYXNfYXJncworZW5kCisKK2FyZ3MgPSBBUkdWLnRvX2EKK2lf
cGF0aCA9IGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisKK2JlZ2luCisgIHJ1bl9jbWQoYnVpbGRfY3h4
X2NtZChhcmdzKSkKKyAgcmVuYW1lX3NfZmlsZShhcmdzKQorICBydW5fY21kKGJ1aWxkX3Bvc3Rw
cm9jZXNzb3JfY21kKGFyZ3MpKQorICBydW5fY21kKGJ1aWxkX2FzX2NtZChhcmdzLCBpX3BhdGgp
KQorZW5zdXJlCisgICRpbnRlcm1lZGlhdGVfcGF0aHMuZWFjaCB7IHxwfAorICAgIGlmIEZpbGUu
ZXhpc3Q/KHApCisgICAgICBGaWxlLmRlbGV0ZShwKQorICAgIGVuZAorICB9CitlbmQKKworZXhp
dCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1h
c20tZmlsZS1jb25mbGljdHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNv
bHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTgzMmQ4ZDAxZjI5Y2FhYTM2
YTlkNmMwYjE0OTYxZDdhNDhiN2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAsMCArMSwz
OTkgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlh
IFMuIEwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFJlc29s
dmUgY29uZmxpY3RzIGluIGAuZmlsZWAgZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIgZmlsZXMuIFRo
b3NlCisjIG1heSByZXN1bHQgZnJvbSBpbmxpbmUgYXNtIHN0YXRlbWVudHMgd2hpY2ggdGhlbXNl
bHZlcyBoYXZlIGAuZmlsZWAKKyMgZGlyZWN0aXZlcy4gQXMgdGhlIGlubGluZSBhc20gaGFzIG5v
IGlkZWEgd2hhdCB0aGUgbmV4dCBmcmVlIGZpbGUKKyMgbnVtYmVyIGlzLCBpdCdsbCBnZW5lcmFs
bHkgaGF2ZSBpdHMgb3duIG51bWJlcmluZy4gVG8gZ2V0IHRoaW5ncyB0bworIyB3b3JrIHdlIGhh
dmUgdG8KKyMgMS4gcmVtYXAgY29uZmxpY3RpbmcgZmlsZSBudW1iZXJzCisjIDIuIGNoYW5nZSBg
LmxvY2AgZGlyZWN0aXZlcyB0byByZWZlcmVuY2UgdGhlIGFwcHJvcHJpYXRlIGZpbGUgbnVtYmVy
LgorIworIyBUbyBiZSBhYmxlIHRvIGRvIHRoYXQsIHdlIG5lZWQgc29tZSBjb25jZXB0IG9mICJz
Y29wZSIsIGkuZS4gd2hpY2gKKyMgc2V0IG9mIGZpbGVzIGEgZ2l2ZW4gYC5sb2NgIGRpcmVjdGl2
ZSByZWZlcnMgdG8uIFdlIGdldCB0aGF0IGJ5CisjIHRyYWNraW5nIHRoZSAjQVBQLyNOT0FQUCBk
aXJlY3RpdmVzIHRoYXQgdGhlIGNvbXBpbGVyIGVtaXRzIHdoZW4gaXQKKyMgc3dpdGNoIHRvL2Zy
b20gaW5saW5lIGFzbS4KKyMKKyMgSW4gZWZmZWN0LCB3ZSBjb252ZXJ0CisjICAgICAuZmlsZSAx
ICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAxICJiYXIiCisjICAgICAuZmlsZSAyICJm
b28iCisjICAgICAubG9jIDEsIFgKKyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZCisjIHRv
CisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAyICJiYXIiCisj
ICAgICAuZmlsZSAxICJmb28iCisjICAgICAubG9jIDIsIFgKKyMgICAgICNOT0FQUAorIyAgICAg
LmxvYyAxLCBZCisKK3JlcXVpcmUgJ3BhdGhuYW1lJworcmVxdWlyZSAnc3RyaW5naW8nCityZXF1
aXJlICdzdHJzY2FuJworCitQYXJzZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1Y3QubmV3KDpzdHIpCitQ
YXJzZVJlc3VsdEVycm9yID0gU3RydWN0Lm5ldyg6ZXJyb3IpCisKKyMgUGFyc2VzIHRoZSBzaW5n
bGUgc3RyaW5nIGxpdGVyYWwgZm9sbG93aW5nIGEgLmZpbGUgYXNzZW1ibGVyIGRpcmVjdGl2ZQor
Y2xhc3MgRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIKKyAgZGVmIGluaXRpYWxpemUocykKKyAgICBA
cyA9IFN0cmluZ1NjYW5uZXIubmV3KHMpCisgIGVuZAorICBkZWYgcGFyc2UKKyAgICBAcy5za2lw
KC9ccyovKQorCisgICAgIyBXZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzdHJpbmcgbGl0ZXJhbAor
ICAgIHJldCA9IHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgcmV0LnJlc3BvbmRfdG8/KDpl
cnJvcikKKyAgICAgIHJldHVybiByZXQKKyAgICBlbmQKKworICAgIEBzLnNraXAoL1xzKi8pCisg
ICAgaWYgbm90IEBzLmVvcz8KKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldygiRXhw
ZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0ZXIgI3tyZXQuc3RyfSIpCisgICAgZW5kCisgICAgcmV0dXJu
IFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcocmV0LnN0cikKKyAgZW5kCisgIGRlZiBwYXJzZV9zdHJp
bmdfbGl0ZXJhbAorICAgIGlmIEBzLnNjYW4oLyIvKS5uaWw/CisgICAgICBlcnIgPSAiRXhwZWN0
ZWQgc3RyaW5nIGxpdGVyYWwgYXQgYCN7QHMuc3RyaW5nfWAgKHBvcyAje0BzLnBvc30pIgorICAg
ICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAgICBlbmQKKyAgICBwYXJzZV91
bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgZW5kCisgIGRlZiBwYXJzZV91bnRpbF9lbmRf
b2Zfc3RyaW5nX2xpdGVyYWwKKyAgICBzdGFydF9wb3MgPSBAcy5wb3MKKyAgICB3aGlsZSB0cnVl
CisgICAgICAjIFNlYXJjaCBmb3Igb3VyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAgQHMuc2tp
cCgvW14iXFxdKy8pCisgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgIGlmIEBzLnNjYW4o
L1xcLykKKyAgICAgICAgICAjIFdoZW4gd2Ugc2VlICdcXCcsIGNvbnN1bWUgYm90aCBjaGFyYWN0
ZXJzIHNvIHRoYXQgdGhlCisgICAgICAgICAgIyBzZWNvbmQgJ1wnIHdpbGwgbm90IGJlIHRyZWF0
ZWQgYXMgYW4gZXNjYXBlIGNoYXIuCisgICAgICAgICAgbmV4dAorICAgICAgICBlbHNpZiBAcy5z
Y2FuKC8iLykKKyAgICAgICAgICAjIEZvciAnXCInLCBjb25zdW1lIGJvdGggY2hhcmFjdGVycyBz
byB0aGF0IHRoZSAnIicgd2lsbCBub3QKKyAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgc3RyaW5n
LgorICAgICAgICAgIG5leHQKKyAgICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAgIGVsc2lm
IEBzLnNjYW4oLyIvKQorICAgICAgICAjICciJyB3aXRob3V0IGEgcHJlY2VlZGluZyAnXCc7IHRl
cm1pbmF0ZSB0aGUgbGl0ZXJhbC4KKyAgICAgICAgIyBXZSdyZSBhbHJlYWR5IHBhc3QgdGhlICci
Jywgc28gdGhlIGxpdGVyYWwgZW5kcyBhdCAtMgorICAgICAgICAjIGNoYXJhY3RlcnMuCisgICAg
ICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KEBzLnN0cmluZ1tzdGFydF9wb3MuLihA
cy5wb3MgLSAyKV0pCisgICAgICBlbHNpZiBAcy5lb3M/CisgICAgICAgIGVyciA9ICJVbnRlcm1p
bmF0ZWQgc3RyaW5nIGxpdGVyYWwgKHN0YXJ0aW5nIGF0IHBvcyAje3N0YXJ0X3Bvc30gaW4gI3tA
cy5zdHJpbmd9IgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoZXJyKQorICAg
ICAgZW5kCisgICAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgKCN7QHMuaW5zcGVjdH0pIgorICAg
IGVuZAorICBlbmQKK2VuZAorCitkZWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgcHIgPSBGaWxl
RGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcoc3RyKS5wYXJzZQorICBpZiByZXMuaXNfYT8oQXJyYXkp
CisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgb3V0Zi5wdXRzKCJQYXJzZSBy
ZXN1bHQgaXMgYCN7cHIuZXJyb3J9YCBidXQgZXhwZWN0ZWQgI3tyZXN9IikKKyAgICAgIHJldHVy
biBmYWxzZQorICAgIGVuZAorICAgIGlmIHByLnN0ciAhPSByZXNbMF0KKyAgICAgIG91dGYucHV0
cygiUGFyc2VkIHBhdGggYCN7cHIuc3RyfWAgYnV0IGV4cGVjdGVkIGAje3Jlc1swXX1gIikKKyAg
ICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lmIHJlcy5p
c19hPyhTdHJpbmcpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgaWYgbm90
IHByLmVycm9yLmRvd25jYXNlLmluY2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAgZXJyID0g
IkVycm9yIG1lc3NhZ2UgYCN7cHIuZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVjdGVkIHN1
YnN0cmluZyBgI3tyZXN9YCIKKyAgICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAgcmV0dXJu
IGZhbHNlCisgICAgICBlbmQKKyAgICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAgb3V0Zi5w
dXRzKCJFeHBlY3RlZCBlcnJvciAoI3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFyc2UgI3tw
ci5zdHJ9IikKKyAgICByZXR1cm4gZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRlcm5hbCBl
cnJvciAje3Jlcy5jbGFzc30iCisgIGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBucl9zdWNj
ZWVkZWQgPSAwCisgIHRlc3RzID0gWworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsnImZvby9i
YXIiJywgWyJmb28vYmFyIl1dLAorCisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBzdHJpbmcg
bGl0ZXJhbCJdLAorCisgICAgWyciZm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFs
Il0sCisKKyAgICAjICJmb29cIgorICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRlZCBzdHJp
bmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIsIFsiZm9v
XHg1Y1x4NWMiXV0sCisKKyAgICAjIENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJiYXIiJywg
Wydmb29cImJhciddXSwKKworICAgICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyciZm9vL2Jh
ciInLCBbJ2Zvby9iYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAgIFsnIi9i
YXIiJywgWycvYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0d28gY29t
cG9uZW50cworICAgIFsnIi9iYXIvYmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAjIENhbiBk
ZXRlY3Qgc3RyYXkgdG9rZW4KKyAgICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQgb2YgbGlu
ZSJdLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVzcGFjZQor
ICAgIFsnImZvbyJiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgV2lsbCBu
b3QgYWNjZXB0IGNsYW5nLXN0eWxlIC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3JraW5nX2Rp
cmVjdG9yeSIgInBhdGgiJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBvdXRmID0g
U3RyaW5nSU8ubmV3KCIiKQorICB0ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlmIHRlc3Qo
b3V0Ziwgc3RyLCByZXMpCisgICAgICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAorICB9Cisg
IGlmIG5yX3N1Y2NlZWRlZCAhPSB0ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91dGYuc3Ry
aW5nKQorICAgICRzdGRlcnIucHV0cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25yX3N1Y2Nl
ZWRlZH0vI3t0ZXN0cy5zaXplfSIpCisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisjIEtlZXAg
dHJhY2sgb2Ygd2hpY2ggZmlsZW5vIGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0aC4gV2Ug
Y2FsbAorIyB0aGUgZmlsZW5vIGEgJ3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2VyCisgIEBA
bmV4dF9mcmVlID0gMSAgICMgTmV4dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMgPSB7fSAj
IE1hcHMgcGF0aCAtPiBnbG9iYWwgc2xvdAorICBkZWYgaW5pdGlhbGl6ZShwYXJlbnQpCisgICAg
QHBhcmVudCA9IHBhcmVudAorICAgICMgVGhpcyBtYXBzIGZyb20gb3VyIG93biBsb2NhbCBzbG90
cyAoaS5lLiB3aXRoaW4gYW4gQVBQIHNlY3Rpb24pCisgICAgIyB0byBhIGdsb2JhbCBzbG90Lgor
ICAgIEBzbG90X21hcCA9IHt9CisgIGVuZAorICAjIFdlIG1ha2Ugc3VyZSB0aGF0IC5maWxlIGRp
cmVjdGl2ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzYW1lIHBhdGggYXJlCisgICMgZGVkdXAnZCwgaS5l
LiBpZiB3ZSBzZWUKKyAgIyAgICAgLmZpbGUgTiAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjICAg
ICAuLi4KKyAgIyAgICAgLmZpbGUgTSAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjIHRoZW4gdGhl
ICJsb2NhbCIgTiwgTSBzbG90cyB3aWxsIGJlIG1hcHBlZCB0byB0aGUgc2FtZSAiZ2xvYmFsIiBz
bG90LgorICBkZWYgcmVnaXN0ZXJfcGF0aChwYXRoLCBzbG90KQorICAgIGN1cnJfc2xvdCA9IEBA
cGF0aHNbcGF0aF0KKyAgICBpZiBjdXJyX3Nsb3QubmlsPworICAgICAgIyBXZSBoYXZlbid0IHNl
ZW4gdGhpcyBmaWxlIGJlZm9yZQorICAgICAgaWYgc2xvdCA8PSBAQG5leHRfZnJlZQorICAgICAg
ICAjIERlc2lyZWQgZmlsZSBzbG90IGVpdGhlciBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgb25l
LCBvciBpcworICAgICAgICAjIHRoZSBuZXh0IG9uZSB0byBiZSBhbGxvY2F0ZWQuIEluIGVpdGhl
ciBjYXNlLCBhc3NpZ24gdGhlCisgICAgICAgICMgbmV4dCBmcmVlIHNsb3QuCisgICAgICAgIGFz
c2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICAgIGVsc2UKKyAgICAgICAgIyBEb24ndCBhbGxvdyBz
bG90IGdhcHMuIFRlY2huaWNhbGx5IHdlIGNvdWxkIGhhbmRsZSB0aGVtLCBidXQKKyAgICAgICAg
IyB0aGV5IHNob3VsZCBuZXZlciBoYXBwZW47IGJhaWwgbm93IHJhdGhlciB0aGFuIHBhcGVyaW5n
IG92ZXIKKyAgICAgICAgIyBhbiBlYXJsaWVyIGVycm9yLgorICAgICAgICAkc3RkZXJyLnB1dHMo
IkZpbGUgd2FudHMgc2xvdCAje3Nsb3R9IGJ1dCBvbmx5IHNlZW4gI3tAQG5leHRfZnJlZX0gc28g
ZmFyIikKKyAgICAgICAgZXhpdCgyKQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgIyBXZSd2
ZSBhbHJlYWR5IGFzc2lnbmVkIGEgc2xvdCBmb3IgdGhpcyBmaWxlLgorICAgIGVuZAorICAgIEBz
bG90X21hcFtzbG90XSA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBAc2xvdF9tYXBbc2xvdF0ubmls
PworICAgICAgcmFpc2UgIkRpZG4ndCBtYXAgbG9jYWwgc2xvdCAje3Nsb3R9IgorICAgIGVuZAor
ICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgZm9yIHBhdGgKKyAgZGVmIHNsb3RfZm9yX3Bh
dGgocGF0aCkKKyAgICByZXR1cm4gQEBwYXRoc1twYXRoXQorICBlbmQKKyAgIyBSZXR1cm4gZ2xv
YmFsIHNsb3QgdGhhdCB3aWxsIHJlcGxhY2UgdGhlIGxvY2FsIHNsb3QKKyAgZGVmIHJlbWFwX3Ns
b3Qoc2xvdCkKKyAgICByZXQgPSBuaWwKKyAgICBpZiBAc2xvdF9tYXAuc2l6ZSA+IDAKKyAgICAg
ICMgSWYgdGhlIGN1cnJlbnQgTk9fQVBQIHNlZ21lbnQgaGFzIGRlZmluZWQgYSAuZmlsZSwgb25s
eSBsb29rCisgICAgICAjIGluIHRoZSBjdXJyZW50IEZpbGVTbG90VHJhY2tlci4gVGhpcyBpcyB0
aGUgY2FzZSBmb3IgYQorICAgICAgIyB0b3AtbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQuCisg
ICAgICByZXQgPSBAc2xvdF9tYXBbc2xvdF0KKyAgICBlbHNpZiBub3QgQHBhcmVudC5uaWw/Cisg
ICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBub3QgZGVmaW5lZCBhIC5m
aWxlLCBjbGVhcmx5CisgICAgICAjIGFsbCAubG9jIGRpcmVjdGl2ZXMgcmVmZXIgdG8gZmlsZXMg
ZGVmaW5lZCBpbiB0aGUgQVBQCisgICAgICAjIHBhcnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5v
bi10b3AtbGV2ZWwgaW5saW5lIGFzbQorICAgICAgIyBzdGF0ZW1lbnRzLgorICAgICAgcmV0ID0g
QHBhcmVudC5yZW1hcF9zbG90KHNsb3QpCisgICAgZW5kCisgICAgaWYgcmV0Lm5pbD8KKyAgICAg
IHJhaXNlICJObyBnbG9iYWwgc2xvdCBmb3IgI3tzbG90fSIKKyAgICBlbmQKKyAgICByZXQKKyAg
ZW5kCisgIHByaXZhdGUKKyAgZGVmIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBAQHBhdGhz
W3BhdGhdID0gQEBuZXh0X2ZyZWUKKyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAorZW5kCisK
KyMgUmV0dXJuIHNlcXVlbnRpYWwgbGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhl
ciB3ZSdyZSBpbiBhbgorIyAjQVBQIG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNtUmVhZGVy
CisgIGF0dHJfcmVhZGVyIDppbl9hcHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25vYXBwLCA6
bm9hcHBfdG9fYXBwCisgIGRlZiBpbml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAgQGYucmV3
aW5kCisgICAgQGxpbmVuciA9IDAKKyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFzdF9zd2l0
Y2ggPSAic3RhcnQgb2YgZmlsZSIgIyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisgIGRlZiBu
ZXh0X2xpbmUKKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAgaWYgbC5u
aWw/CisgICAgICAgIHJldHVybiBsCisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0gMQorICAg
ICAgaWYgL14jXHMqQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisgICAgICAg
ICAgcmFpc2UgIiNBUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNBUFAgKCN7
QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1ZQorICAg
ICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19hcHAKKyAg
ICAgICAgICBAbm9hcHBfdG9fYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAg
ICAgaWYgL14jXHMqTk9fQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBub3QgQGluX2FwcAor
ICAgICAgICAgIHJhaXNlICIjTk9BUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCB3YXMgbm90IGlu
ICNBUFAgKGxhc3Qgc3dpY2ggYXQgI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5kCisgICAg
ICAgIEBpbl9hcHAgPSBmYWxzZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAg
ICAgIGlmIEBhcHBfdG9fbm9hcHAKKyAgICAgICAgICBAYXBwX3RvX25vYXBwLmNhbGwoKQorICAg
ICAgICBlbmQKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGwKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgRmlsZUNvbmZsaWN0UmVzb2x2ZXIKKyAgQEBmaWxlX3JlID0gL15ccypbLl1maWxl
XHMrKD88c2xvdD5cZCspXHMrKD88cmVzdD4uKikkLworICBAQGxvY19yZSA9IC9eKD88d2hpdGUx
PlxzKilbLl1sb2MoPzx3aGl0ZTI+XHMrKSg/PHNsb3Q+XGQrKSg/PHJlc3Q+XHMrXGQrLiopJC8K
KyAgZGVmIGluaXRpYWxpemUoaW5mLCBvdXRmKQorICAgIEBvdXRmID0gb3V0ZgorICAgIEB0cmFj
a2VycyA9IFtGaWxlU2xvdFRyYWNrZXIubmV3KG5pbCldCisgICAgQGFzbV9yZWFkZXIgPSBBc21S
ZWFkZXIubmV3KGluZikKKyAgICAjIFdoZW4gd2UgZW50ZXIgYW4gI0FQUCBzZWN0aW9uIChpLmUu
IGFzbSBlbWl0dGVkIGZyb20gYW4gZXhwYW5kZWQKKyAgICAjIGlubGluZSBhc20gc3RhdGVtZW50
KSwgY3JlYXRlIGEgbmV3IGZpbGUgdHJhY2tlciwgaW4gZWZmZWN0CisgICAgIyBwcm9jZXNzaW5n
IHRoZSAuZmlsZSBhbmQgLmxvYyBkaXJlY3RpdmVzIGluIGEgbmV3ICJuYW1lc3BhY2UiCisgICAg
IyAoYXMgZmFyIGFzIHRoZSBmaWxlIG51bWJlcnMgYXJlIGNvbmNlcm5lZCkuIFRoaXMgaXMgYW4g
YXJyYXksCisgICAgIyBidXQgaW4gcHJhY3RpY2UgdGhlIHNpemUgd2lsbCBlaXRoZXIgYmUgMSAo
Tk9BUFApIG9yIDIgKEFQUCkuCisgICAgQGFzbV9yZWFkZXIuYXBwX3RvX25vYXBwID0gUHJvYy5u
ZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYWNr
ZXJzLnBvcAorICAgIH0KKyAgICBAYXNtX3JlYWRlci5ub2FwcF90b19hcHAgPSBQcm9jLm5ldyB7
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhY2tlcnMu
cHVzaChGaWxlU2xvdFRyYWNrZXIubmV3KEB0cmFja2Vyc1stMV0pKQorICAgIH0KKyAgZW5kCisg
IGRlZiBydW4KKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGFzbV9yZWFkZXIubmV4dF9saW5l
CisgICAgICBicmVhayB1bmxlc3MgbAorCisgICAgICBtZCA9IEBAZmlsZV9yZS5tYXRjaChsKQor
ICAgICAgaWYgbWQKKyAgICAgICAgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAg
ICAgIGVuZAorICAgICAgbWQgPSBAQGxvY19yZS5tYXRjaChsKQorICAgICAgaWYgbWQKKyAgICAg
ICAgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAgICBAb3V0
Zi53cml0ZShsKQorICAgICAgbmV4dAorICAgIGVuZAorICBlbmQKKyAgZGVmIGxvY19kaXJlY3Rp
dmUobWQpCisgICAgdHJhY2tlciA9IEB0cmFja2Vycy5sYXN0CisgICAgc2xvdCA9IHRyYWNrZXIu
cmVtYXBfc2xvdChtZFs6c2xvdF0udG9faSkKKyAgICBAb3V0Zi5wdXRzKCIje21kWzp3aGl0ZTFd
fS5sb2Mje21kWzp3aGl0ZTJdfSN7c2xvdH0je21kWzpyZXN0XX0iKQorICBlbmQKKyAgZGVmIGZp
bGVfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorCisgICAgcHIg
PSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcobWRbOnJlc3RdKS5wYXJzZQorICAgIGlmIHBy
LnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgICRzdGRlcnIucHV0cygiRXJyb3IgcGFyc2luZyBw
YXRoIGFyZ3VtZW50IHRvIC5maWxlIGRpcmVjdGl2ZTogI3twci5lcnJvcn0iKQorICAgICAgZXhp
dCgyKQorICAgIGVuZAorCisgICAgcGF0aCA9IHByLnN0cgorICAgIHRyYWNrZXIucmVnaXN0ZXJf
cGF0aChwYXRoLCBtZFs6c2xvdF0udG9faSkKKworICAgIHNsb3QgPSB0cmFja2VyLnNsb3RfZm9y
X3BhdGgocGF0aCkKKyAgICBAb3V0Zi5wdXRzKCJcdC5maWxlXHQje3Nsb3R9ICN7bWRbOnJlc3Rd
fSIpCisgIGVuZAorZW5kCisKKyMgRmlyc3QsIG1ha2Ugc3VyZSBvdXIgdGVzdHMgc3RpbGwgcGFz
cy4gVGhpcyBvbmx5IHRha2VzIGEgZnJhY3Rpb24gb2YKKyMgb3VyIHJ1bnRpbWUgYW5kIGVuc3Vy
ZXMgdGhlIHRlc3RzIHdpbGwgZ2V0IHJ1biBieSBhbnlvbmUgdHJ5aW5nIG91dAorIyBjaGFuZ2Vz
IHRvIHRoaXMgZmlsZS4KK3NlbGZ0ZXN0CisKK2lmIEFSR1Yuc2l6ZSAhPSAyCisgICRzdGRlcnIu
cHV0cygiVXNhZ2U6ICN7JDB9IGlucHV0IG91dHB1dCIpCisgIGV4aXQoMikKK2VuZAorCitpbnBh
dGgsIG91dHBhdGggPSBBUkdWLmNvbGxlY3QgeyB8bnwgUGF0aG5hbWUubmV3KG4pIH0KKworaWYg
bm90IGlucGF0aC5maWxlPworICAkc3RkZXJyLnB1dHMoIk5vdCBhIHJlZ3VsYXIgZmlsZTogYCN7
aW5wYXRofWAiKQorICBleGl0KDIpCitlbmQKKworaWYgaW5wYXRoLmV4dG5hbWUudXBjYXNlICE9
ICIuUyIKKyAgJHN0ZGVyci5wdXRzKCJ3YXJuaW5nOiBmaWxlIGAje2lucGF0aH1gIGRvZXNuJ3Qg
aGF2ZSBhIGAuc2Agb3IgYC5TYCBleHRlbnNpb24uIEdvaW5nIG9uIGFueXdheS4uLiIpCitlbmQK
KworRmlsZS5vcGVuKGlucGF0aCwgInIiKSB7IHxpbmZ8CisgIEZpbGUub3BlbihvdXRwYXRoLCAi
dyIpIHsgfG91dGZ8CisgICAgRmlsZUNvbmZsaWN0UmVzb2x2ZXIubmV3KGluZiwgb3V0ZikucnVu
CisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2I2MzhiYzQwMTFjOWNk
NDRlMTYyOTk3ZTA5M2M4ZTA0ZTQyMGEyLi5lNmRlYjAxNDI1MjA0MDhmOGM3ODEwMGFhNjg2NWRh
NWRmODdkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC02NzUsOCArNjc1LDYg
QEAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCiBsbGludC9MTEludFRodW5rcy5jcHAKLS8vIEZJWE1F
OiBXZSBjYW4ndCBidW5kbGUgdGhpcyBmaWxlIGR1ZSB0byBhIGNsYW5nIGJ1Zy4KLWxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwIEBuby11bmlmeQogCiBwYXJzZXIvTGV4ZXIuY3BwCiBwYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEzYTlmYjMz
ZTJmZjIzNTJjNjllYmE3Ni4uZDUxMDMxMzE5YTE4NzEyMzUzOGI2N2I2ZDNkMTRhYWZmZjA0N2Nl
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcApAQCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9w
Y29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAj
ZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRpZgogCisj
aWYgQ09NUElMRVIoR0NDKQorLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4gR0RCIHdoZXJl
LCBpZiB0aGUgY29tcGlsYXRpb24gdW5pdAorLy8gZG9lc24ndCBoYXZlIGFueSBhZGRyZXNzIHJh
bmdlIGluZm9ybWF0aW9uLCBpdHMgbGluZSB0YWJsZSB3b24ndAorLy8gZXZlbiBiZSBjb25zdWx0
ZWQuIEVtaXQge2JlZm9yZSxhZnRlcn1fbGxpbnRfYXNtIHNvIHRoYXQgdGhlIGNvZGUKKy8vIGVt
aXR0ZWQgaW4gdGhlIHRvcCBsZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudCBpcyB3aXRoaW4gZnVu
Y3Rpb25zCisvLyB2aXNpYmxlIHRvIHRoZSBjb21waWxlci4gVGhpcyB3YXksIEdEQiBjYW4gcmVz
b2x2ZSBhIFBDIGluIHRoZQorLy8gbGxpbnQgYXNtIGNvZGUgdG8gdGhpcyBjb21waWxhdGlvbiB1
bml0IGFuZCB0aGUgc3VjY2Vzc2Z1bGx5IGxvb2sKKy8vIHVwIHRoZSBsaW5lIG51bWJlciBpbmZv
cm1hdGlvbi4KK01BUktFUl9TWU1CT0woYmVmb3JlX2xsaW50X2FzbSkKKyNlbmRpZiAvKiBXVEZf
Q09NUElMRVJfR0NDICovCisKIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5l
YXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZvciB0aGUg
aW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCiAj
aW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisjaWYgQ09NUElMRVIoR0NDKQorTUFSS0VSX1NZ
TUJPTChhZnRlcl9sbGludF9hc20pCisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAqLworCiAj
ZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFiMmZhMTZlNjU4OGI2ODMyODlhYzA0NzcyN2I3ZjBl
Li4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1OWVkMzc4YWRmODMyOWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCkBAIC04OSw2ICs4OSwxMCBAQCBkZWYg
c2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9ucygpCiAgICAgICAgICAgICAgICAgZW5kCiAgICAg
ICAgICAgICBlbmQKICAgICAgICAgZW5kCisgICAgZWxzaWYgRU5WWyJDTUFLRV9DWFhfQ09NUElM
RVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAgICAgIEVOVlsiR0NDX09GRkxJTkVBU01fU09VUkNF
X01BUCJdID09ICdPTicKKyAgICAgICMgQWxsIEdDQyB2ZXJzaW9ucyB0aGF0IGNhbiBidWlsZCBK
U0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9ucworICAgICAgcmV0dXJuIHRydWUKICAgICBlbmQK
IAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291
cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCA0Mzc0Y2IzYWYyM2M4OWJiNTM0OTQ2OWRjODhl
ZmM2NDQ2MTRhNDdjLi5kZmNjNDU0MWE0OTlhOTZlZmQ1YzYxY2ExNWI2YTEzYWFiNzcwNjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIsMTUgQEAKICNkZWZpbmUgV0FSTl9VTlVTRURfUkVU
VVJOCiAjZW5kaWYKIAorLyogTk9fUkVPUkRFUiAqLworI2lmICFkZWZpbmVkKE5PX1JFT1JERVIp
ICYmIENPTVBJTEVSKEdDQykKKyNkZWZpbmUgTk9fUkVPUkRFUiBfX2F0dHJpYnV0ZV9fKChfX25v
X3Jlb3JkZXJfXykpCisjZW5kaWYKKworI2lmICFkZWZpbmVkKE1BUktFUl9TWU1CT0wpICYmIENP
TVBJTEVSKEdDQykKKyNkZWZpbmUgTUFSS0VSX1NZTUJPTChuYW1lKSB2b2lkIE5PX1JFT1JERVIg
bmFtZSh2b2lkKSB7IF9fYXNtX18oIiIpOyB9CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmIENPTVBJTEVSKE1TVkMpCiAjZGVmaW5lIF9faGFzX2luY2x1ZGUocGF0aCkg
MAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmluZGV4IGE1NzRlZjhjMjIyYmEwNzIw
ZDIyYTFmZDVkNWM4MTUzYTRkY2Y3MjEuLmVhMTM2MjQ4M2U3ODBlNDE1Y2M4NTQ4Y2M2ZjkxNGIy
YTg4Y2Q4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCkBAIC0xMTIsNiArMTEyLDE1IEBA
IGlmIChERUJVR19GSVNTSU9OKQogICAgIHNldChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIk
e0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC1XbCwtLWdkYi1pbmRleCIpCiBlbmRpZiAoKQogCitz
ZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxUIE9GRikKK2lmIChDTUFLRV9CVUlM
RF9UWVBFIFNUUkVRVUFMICJEZWJ1ZyIgT1IgQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiUmVs
V2l0aERlYkluZm8iKQorICAgIHNldChHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RFRkFVTFQg
T04pCitlbmRpZiAoKQorCitvcHRpb24oR0NDX09GRkxJTkVBU01fU09VUkNFX01BUAorICAiUHJv
ZHVjZSBkZWJ1ZyBsaW5lIGluZm9ybWF0aW9uIGZvciBvZmZsaW5lYXNtLWdlbmVyYXRlZCBjb2Rl
IgorICAke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVH0pCisKICMgRW5hYmxlIHRo
ZSB1c2FnZSBvZiBPcGVuTVAuCiAjICAtIEF0IHRoaXMgbW9tZW50LCBPcGVuTVAgaXMgb25seSB1
c2VkIGFzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uCiAjICAgIHRvIG5hdGl2ZSB0aHJl
YWRzIGZvciB0aGUgcGFyYWxsZWxpemF0aW9uIG9mIHRoZSBTVkcgZmlsdGVycy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395053</attachid>
            <date>2020-03-31 09:52:30 -0700</date>
            <delta_ts>2020-04-01 07:52:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200331165229.patch</filename>
            <type>text/plain</type>
            <size>28004</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi41MDA5MmI1YjE4ZDUyMzMw
YWFmOWZiNjRlMTcyYTg4MjExODI4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZl
IHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uZjZmZTkzMTQ2
ZDk5YWYxM2FlMWE5N2RlYWFiNTUxMzkxYjdmYzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBP
VVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0
fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9h
c20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtP
RkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNt
LmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
PFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
ICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElS
RUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJ
TSkKQEAgLTEzNjIsNiArMTM2Miw0NCBAQCB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhMTElu
dE9mZnNldHNFeHRyYWN0b3IgU1lTVEVNIFBSSVZBVEUgJHtKYXZhU2NyaXB0Q29yZQogCiBhZGRf
c3ViZGlyZWN0b3J5KHNoZWxsKQogCisjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9y
dCBmb3IgdXNpbmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisjIGlubGluZSBhc20gKGkuZS4gdGhl
cmUncyBubyB3YXkgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBgLmZpbGVgCisjIGRpcmVjdGl2
ZXMgZ2VuZXJhdGVkIGJ5IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQor
IyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0cyBh
c3NlbWJsZWQgaW50bworIyBhbiBvYmplY3QgZmlsZS4gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMg
Zm9yIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVz
IHRvIGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyMgc2luZ2xlIHNvdXJjZSBm
aWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdldCBmb3IgaXQuCisKK2lm
IChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKKyAgICBhZGRfbGlicmFyeShMb3dMZXZlbElu
dGVycHJldGVyTGliIE9CSkVDVCBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCkKK2Vsc2Ug
KCkKKyAgICBhZGRfbGlicmFyeShMb3dMZXZlbEludGVycHJldGVyTGliIE9CSkVDVCBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorICAgICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9KQorZW5kaWYgKCkKKwordGFyZ2V0X2luY2x1ZGVf
ZGlyZWN0b3JpZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgIFBSSVZBVEUgIiQ8VEFSR0VU
X1BST1BFUlRZOkphdmFTY3JpcHRDb3JlLElOQ0xVREVfRElSRUNUT1JJRVM+IikKKworaWYgKENN
QUtFX0NPTVBJTEVSX0lTX0dOVUNYWCBBTkQgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUCkKKyAg
ICBtZXNzYWdlKFNUQVRVUyAiRW5hYmxpbmcgYXNtIHBvc3Rwcm9jZXNzaW5nIikKKworICAgIHNl
dChMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSICIke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
U09VUkNFU19ESVJ9L3Bvc3Rwcm9jZXNzLWFzbSIpCisgICAgZ2V0X3RhcmdldF9wcm9wZXJ0eShQ
Uk9QX1JVTEVfTEFVTkNIX0NPTVBJTEUgTG93TGV2ZWxJbnRlcnByZXRlckxpYiBSVUxFX0xBVU5D
SF9DT01QSUxFKQorICAgIGlmIChQUk9QX1JVTEVfTEFVTkNIX0NPTVBJTEUpCisgICAgICAgIHNl
dChMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFV
TkNIRVJ9ICR7UFJPUF9SVUxFX0xBVU5DSF9DT01QSUxFfSIpCisgICAgZW5kaWYgKCkKKyAgICBz
ZXRfcHJvcGVydHkoVEFSR0VUIExvd0xldmVsSW50ZXJwcmV0ZXJMaWIKKyAgICAgICAgUFJPUEVS
VFkgUlVMRV9MQVVOQ0hfQ09NUElMRSAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSIp
CisKKyAgICAjIFBhc3MgaW4gdGhlIGZpbGVuYW1lIGFzIGEgbWFnaWMgcHJlcHJvY2Vzc29yIGRp
cmVjdGl2ZSwgc28gdGhhdAorICAgICMgdGhlIHdyYXBwZXIgY2FuIGFjY3VyYXRlbHkgaWRlbnRp
ZnkgdGhlIHNvdXJjZSBmaWxlLgorICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygibGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiCisgICAgICAgIFBST1BFUlRJRVMKKyAgICAgICAg
Q09NUElMRV9ERUZJTklUSU9OUyAiUE9TVFBST0NFU1NfQVNNPWxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIikKK2VuZGlmICgpCisKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJB
UklFUyBMb3dMZXZlbEludGVycHJldGVyTGliKQorCiBXRUJLSVRfQ09NUFVURV9TT1VSQ0VTKEph
dmFTY3JpcHRDb3JlKQogV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke0phdmFTY3JpcHRDb3JlX1NP
VVJDRVN9KQogV0VCS0lUX0ZSQU1FV09SSyhKYXZhU2NyaXB0Q29yZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBhMzEyZWU0
YTc4MTQ5ZmM5ZTllZTEzNDM4MWFjNGY2Y2QwMGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtCkBAIC0wLDAgKzEsMTkzIEBA
CisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLiBM
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBXcmFwcGVyIGZv
ciBhIC5jcHAgLT4gLm8gY29tcGlsYXRpb24gY29tbWFuZC4gSXQKKyMgMS4gY29udmVydHMgdGhl
IGNvbW1hbmQgdG8gZ2VuZXJhdGUgYSBgLnMnIGZpbGUKKyMgMi4gcnVucyB0aGUgQVNNIHBvc3Rw
cm9jZXNzb3Igb24gaXQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIGAuc2AgZmlsZQorIyAzLiBhc3Nl
bWJsZXMgdGhlIGAuc2AgZmlsZSB0byBhIGAub2AgZmlsZQorCiskYXNtX3N1ZmZpeF9wcmUgPSAi
LnByZS5zIgorJGFzbV9zdWZmaXggPSAiLnMiCiskcG9zdHByb2Nlc3NvciA9ICIje0ZpbGUuZGly
bmFtZSgkMCl9L3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIgorCisKKyRpbnRlcm1lZGlh
dGVfcGF0aHMgPSBbXQorCisjIFdlIG5lZWQgdG8gd29yayB3aXRoIGluZGljZXMgYSBsb3QgYW5k
IHVuZm9ydHVuYXRlbHkgJ2dldG9wdGxvbmcnIGluCisjIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRv
ZXNuJ3QgZXhwb3NlIG9wdGluZCwgc28gd2UncmUgZ29pbmcgd2l0aAorIyBhcnJheSBzZWFyY2hl
cyBmb3Igc2ltcGxpY2l0eS4KK2RlZiBpbmRleF9ub2ZhaWwoYXJ5LCBmLCBlcnJtc2cpCisgIGlk
eCA9IGFyeS5pbmRleCB7IHxlbHwKKyAgICBmLmNhbGwoZWwpCisgIH0KKyAgaWYgaWR4Lm5pbD8K
KyAgICAkc3RkZXJyLnB1dHMoZXJybXNnKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGlkeAorZW5k
CisKKyMgRmluZCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgZmlsZSBmb3IgdGhpcyBjb21waWxhdGlv
biBjb21tYW5kLAorIyByZW1vdmluZyBpdCBmcm9tIHRoZSBhcmdzLiBOb3RlIHRoYXQgdGhlIHBh
dGggKEEpIGFzIGl0IGFwcGVhcnMgaGVyZQorIyAoY29taW5nIGZyb20gYSBjbWFrZSBydWxlKSBp
cyBsaWtlbHkgdG8gYmUgZGlmZmVyZW50IHRvIHRoZQorIyBhbm9ueW1vdXMgYXJndW1lbnQgKEIp
IHRvIHRoZSBjb21waWxhdGlvbiBjb21tYW5kLiBIb3dldmVyLCBBIHdpbGwKKyMgYmUgYSBzdWZm
aXggb2YgQi4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBub3Qg
dGhlcmUuIFRoaXMgaGFzIGFscmVhZHkKKyMgYmVlbiBjaGVja2VkIGJ5IGBjeHgtd3JhcHBlcmAs
IG90aGVyd2lzZSB3ZSB3b3VsZG4ndCBiZSBydW5uaW5nLgorZGVmIGV4dHJhY3RfaW5wdXQhKGFy
Z3MpCisgIHByZWZpeCA9ICctRFBPU1RQUk9DRVNTX0FTTT0nCisKKyAgaWR4ID0gaW5kZXhfbm9m
YWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICBhcmcuc3RhcnRfd2l0aD8ocHJlZml4KQor
ICB9LCAiTm8gYC1EUE9TVFBST0NFU1NfQVNNYCBhcmd1bWVudGAiKQorCisgIHBhdGggPSBhcmdz
W2lkeF1bcHJlZml4LnNpemUuLi0xXQorICBpZiBwYXRoLnNpemUgPT0gMAorICAgICRzdGRlcnIu
cHV0cygiRW1wdHkgcGF0aCBpbiAtRFBPU1RQUk9DRVNTX0FTTT0iKQorICAgIGV4aXQoMykKKyAg
ZW5kCisgICMgV2Ugb25seSBuZWVkIHRoaXMgdG8gYmUgZGVmaW5lZCBmb3IgdGhlIHByZXByb2Nl
c3NvciAobm90IGFueQorICAjIHdyYXBwZXIpIGZyb20gbm93IG9uLgorICBhcmdzW2lkeF0gPSAi
LURQT1NUUFJPQ0VTU19BU00iCisgIHJldHVybiBwYXRoCitlbmQKKworIyBHZXQgdGhlIGluZGV4
IG9mIHRoZSBmaXJzdCBhcmd1bWVudCBlbmRpbmcgaW4gdGhpcyBzdWZmaXguCisjCisjIEV4aXQg
d2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXNuJ3QgdGhlcmUuIFdlJ3JlIG9ubHkgZXZl
cgorIyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgd2Uga25vdyBhcmUgYmVpbmcgcGFzc2VkIGluIGJ5
IHRoZSBidWlsZAorIyBzeXN0ZW0uCitkZWYgZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3MsIHdhbnRl
ZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAgICAgICAgICAg
ICAgYXJnLmVuZF93aXRoPyh3YW50ZWQpCisgICAgICAgICAgICAgICB9LCAiTm8gYXJndW1lbnQg
ZW5kcyB3aXRoICN7d2FudGVkfSIpCitlbmQKKworIyBHZXQgaW5kZXggb2YgYSBnaXZlbiBhcmd1
bWVudC4gRGllIGlmIGl0J3Mgbm90IHRoZXJlLgorZGVmIGdldF9hcmdfaWR4KGFyZ3MsIHdhbnRl
ZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAgICAgICAgICAg
ICAgYXJnID09IHdhbnRlZAorICAgICAgICAgICAgICAgfSwgIk5vIGAje3dhbnRlZH1gIGFyZ3Vt
ZW50IikKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgYC1vYCBhbmQgdmVyaWZ5IHRoYXQgYW4g
YXJndW1lbnQgZm9sbG93cy4KKyMgQm90aCBhcmUgZ3VhcmFudGVlZCB0byBleGlzdCAoZnJvbSBv
dXIgYnVpbGQgc3lzdGVtKS4KK2RlZiBnZXRfb19pZHgoYXJncykKKyAgaSA9IGdldF9hcmdfaWR4
KGFyZ3MsICctbycpCisgIGlmIChpICsgMSkgPj0gYXJncy5zaXplCisgICAgJHN0ZGVyci5wdXRz
KCJObyBhcmd1bWVudCB0byBgLW9gIikKKyAgICBleGl0KDMpCisgIGVuZAorICBpCitlbmQKKwor
IyBSdW4gY29tbWFuZCBhbmQgZGllIGlmIGl0IGZhaWxzLCBwcm9wYWdhdGluZyB0aGUgZXhpdCBj
b2RlLgorZGVmIHJ1bl9jbWQoY21kKQorICBwaWQgPSBQcm9jZXNzLnNwYXduKCpjbWQpCisgIFBy
b2Nlc3Mud2FpdHBpZChwaWQpCisgIHJldCA9ICQ/CisgIGlmIG5vdCByZXQuc3VjY2Vzcz8KKyAg
ICAkc3RkZXJyLnB1dHMoIkVycm9yIHJ1bm5pbmcgY21kOiAje3JldH0iKQorICAgIGV4aXQocmV0
LmV4aXRzdGF0dXMpCisgIGVuZAorZW5kCisKKyMgQ29udmVydAorIyAgICBjeHggLW8gYmxhaC5v
IC1jIGJsYWguY3BwCisjIHRvCisjICAgIGN4eCAtbyBibGFoLnMgLVMgYmxhaC5jcHAKK2RlZiBi
dWlsZF9jeHhfY21kKGFyZ3MpCisgIGNfaWR4ID0gZ2V0X2FyZ19pZHgoYXJncywgJy1jJykKKyAg
b19pZHggPSBnZXRfb19pZHgoYXJncykKKworICBjeHhfYXJncyA9IGFyZ3MuY2xvbmUKKworICBj
eHhfYXJnc1tjX2lkeF0gPSAnLVMnCisgIG9fcGF0aCA9IGN4eF9hcmdzW29faWR4ICsgMV0KKyAg
Y3h4X2FyZ3Nbb19pZHggKyAxXSA9IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpCisg
ICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgY3h4X2FyZ3Nbb19pZHggKyAxXQorICBpZiBjeHhfYXJn
c1tvX2lkeCArIDFdID09IG9fcGF0aAorICAgICRzdGRlcnIucHV0cygiT3V0cHV0IGZpbGUgbmFt
ZSBub3QgYW4gb2JqZWN0IGZpbGU6IGAje29fcGF0aH1gIikKKyAgICBleGl0KDMpCisgIGVuZAor
ICBjeHhfYXJncworZW5kCisKKyMgRG8KKyMgICAgIG12IGJsYWguUyBibGFoLnByZS5TCisjIFRo
ZSByZWFzb24gd2UgZG8gYSByZW5hbWUgaW5zdGVhZCBvZiBkaXJlY3RseSBnZW5lcmF0aW5nIHRo
ZSAucHJlLnMKKyMgZmlsZSB3aGVuIGNvbXBpbGluZyBpcyBzbyB0aGF0IHRoZSBjb3JyZXNwb25k
aW5nIC5kd28gZmlsZSB3aWxsIGhhdmUKKyMgdGhlIGNvcnJlY3QgbmFtZSBlbWJlZGRlZC4KK2Rl
ZiByZW5hbWVfc19maWxlKGFyZ3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsg
MV0KKyAgRmlsZS5yZW5hbWUob19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCksCisgICAg
ICAgICAgICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhfcHJlKSkKK2VuZAorCisj
IEJ1aWxkCisjICAgICBwb3N0cHJvY2Vzc29yIGJsYWgucHJlLlMgYmxhaC5TCitkZWYgYnVpbGRf
cG9zdHByb2Nlc3Nvcl9jbWQoYXJncykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykg
KyAxXQorCisgIHBwX2FyZ3MgPSBbCisgICAgJHBvc3Rwcm9jZXNzb3IsCisgICAgb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpLCAjIGlucHV0CisgICAgb19wYXRoLnN1YigvWy5d
byQvLCAkYXNtX3N1ZmZpeCkgIyBvdXRwdXQKKyAgXQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8
IHBwX2FyZ3NbLTJdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJnc1stMV0KKyAgcHBf
YXJncworZW5kCisKKyMgQnVpbGQKKyMgICAgIGN4eCAtbyBibGFoLm8gLWMgYmxhaC5TCitkZWYg
YnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkKKyAgaV9pZHggPSBnZXRfYXJnX2lkeF9zdWZmaXgo
YXJncywgaV9wYXRoKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisKKyAg
YXNfYXJncyA9IGFyZ3MuY2xvbmUKKyAgaV9wYXRoID0gYXNfYXJnc1tpX2lkeF0KKyAgYXNfYXJn
c1tpX2lkeF0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICBhc19hcmdzCitl
bmQKKworYXJncyA9IEFSR1YudG9fYQoraV9wYXRoID0gZXh0cmFjdF9pbnB1dCEoYXJncykKKwor
YmVnaW4KKyAgcnVuX2NtZChidWlsZF9jeHhfY21kKGFyZ3MpKQorICByZW5hbWVfc19maWxlKGFy
Z3MpCisgIHJ1bl9jbWQoYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykpCisgIHJ1bl9jbWQo
YnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkpCitlbnN1cmUKKyAgJGludGVybWVkaWF0ZV9wYXRo
cy5lYWNoIHsgfHB8CisgICAgaWYgRmlsZS5leGlzdD8ocCkKKyAgICAgIEZpbGUuZGVsZXRlKHAp
CisgICAgZW5kCisgIH0KK2VuZAorCitleGl0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIxODMyZDhkMDFmMjljYWFhMzZhOWQ2YzBiMTQ5NjFkN2E0OGI3ZGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxl
LWNvbmZsaWN0cy5yYgpAQCAtMCwwICsxLDM5OSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisj
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgUmVzb2x2ZSBjb25mbGljdHMgaW4gYC5maWxlYCBkaXJlY3Rp
dmVzIGluIGFzc2VtYmxlciBmaWxlcy4gVGhvc2UKKyMgbWF5IHJlc3VsdCBmcm9tIGlubGluZSBh
c20gc3RhdGVtZW50cyB3aGljaCB0aGVtc2VsdmVzIGhhdmUgYC5maWxlYAorIyBkaXJlY3RpdmVz
LiBBcyB0aGUgaW5saW5lIGFzbSBoYXMgbm8gaWRlYSB3aGF0IHRoZSBuZXh0IGZyZWUgZmlsZQor
IyBudW1iZXIgaXMsIGl0J2xsIGdlbmVyYWxseSBoYXZlIGl0cyBvd24gbnVtYmVyaW5nLiBUbyBn
ZXQgdGhpbmdzIHRvCisjIHdvcmsgd2UgaGF2ZSB0bworIyAxLiByZW1hcCBjb25mbGljdGluZyBm
aWxlIG51bWJlcnMKKyMgMi4gY2hhbmdlIGAubG9jYCBkaXJlY3RpdmVzIHRvIHJlZmVyZW5jZSB0
aGUgYXBwcm9wcmlhdGUgZmlsZSBudW1iZXIuCisjCisjIFRvIGJlIGFibGUgdG8gZG8gdGhhdCwg
d2UgbmVlZCBzb21lIGNvbmNlcHQgb2YgInNjb3BlIiwgaS5lLiB3aGljaAorIyBzZXQgb2YgZmls
ZXMgYSBnaXZlbiBgLmxvY2AgZGlyZWN0aXZlIHJlZmVycyB0by4gV2UgZ2V0IHRoYXQgYnkKKyMg
dHJhY2tpbmcgdGhlICNBUFAvI05PQVBQIGRpcmVjdGl2ZXMgdGhhdCB0aGUgY29tcGlsZXIgZW1p
dHMgd2hlbiBpdAorIyBzd2l0Y2ggdG8vZnJvbSBpbmxpbmUgYXNtLgorIworIyBJbiBlZmZlY3Qs
IHdlIGNvbnZlcnQKKyMgICAgIC5maWxlIDEgImZvbyIKKyMgICAgICNBUFAKKyMgICAgIC5maWxl
IDEgImJhciIKKyMgICAgIC5maWxlIDIgImZvbyIKKyMgICAgIC5sb2MgMSwgWAorIyAgICAgI05P
QVBQCisjICAgICAubG9jIDEsIFkKKyMgdG8KKyMgICAgIC5maWxlIDEgImZvbyIKKyMgICAgICNB
UFAKKyMgICAgIC5maWxlIDIgImJhciIKKyMgICAgIC5maWxlIDEgImZvbyIKKyMgICAgIC5sb2Mg
MiwgWAorIyAgICAgI05PQVBQCisjICAgICAubG9jIDEsIFkKKworcmVxdWlyZSAncGF0aG5hbWUn
CityZXF1aXJlICdzdHJpbmdpbycKK3JlcXVpcmUgJ3N0cnNjYW4nCisKK1BhcnNlUmVzdWx0U3Vj
Y2VzcyA9IFN0cnVjdC5uZXcoOnN0cikKK1BhcnNlUmVzdWx0RXJyb3IgPSBTdHJ1Y3QubmV3KDpl
cnJvcikKKworIyBQYXJzZXMgdGhlIHNpbmdsZSBzdHJpbmcgbGl0ZXJhbCBmb2xsb3dpbmcgYSAu
ZmlsZSBhc3NlbWJsZXIgZGlyZWN0aXZlCitjbGFzcyBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lcgor
ICBkZWYgaW5pdGlhbGl6ZShzKQorICAgIEBzID0gU3RyaW5nU2Nhbm5lci5uZXcocykKKyAgZW5k
CisgIGRlZiBwYXJzZQorICAgIEBzLnNraXAoL1xzKi8pCisKKyAgICAjIFdlIHJlcXVpcmUgYXQg
bGVhc3Qgb25lIHN0cmluZyBsaXRlcmFsCisgICAgcmV0ID0gcGFyc2Vfc3RyaW5nX2xpdGVyYWwK
KyAgICBpZiByZXQucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgcmV0dXJuIHJldAorICAgIGVu
ZAorCisgICAgQHMuc2tpcCgvXHMqLykKKyAgICBpZiBub3QgQHMuZW9zPworICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0RXJyb3IubmV3KCJFeHBlY3RlZCBlbmQgb2YgbGluZSBhZnRlciAje3JldC5z
dHJ9IikKKyAgICBlbmQKKyAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhyZXQuc3Ry
KQorICBlbmQKKyAgZGVmIHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgQHMuc2NhbigvIi8p
Lm5pbD8KKyAgICAgIGVyciA9ICJFeHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCBhdCBgI3tAcy5zdHJp
bmd9YCAocG9zICN7QHMucG9zfSkiCisgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXco
ZXJyKQorICAgIGVuZAorICAgIHBhcnNlX3VudGlsX2VuZF9vZl9zdHJpbmdfbGl0ZXJhbAorICBl
bmQKKyAgZGVmIHBhcnNlX3VudGlsX2VuZF9vZl9zdHJpbmdfbGl0ZXJhbAorICAgIHN0YXJ0X3Bv
cyA9IEBzLnBvcworICAgIHdoaWxlIHRydWUKKyAgICAgICMgU2VhcmNoIGZvciBvdXIgc3BlY2lh
bCBjaGFyYWN0ZXJzCisgICAgICBAcy5za2lwKC9bXiJcXF0rLykKKyAgICAgIGlmIEBzLnNjYW4o
L1xcLykKKyAgICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAgICAgICAgICMgV2hlbiB3ZSBzZWUg
J1xcJywgY29uc3VtZSBib3RoIGNoYXJhY3RlcnMgc28gdGhhdCB0aGUKKyAgICAgICAgICAjIHNl
Y29uZCAnXCcgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyBhbiBlc2NhcGUgY2hhci4KKyAgICAgICAg
ICBuZXh0CisgICAgICAgIGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAgICMgRm9yICdcIics
IGNvbnN1bWUgYm90aCBjaGFyYWN0ZXJzIHNvIHRoYXQgdGhlICciJyB3aWxsIG5vdAorICAgICAg
ICAgICMgdGVybWluYXRlIHRoZSBzdHJpbmcuCisgICAgICAgICAgbmV4dAorICAgICAgICBlbmQK
KyAgICAgICAgbmV4dAorICAgICAgZWxzaWYgQHMuc2NhbigvIi8pCisgICAgICAgICMgJyInIHdp
dGhvdXQgYSBwcmVjZWVkaW5nICdcJzsgdGVybWluYXRlIHRoZSBsaXRlcmFsLgorICAgICAgICAj
IFdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgJyInLCBzbyB0aGUgbGl0ZXJhbCBlbmRzIGF0IC0yCisg
ICAgICAgICMgY2hhcmFjdGVycy4KKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5u
ZXcoQHMuc3RyaW5nW3N0YXJ0X3Bvcy4uKEBzLnBvcyAtIDIpXSkKKyAgICAgIGVsc2lmIEBzLmVv
cz8KKyAgICAgICAgZXJyID0gIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCAoc3RhcnRpbmcg
YXQgcG9zICN7c3RhcnRfcG9zfSBpbiAje0BzLnN0cmluZ30iCisgICAgICAgIHJldHVybiBQYXJz
ZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgICBlbmQKKyAgICAgIHJhaXNlICJJbnRlcm5hbCBl
cnJvciAoI3tAcy5pbnNwZWN0fSkiCisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiB0ZXN0KG91
dGYsIHN0ciwgcmVzKQorICBwciA9IEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyLm5ldyhzdHIpLnBh
cnNlCisgIGlmIHJlcy5pc19hPyhBcnJheSkKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3Ip
CisgICAgICBvdXRmLnB1dHMoIlBhcnNlIHJlc3VsdCBpcyBgI3twci5lcnJvcn1gIGJ1dCBleHBl
Y3RlZCAje3Jlc30iKQorICAgICAgcmV0dXJuIGZhbHNlCisgICAgZW5kCisgICAgaWYgcHIuc3Ry
ICE9IHJlc1swXQorICAgICAgb3V0Zi5wdXRzKCJQYXJzZWQgcGF0aCBgI3twci5zdHJ9YCBidXQg
ZXhwZWN0ZWQgYCN7cmVzWzBdfWAiKQorICAgICAgcmV0dXJuIGZhbHNlCisgICAgZW5kCisgICAg
cmV0dXJuIHRydWUKKyAgZWxzaWYgcmVzLmlzX2E/KFN0cmluZykKKyAgICBpZiBwci5yZXNwb25k
X3RvPyg6ZXJyb3IpCisgICAgICBpZiBub3QgcHIuZXJyb3IuZG93bmNhc2UuaW5jbHVkZT8ocmVz
LmRvd25jYXNlKQorICAgICAgICBlcnIgPSAiRXJyb3IgbWVzc2FnZSBgI3twci5lcnJvcn1gIGRv
ZXMgbm90IGluY2x1ZGUgZXhwZWN0ZWQgc3Vic3RyaW5nIGAje3Jlc31gIgorICAgICAgICBvdXRm
LnB1dHMoZXJyKQorICAgICAgICByZXR1cm4gZmFsc2UKKyAgICAgIGVuZAorICAgICAgcmV0dXJu
IHRydWUKKyAgICBlbmQKKyAgICBvdXRmLnB1dHMoIkV4cGVjdGVkIGVycm9yICgje3Jlc30pIGJ1
dCBnb3Qgc3VjY2Vzc2Z1bCBwYXJzZSAje3ByLnN0cn0iKQorICAgIHJldHVybiBmYWxzZQorICBl
bHNlCisgICAgcmFpc2UgIkludGVybmFsIGVycm9yICN7cmVzLmNsYXNzfSIKKyAgZW5kCitlbmQK
KworZGVmIHNlbGZ0ZXN0CisgIG5yX3N1Y2NlZWRlZCA9IDAKKyAgdGVzdHMgPSBbCisgICAgIyBz
aW1wbGUgc3RyaW5nCisgICAgWyciZm9vL2JhciInLCBbImZvby9iYXIiXV0sCisKKyAgICBbJyJm
b28nLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAgICBbJyJmb29cIicsICJV
bnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1wiCisgICAgWyJcImZv
b1xcXCIiLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAgICAjICJmb29cXCIK
KyAgICBbIlwiZm9vXFxcXFwiIiwgWyJmb29ceDVjXHg1YyJdXSwKKworICAgICMgQ2FuIGVzY2Fw
ZSAnIicKKyAgICBbJyJmb29cImJhciInLCBbJ2Zvb1wiYmFyJ11dLAorCisgICAgIyBDYW4gcGFy
c2UgcmVsYXRpdmUKKyAgICBbJyJmb28vYmFyIicsIFsnZm9vL2JhciddXSwKKworICAgICMgQ2Fu
IHBhcnNlIGFic29sdXRlCisgICAgWyciL2JhciInLCBbJy9iYXInXV0sCisKKyAgICAjIENhbiBw
YXJzZSBhYnNvbHV0ZSB3aXRoIHR3byBjb21wb25lbnRzCisgICAgWyciL2Jhci9iYXoiJywgWycv
YmFyL2JheiddXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbgorICAgIFsnImZvbyIg
YmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAgICAjIENhbiBkZXRlY3Qgc3RyYXkg
dG9rZW4gd2l0aG91dCB3aGl0ZXNwYWNlCisgICAgWyciZm9vImJhcicsICJFeHBlY3RlZCBlbmQg
b2YgbGluZSJdLAorCisgICAgIyBXaWxsIG5vdCBhY2NlcHQgY2xhbmctc3R5bGUgLmZpbGUgZGly
ZWN0aXZlcworICAgIFsnIndvcmtpbmdfZGlyZWN0b3J5IiAicGF0aCInLCAiRXhwZWN0ZWQgZW5k
IG9mIGxpbmUiXQorICBdCisgIG91dGYgPSBTdHJpbmdJTy5uZXcoIiIpCisgIHRlc3RzLmVhY2gg
eyB8c3RyLCByZXN8CisgICAgaWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgICAgIG5yX3N1Y2Nl
ZWRlZCArPSAxCisgICAgZW5kCisgIH0KKyAgaWYgbnJfc3VjY2VlZGVkICE9IHRlc3RzLnNpemUK
KyAgICAkc3RkZXJyLnB1dHMob3V0Zi5zdHJpbmcpCisgICAgJHN0ZGVyci5wdXRzKCJTb21lIHNl
bGYgdGVzdHMgZmFpbGVkICN7bnJfc3VjY2VlZGVkfS8je3Rlc3RzLnNpemV9IikKKyAgICBleGl0
KDMpCisgIGVuZAorZW5kCisKKyMgS2VlcCB0cmFjayBvZiB3aGljaCBmaWxlbm8gaXMgYXNzaWdu
ZWQgdG8gd2hpY2ggZmlsZSBwYXRoLiBXZSBjYWxsCisjIHRoZSBmaWxlbm8gYSAnc2xvdCcuCitj
bGFzcyBGaWxlU2xvdFRyYWNrZXIKKyAgQEBuZXh0X2ZyZWUgPSAxICAgIyBOZXh0IGZyZWUgZ2xv
YmFsIHNsb3QKKyAgQEBwYXRocyA9IHt9ICMgTWFwcyBwYXRoIC0+IGdsb2JhbCBzbG90CisgIGRl
ZiBpbml0aWFsaXplKHBhcmVudCkKKyAgICBAcGFyZW50ID0gcGFyZW50CisgICAgIyBUaGlzIG1h
cHMgZnJvbSBvdXIgb3duIGxvY2FsIHNsb3RzIChpLmUuIHdpdGhpbiBhbiBBUFAgc2VjdGlvbikK
KyAgICAjIHRvIGEgZ2xvYmFsIHNsb3QuCisgICAgQHNsb3RfbWFwID0ge30KKyAgZW5kCisgICMg
V2UgbWFrZSBzdXJlIHRoYXQgLmZpbGUgZGlyZWN0aXZlcyB0aGF0IHNwZWNpZnkgdGhlIHNhbWUg
cGF0aCBhcmUKKyAgIyBkZWR1cCdkLCBpLmUuIGlmIHdlIHNlZQorICAjICAgICAuZmlsZSBOICIv
cGF0aC90by9pbmNsdWRlLmgiCisgICMgICAgIC4uLgorICAjICAgICAuZmlsZSBNICIvcGF0aC90
by9pbmNsdWRlLmgiCisgICMgdGhlbiB0aGUgImxvY2FsIiBOLCBNIHNsb3RzIHdpbGwgYmUgbWFw
cGVkIHRvIHRoZSBzYW1lICJnbG9iYWwiIHNsb3QuCisgIGRlZiByZWdpc3Rlcl9wYXRoKHBhdGgs
IHNsb3QpCisgICAgY3Vycl9zbG90ID0gQEBwYXRoc1twYXRoXQorICAgIGlmIGN1cnJfc2xvdC5u
aWw/CisgICAgICAjIFdlIGhhdmVuJ3Qgc2VlbiB0aGlzIGZpbGUgYmVmb3JlCisgICAgICBpZiBz
bG90IDw9IEBAbmV4dF9mcmVlCisgICAgICAgICMgRGVzaXJlZCBmaWxlIHNsb3QgZWl0aGVyIGNs
YXNoZXMgd2l0aCBhbiBleGlzdGluZyBvbmUsIG9yIGlzCisgICAgICAgICMgdGhlIG5leHQgb25l
IHRvIGJlIGFsbG9jYXRlZC4gSW4gZWl0aGVyIGNhc2UsIGFzc2lnbiB0aGUKKyAgICAgICAgIyBu
ZXh0IGZyZWUgc2xvdC4KKyAgICAgICAgYXNzaWduX25leHRfc2xvdChwYXRoKQorICAgICAgZWxz
ZQorICAgICAgICAjIERvbid0IGFsbG93IHNsb3QgZ2Fwcy4gVGVjaG5pY2FsbHkgd2UgY291bGQg
aGFuZGxlIHRoZW0sIGJ1dAorICAgICAgICAjIHRoZXkgc2hvdWxkIG5ldmVyIGhhcHBlbjsgYmFp
bCBub3cgcmF0aGVyIHRoYW4gcGFwZXJpbmcgb3ZlcgorICAgICAgICAjIGFuIGVhcmxpZXIgZXJy
b3IuCisgICAgICAgICRzdGRlcnIucHV0cygiRmlsZSB3YW50cyBzbG90ICN7c2xvdH0gYnV0IG9u
bHkgc2VlbiAje0BAbmV4dF9mcmVlfSBzbyBmYXIiKQorICAgICAgICBleGl0KDIpCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICAjIFdlJ3ZlIGFscmVhZHkgYXNzaWduZWQgYSBzbG90IGZvciB0
aGlzIGZpbGUuCisgICAgZW5kCisgICAgQHNsb3RfbWFwW3Nsb3RdID0gQEBwYXRoc1twYXRoXQor
ICAgIGlmIEBzbG90X21hcFtzbG90XS5uaWw/CisgICAgICByYWlzZSAiRGlkbid0IG1hcCBsb2Nh
bCBzbG90ICN7c2xvdH0iCisgICAgZW5kCisgIGVuZAorICAjIFJldHVybiBnbG9iYWwgc2xvdCBm
b3IgcGF0aAorICBkZWYgc2xvdF9mb3JfcGF0aChwYXRoKQorICAgIHJldHVybiBAQHBhdGhzW3Bh
dGhdCisgIGVuZAorICAjIFJldHVybiBnbG9iYWwgc2xvdCB0aGF0IHdpbGwgcmVwbGFjZSB0aGUg
bG9jYWwgc2xvdAorICBkZWYgcmVtYXBfc2xvdChzbG90KQorICAgIHJldCA9IG5pbAorICAgIGlm
IEBzbG90X21hcC5zaXplID4gMAorICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVu
dCBoYXMgZGVmaW5lZCBhIC5maWxlLCBvbmx5IGxvb2sKKyAgICAgICMgaW4gdGhlIGN1cnJlbnQg
RmlsZVNsb3RUcmFja2VyLiBUaGlzIGlzIHRoZSBjYXNlIGZvciBhCisgICAgICAjIHRvcC1sZXZl
bCBpbmxpbmUgYXNtIHN0YXRlbWVudC4KKyAgICAgIHJldCA9IEBzbG90X21hcFtzbG90XQorICAg
IGVsc2lmIG5vdCBAcGFyZW50Lm5pbD8KKyAgICAgICMgSWYgdGhlIGN1cnJlbnQgTk9fQVBQIHNl
Z21lbnQgaGFzIG5vdCBkZWZpbmVkIGEgLmZpbGUsIGNsZWFybHkKKyAgICAgICMgYWxsIC5sb2Mg
ZGlyZWN0aXZlcyByZWZlciB0byBmaWxlcyBkZWZpbmVkIGluIHRoZSBBUFAKKyAgICAgICMgcGFy
dC4gVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLXRvcC1sZXZlbCBpbmxpbmUgYXNtCisgICAgICAj
IHN0YXRlbWVudHMuCisgICAgICByZXQgPSBAcGFyZW50LnJlbWFwX3Nsb3Qoc2xvdCkKKyAgICBl
bmQKKyAgICBpZiByZXQubmlsPworICAgICAgcmFpc2UgIk5vIGdsb2JhbCBzbG90IGZvciAje3Ns
b3R9IgorICAgIGVuZAorICAgIHJldAorICBlbmQKKyAgcHJpdmF0ZQorICBkZWYgYXNzaWduX25l
eHRfc2xvdChwYXRoKQorICAgIEBAcGF0aHNbcGF0aF0gPSBAQG5leHRfZnJlZQorICAgIEBAbmV4
dF9mcmVlICs9IDEKKyAgZW5kCitlbmQKKworIyBSZXR1cm4gc2VxdWVudGlhbCBsaW5lcywgd2hp
bGUga2VlcGluZyB0cmFjayBvZiB3aGV0aGVyIHdlJ3JlIGluIGFuCisjICNBUFAgb3IgI05PQVBQ
IHNlY3Rpb24uCitjbGFzcyBBc21SZWFkZXIKKyAgYXR0cl9yZWFkZXIgOmluX2FwcAorICBhdHRy
X2FjY2Vzc29yIDphcHBfdG9fbm9hcHAsIDpub2FwcF90b19hcHAKKyAgZGVmIGluaXRpYWxpemUo
ZikKKyAgICBAZiA9IGYKKyAgICBAZi5yZXdpbmQKKyAgICBAbGluZW5yID0gMAorICAgIEBpbl9h
cHAgPSBmYWxzZQorICAgIEBsYXN0X3N3aXRjaCA9ICJzdGFydCBvZiBmaWxlIiAjIEZvciBlcnJv
ciBtZXNzYWdlcworICBlbmQKKyAgZGVmIG5leHRfbGluZQorICAgIHdoaWxlIHRydWUKKyAgICAg
IGwgPSBAZi5nZXRzCisgICAgICBpZiBsLm5pbD8KKyAgICAgICAgcmV0dXJuIGwKKyAgICAgIGVu
ZAorICAgICAgQGxpbmVuciArPSAxCisgICAgICBpZiAvXiNccypBUFBccyovLm1hdGNoKGwpCisg
ICAgICAgIGlmIEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAiI0FQUCBvbiBsaW5lICN7QGxpbmVu
cn0gYnV0IGFscmVhZHkgaW4gI0FQUCAoI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5kCisg
ICAgICAgIEBpbl9hcHAgPSB0cnVlCisgICAgICAgIEBsYXN0X3N3aXRjaCA9IEBsaW5lbnIKKyAg
ICAgICAgaWYgQG5vYXBwX3RvX2FwcAorICAgICAgICAgIEBub2FwcF90b19hcHAuY2FsbCgpCisg
ICAgICAgIGVuZAorICAgICAgZW5kCisgICAgICBpZiAvXiNccypOT19BUFBccyovLm1hdGNoKGwp
CisgICAgICAgIGlmIG5vdCBAaW5fYXBwCisgICAgICAgICAgcmFpc2UgIiNOT0FQUCBvbiBsaW5l
ICN7QGxpbmVucn0gYnV0IHdhcyBub3QgaW4gI0FQUCAobGFzdCBzd2ljaCBhdCAje0BsYXN0X3N3
aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2FwcCA9IGZhbHNlCisgICAgICAgIEBs
YXN0X3N3aXRjaCA9IEBsaW5lbnIKKyAgICAgICAgaWYgQGFwcF90b19ub2FwcAorICAgICAgICAg
IEBhcHBfdG9fbm9hcHAuY2FsbCgpCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgICByZXR1
cm4gbAorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBGaWxlQ29uZmxpY3RSZXNvbHZlcgor
ICBAQGZpbGVfcmUgPSAvXlxzKlsuXWZpbGVccysoPzxzbG90PlxkKylccysoPzxyZXN0Pi4qKSQv
CisgIEBAbG9jX3JlID0gL14oPzx3aGl0ZTE+XHMqKVsuXWxvYyg/PHdoaXRlMj5ccyspKD88c2xv
dD5cZCspKD88cmVzdD5ccytcZCsuKikkLworICBkZWYgaW5pdGlhbGl6ZShpbmYsIG91dGYpCisg
ICAgQG91dGYgPSBvdXRmCisgICAgQHRyYWNrZXJzID0gW0ZpbGVTbG90VHJhY2tlci5uZXcobmls
KV0KKyAgICBAYXNtX3JlYWRlciA9IEFzbVJlYWRlci5uZXcoaW5mKQorICAgICMgV2hlbiB3ZSBl
bnRlciBhbiAjQVBQIHNlY3Rpb24gKGkuZS4gYXNtIGVtaXR0ZWQgZnJvbSBhbiBleHBhbmRlZAor
ICAgICMgaW5saW5lIGFzbSBzdGF0ZW1lbnQpLCBjcmVhdGUgYSBuZXcgZmlsZSB0cmFja2VyLCBp
biBlZmZlY3QKKyAgICAjIHByb2Nlc3NpbmcgdGhlIC5maWxlIGFuZCAubG9jIGRpcmVjdGl2ZXMg
aW4gYSBuZXcgIm5hbWVzcGFjZSIKKyAgICAjIChhcyBmYXIgYXMgdGhlIGZpbGUgbnVtYmVycyBh
cmUgY29uY2VybmVkKS4gVGhpcyBpcyBhbiBhcnJheSwKKyAgICAjIGJ1dCBpbiBwcmFjdGljZSB0
aGUgc2l6ZSB3aWxsIGVpdGhlciBiZSAxIChOT0FQUCkgb3IgMiAoQVBQKS4KKyAgICBAYXNtX3Jl
YWRlci5hcHBfdG9fbm9hcHAgPSBQcm9jLm5ldyB7IHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBAdHJhY2tlcnMucG9wCisgICAgfQorICAgIEBhc21fcmVhZGVy
Lm5vYXBwX3RvX2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEB0cmFja2Vycy5wdXNoKEZpbGVTbG90VHJhY2tlci5uZXcoQHRyYWNr
ZXJzWy0xXSkpCisgICAgfQorICBlbmQKKyAgZGVmIHJ1bgorICAgIHdoaWxlIHRydWUKKyAgICAg
IGwgPSBAYXNtX3JlYWRlci5uZXh0X2xpbmUKKyAgICAgIGJyZWFrIHVubGVzcyBsCisKKyAgICAg
IG1kID0gQEBmaWxlX3JlLm1hdGNoKGwpCisgICAgICBpZiBtZAorICAgICAgICBmaWxlX2RpcmVj
dGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAgICBtZCA9IEBAbG9jX3JlLm1h
dGNoKGwpCisgICAgICBpZiBtZAorICAgICAgICBsb2NfZGlyZWN0aXZlKG1kKQorICAgICAgICBu
ZXh0CisgICAgICBlbmQKKyAgICAgIEBvdXRmLndyaXRlKGwpCisgICAgICBuZXh0CisgICAgZW5k
CisgIGVuZAorICBkZWYgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNrZXJz
Lmxhc3QKKyAgICBzbG90ID0gdHJhY2tlci5yZW1hcF9zbG90KG1kWzpzbG90XS50b19pKQorICAg
IEBvdXRmLnB1dHMoIiN7bWRbOndoaXRlMV19LmxvYyN7bWRbOndoaXRlMl19I3tzbG90fSN7bWRb
OnJlc3RdfSIpCisgIGVuZAorICBkZWYgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgdHJhY2tlciA9
IEB0cmFja2Vycy5sYXN0CisKKyAgICBwciA9IEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyLm5ldyht
ZFs6cmVzdF0pLnBhcnNlCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgJHN0
ZGVyci5wdXRzKCJFcnJvciBwYXJzaW5nIHBhdGggYXJndW1lbnQgdG8gLmZpbGUgZGlyZWN0aXZl
OiAje3ByLmVycm9yfSIpCisgICAgICBleGl0KDIpCisgICAgZW5kCisKKyAgICBwYXRoID0gcHIu
c3RyCisgICAgdHJhY2tlci5yZWdpc3Rlcl9wYXRoKHBhdGgsIG1kWzpzbG90XS50b19pKQorCisg
ICAgc2xvdCA9IHRyYWNrZXIuc2xvdF9mb3JfcGF0aChwYXRoKQorICAgIEBvdXRmLnB1dHMoIlx0
LmZpbGVcdCN7c2xvdH0gI3ttZFs6cmVzdF19IikKKyAgZW5kCitlbmQKKworIyBGaXJzdCwgbWFr
ZSBzdXJlIG91ciB0ZXN0cyBzdGlsbCBwYXNzLiBUaGlzIG9ubHkgdGFrZXMgYSBmcmFjdGlvbiBv
ZgorIyBvdXIgcnVudGltZSBhbmQgZW5zdXJlcyB0aGUgdGVzdHMgd2lsbCBnZXQgcnVuIGJ5IGFu
eW9uZSB0cnlpbmcgb3V0CisjIGNoYW5nZXMgdG8gdGhpcyBmaWxlLgorc2VsZnRlc3QKKworaWYg
QVJHVi5zaXplICE9IDIKKyAgJHN0ZGVyci5wdXRzKCJVc2FnZTogI3skMH0gaW5wdXQgb3V0cHV0
IikKKyAgZXhpdCgyKQorZW5kCisKK2lucGF0aCwgb3V0cGF0aCA9IEFSR1YuY29sbGVjdCB7IHxu
fCBQYXRobmFtZS5uZXcobikgfQorCitpZiBub3QgaW5wYXRoLmZpbGU/CisgICRzdGRlcnIucHV0
cygiTm90IGEgcmVndWxhciBmaWxlOiBgI3tpbnBhdGh9YCIpCisgIGV4aXQoMikKK2VuZAorCitp
ZiBpbnBhdGguZXh0bmFtZS51cGNhc2UgIT0gIi5TIgorICAkc3RkZXJyLnB1dHMoIndhcm5pbmc6
IGZpbGUgYCN7aW5wYXRofWAgZG9lc24ndCBoYXZlIGEgYC5zYCBvciBgLlNgIGV4dGVuc2lvbi4g
R29pbmcgb24gYW55d2F5Li4uIikKK2VuZAorCitGaWxlLm9wZW4oaW5wYXRoLCAiciIpIHsgfGlu
ZnwKKyAgRmlsZS5vcGVuKG91dHBhdGgsICJ3IikgeyB8b3V0ZnwKKyAgICBGaWxlQ29uZmxpY3RS
ZXNvbHZlci5uZXcoaW5mLCBvdXRmKS5ydW4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IGM3YjYzOGJjNDAxMWM5Y2Q0NGUxNjI5OTdlMDkzYzhlMDRlNDIwYTIuLmU2ZGVi
MDE0MjUyMDQwOGY4Yzc4MTAwYWE2ODY1ZGE1ZGY4N2QzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTY3NSw4ICs2NzUsNiBAQCBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwCiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwCiBsbGludC9MTEludFNsb3dQYXRocy5jcHAKIGxsaW50
L0xMSW50VGh1bmtzLmNwcAotLy8gRklYTUU6IFdlIGNhbid0IGJ1bmRsZSB0aGlzIGZpbGUgZHVl
IHRvIGEgY2xhbmcgYnVnLgotbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgQG5vLXVuaWZ5
CiAKIHBhcnNlci9MZXhlci5jcHAKIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAppbmRl
eCBmOGFmYzdhMDcwZDczNTM4MTNhOWZiMzNlMmZmMjM1MmM2OWViYTc2Li5kNTEwMzEzMTlhMTg3
MTIzNTM4YjY3YjZkM2QxNGFhZmZmMDQ3Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCkBAIC01MzcsOCArNTM3LDIzIEBA
IEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGNvZGVJRCwgdm9pZCogZXhl
Y3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0RFQlVH
X0xBQkVMKGxhYmVsKQogI2VuZGlmCiAKKyNpZiBDT01QSUxFUihHQ0MpCisvLyBUaGlzIHdvcmtz
IGFyb3VuZCBhIGJ1ZyBpbiBHREIgd2hlcmUsIGlmIHRoZSBjb21waWxhdGlvbiB1bml0CisvLyBk
b2Vzbid0IGhhdmUgYW55IGFkZHJlc3MgcmFuZ2UgaW5mb3JtYXRpb24sIGl0cyBsaW5lIHRhYmxl
IHdvbid0CisvLyBldmVuIGJlIGNvbnN1bHRlZC4gRW1pdCB7YmVmb3JlLGFmdGVyfV9sbGludF9h
c20gc28gdGhhdCB0aGUgY29kZQorLy8gZW1pdHRlZCBpbiB0aGUgdG9wIGxldmVsIGlubGluZSBh
c20gc3RhdGVtZW50IGlzIHdpdGhpbiBmdW5jdGlvbnMKKy8vIHZpc2libGUgdG8gdGhlIGNvbXBp
bGVyLiBUaGlzIHdheSwgR0RCIGNhbiByZXNvbHZlIGEgUEMgaW4gdGhlCisvLyBsbGludCBhc20g
Y29kZSB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQgYW5kIHRoZSBzdWNjZXNzZnVsbHkgbG9vawor
Ly8gdXAgdGhlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uLgorTUFSS0VSX1NZTUJPTChiZWZvcmVf
bGxpbnRfYXNtKQorI2VuZGlmIC8qIFdURl9DT01QSUxFUl9HQ0MgKi8KKwogLy8gVGhpcyBpcyBh
IGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUg
YXNzZW1ibHkgY29kZQogLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBM
b3dMZXZlbEludGVycHJldGVyLmFzbS4KICNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCiAKKyNp
ZiBDT01QSUxFUihHQ0MpCitNQVJLRVJfU1lNQk9MKGFmdGVyX2xsaW50X2FzbSkKKyNlbmRpZiAv
KiBXVEZfQ09NUElMRVJfR0NDICovCisKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCmluZGV4IDQ5NTQzZmNkMWIyZmEx
NmU2NTg4YjY4MzI4OWFjMDQ3NzI3YjdmMGUuLjJmMzEyM2U1ZmEwNDM1M2RhMGEzNzJmNDU5ZWQz
NzhhZGY4MzI5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2NvbmZpZy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcu
cmIKQEAgLTg5LDYgKzg5LDEwIEBAIGRlZiBzaG91bGRFbmFibGVEZWJ1Z0Fubm90YXRpb25zKCkK
ICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIGVuZAogICAgICAgICBlbmQKKyAgICBl
bHNpZiBFTlZbIkNNQUtFX0NYWF9DT01QSUxFUl9JRCJdID09ICdHTlUnIGFuZAorICAgICAgICAg
RU5WWyJHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQIl0gPT0gJ09OJworICAgICAgIyBBbGwgR0ND
IHZlcnNpb25zIHRoYXQgY2FuIGJ1aWxkIEpTQyBzdXBwb3J0IGRlYnVnIGFubm90YXRpb25zCisg
ICAgICByZXR1cm4gdHJ1ZQogICAgIGVuZAogCiAgICAgZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IDQz
NzRjYjNhZjIzYzg5YmI1MzQ5NDY5ZGM4OGVmYzY0NDYxNGE0N2MuLmRmY2M0NTQxYTQ5OWE5NmVm
ZDVjNjFjYTE1YjZhMTNhYWI3NzA2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBp
bGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAtMzgyLDYgKzM4MiwxNSBA
QAogI2RlZmluZSBXQVJOX1VOVVNFRF9SRVRVUk4KICNlbmRpZgogCisvKiBOT19SRU9SREVSICov
CisjaWYgIWRlZmluZWQoTk9fUkVPUkRFUikgJiYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBOT19S
RU9SREVSIF9fYXR0cmlidXRlX18oKF9fbm9fcmVvcmRlcl9fKSkKKyNlbmRpZgorCisjaWYgIWRl
ZmluZWQoTUFSS0VSX1NZTUJPTCkgJiYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBNQVJLRVJfU1lN
Qk9MKG5hbWUpIHZvaWQgTk9fUkVPUkRFUiBuYW1lKHZvaWQpIHsgX19hc21fXygiIik7IH0KKyNl
bmRpZgorCiAjaWYgIWRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgQ09NUElMRVIoTVNWQykKICNk
ZWZpbmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21h
a2UKaW5kZXggYTU3NGVmOGMyMjJiYTA3MjBkMjJhMWZkNWQ1YzgxNTNhNGRjZjcyMS4uZWExMzYy
NDgzZTc4MGU0MTVjYzg1NDhjYzZmOTE0YjJhODhjZDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNDb21tb24uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24u
Y21ha2UKQEAgLTExMiw2ICsxMTIsMTUgQEAgaWYgKERFQlVHX0ZJU1NJT04pCiAgICAgc2V0KENN
QUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30gLVdsLC0t
Z2RiLWluZGV4IikKIGVuZGlmICgpCiAKK3NldChHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RF
RkFVTFQgT0ZGKQoraWYgKENNQUtFX0JVSUxEX1RZUEUgU1RSRVFVQUwgIkRlYnVnIiBPUiBDTUFL
RV9CVUlMRF9UWVBFIFNUUkVRVUFMICJSZWxXaXRoRGViSW5mbyIpCisgICAgc2V0KEdDQ19PRkZM
SU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBPTikKK2VuZGlmICgpCisKK29wdGlvbihHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVnIGxpbmUgaW5mb3JtYXRpb24gZm9y
IG9mZmxpbmVhc20tZ2VuZXJhdGVkIGNvZGUiCisgICR7R0NDX09GRkxJTkVBU01fU09VUkNFX01B
UF9ERUZBVUxUfSkKKwogIyBFbmFibGUgdGhlIHVzYWdlIG9mIE9wZW5NUC4KICMgIC0gQXQgdGhp
cyBtb21lbnQsIE9wZW5NUCBpcyBvbmx5IHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50
YXRpb24KICMgICAgdG8gbmF0aXZlIHRocmVhZHMgZm9yIHRoZSBwYXJhbGxlbGl6YXRpb24gb2Yg
dGhlIFNWRyBmaWx0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395166</attachid>
            <date>2020-04-01 07:52:57 -0700</date>
            <delta_ts>2020-04-01 09:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200401145256.patch</filename>
            <type>text/plain</type>
            <size>28402</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi41MDA5MmI1YjE4ZDUyMzMw
YWFmOWZiNjRlMTcyYTg4MjExODI4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZl
IHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNzkxYjdmZTkz
OWU3MjVhYzE4MjZjMTc0YWRhZjU5OGEzOTY0YzI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBP
VVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0
fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9h
c20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtP
RkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNt
LmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
PFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
ICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElS
RUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJ
TSkKQEAgLTM0OCwxMCArMzQ4LDE3IEBAIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkK
ICAgICAgICAgQ09NTUFORCAke01BU01fRVhFQ1VUQUJMRX0gJHtMTElOVF9NQVNNX0ZMQUdTfSAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xldmVsSW50ZXJwcmV0ZXJX
aW4ub2JqICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRl
cnByZXRlcldpbi5hc20KICAgICAgICAgVkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xv
d0xldmVsSW50ZXJwcmV0ZXJXaW4ub2JqKQorICAgIGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJw
cmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKQogZWxzZSAoKQot
ICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKLSAgICAgICAgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9MTEludEFzc2VtYmx5LmgKLSAgICApCisgICAg
IyBBcyB0aGVyZSdzIHBvb3IgdG9vbGNoYWluIHN1cHBvcnQgZm9yIHVzaW5nIGAuZmlsZWAgZGly
ZWN0aXZlcyBpbgorICAgICMgaW5saW5lIGFzbSAoaS5lLiB0aGVyZSdzIG5vIHdheSB0byBhdm9p
ZCBjbGFzaGVzIHdpdGggdGhlIGAuZmlsZWAKKyAgICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVkIGJ5
IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAgICMgaW50cm9kdWNl
IGEgcG9zdHByb2Nlc3NpbmcgcGFzcyBmb3IgdGhlIGFzbSB0aGF0IGdldHMgYXNzZW1ibGVkIGlu
dG8KKyAgICAjIGFuIG9iamVjdCBmaWxlLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBmb3IgTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAKKyAgICAjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVzIHRv
IGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyAgICAjIHNpbmdsZSBzb3VyY2Ug
ZmlsZSwgc28gd2UgbmVlZCB0byBjcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQgZm9yIGl0LgorICAg
IGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCisgICAgICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vJHtMTEludE91dHB1dH0pCiBlbmRpZiAoKQogCiAjIFdlYkFzc2VtYmx5IGdlbmVyYXRv
cgpAQCAtMTM2Miw2ICsxMzY5LDI5IEBAIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExMSW50
T2Zmc2V0c0V4dHJhY3RvciBTWVNURU0gUFJJVkFURSAke0phdmFTY3JpcHRDb3JlCiAKIGFkZF9z
dWJkaXJlY3Rvcnkoc2hlbGwpCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVs
SW50ZXJwcmV0ZXJMaWIKKyAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0
Q29yZSxJTkNMVURFX0RJUkVDVE9SSUVTPiIpCisKK2lmIChDTUFLRV9DT01QSUxFUl9JU19HTlVD
WFggQU5EIEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVApCisgICAgbWVzc2FnZShTVEFUVVMgIkVu
YWJsaW5nIGFzbSBwb3N0cHJvY2Vzc2luZyIpCisKKyAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUiAiJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElSfS9wb3N0cHJv
Y2Vzcy1hc20iKQorICAgIGdldF90YXJnZXRfcHJvcGVydHkoUFJPUF9SVUxFX0xBVU5DSF9DT01Q
SUxFIExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICBpZiAo
UFJPUF9SVUxFX0xBVU5DSF9DT01QSUxFKQorICAgICAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUiAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSAke1BST1BfUlVMRV9M
QVVOQ0hfQ09NUElMRX0iKQorICAgIGVuZGlmICgpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBM
b3dMZXZlbEludGVycHJldGVyTGliCisgICAgICAgIFBST1BFUlRZIFJVTEVfTEFVTkNIX0NPTVBJ
TEUgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0iKQorCisgICAgIyBQYXNzIGluIHRo
ZSBmaWxlbmFtZSBhcyBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIHNvIHRoYXQKKyAg
ICAjIHRoZSB3cmFwcGVyIGNhbiBhY2N1cmF0ZWx5IGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZS4K
KyAgICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoImxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwIgorICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMg
IlBPU1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCitlbmRpZiAo
KQorCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMgTG93TGV2ZWxJbnRlcnBy
ZXRlckxpYikKKwogV0VCS0lUX0NPTVBVVEVfU09VUkNFUyhKYXZhU2NyaXB0Q29yZSkKIFdFQktJ
VF9XUkFQX1NPVVJDRUxJU1QoJHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTfSkKIFdFQktJVF9GUkFN
RVdPUksoSmF2YVNjcmlwdENvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9wb3N0cHJvY2Vzcy1hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9w
b3N0cHJvY2Vzcy1hc20KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwYTMxMmVlNGE3ODE0OWZjOWU5ZWUxMzQzODFh
YzRmNmNkMDBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Bvc3Rwcm9jZXNzLWFzbQpAQCAtMCwwICsxLDE5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVi
eQorCisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgV3JhcHBlciBmb3IgYSAuY3BwIC0+IC5vIGNvbXBp
bGF0aW9uIGNvbW1hbmQuIEl0CisjIDEuIGNvbnZlcnRzIHRoZSBjb21tYW5kIHRvIGdlbmVyYXRl
IGEgYC5zJyBmaWxlCisjIDIuIHJ1bnMgdGhlIEFTTSBwb3N0cHJvY2Vzc29yIG9uIGl0IHRvIGdl
bmVyYXRlIHRoZSBmaW5hbCBgLnNgIGZpbGUKKyMgMy4gYXNzZW1ibGVzIHRoZSBgLnNgIGZpbGUg
dG8gYSBgLm9gIGZpbGUKKworJGFzbV9zdWZmaXhfcHJlID0gIi5wcmUucyIKKyRhc21fc3VmZml4
ID0gIi5zIgorJHBvc3Rwcm9jZXNzb3IgPSAiI3tGaWxlLmRpcm5hbWUoJDApfS9yZXNvbHZlLWFz
bS1maWxlLWNvbmZsaWN0cy5yYiIKKworCiskaW50ZXJtZWRpYXRlX3BhdGhzID0gW10KKworIyBX
ZSBuZWVkIHRvIHdvcmsgd2l0aCBpbmRpY2VzIGEgbG90IGFuZCB1bmZvcnR1bmF0ZWx5ICdnZXRv
cHRsb25nJyBpbgorIyB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IGV4cG9zZSBvcHRpbmQs
IHNvIHdlJ3JlIGdvaW5nIHdpdGgKKyMgYXJyYXkgc2VhcmNoZXMgZm9yIHNpbXBsaWNpdHkuCitk
ZWYgaW5kZXhfbm9mYWlsKGFyeSwgZiwgZXJybXNnKQorICBpZHggPSBhcnkuaW5kZXggeyB8ZWx8
CisgICAgZi5jYWxsKGVsKQorICB9CisgIGlmIGlkeC5uaWw/CisgICAgJHN0ZGVyci5wdXRzKGVy
cm1zZykKKyAgICBleGl0KDMpCisgIGVuZAorICBpZHgKK2VuZAorCisjIEZpbmQgYW5kIHJldHVy
biB0aGUgc291cmNlIGZpbGUgZm9yIHRoaXMgY29tcGlsYXRpb24gY29tbWFuZCwKKyMgcmVtb3Zp
bmcgaXQgZnJvbSB0aGUgYXJncy4gTm90ZSB0aGF0IHRoZSBwYXRoIChBKSBhcyBpdCBhcHBlYXJz
IGhlcmUKKyMgKGNvbWluZyBmcm9tIGEgY21ha2UgcnVsZSkgaXMgbGlrZWx5IHRvIGJlIGRpZmZl
cmVudCB0byB0aGUKKyMgYW5vbnltb3VzIGFyZ3VtZW50IChCKSB0byB0aGUgY29tcGlsYXRpb24g
Y29tbWFuZC4gSG93ZXZlciwgQSB3aWxsCisjIGJlIGEgc3VmZml4IG9mIEIuCisjCisjIEV4aXQg
d2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHRoZXJlLiBUaGlzIGhhcyBhbHJl
YWR5CisjIGJlZW4gY2hlY2tlZCBieSBgY3h4LXdyYXBwZXJgLCBvdGhlcndpc2Ugd2Ugd291bGRu
J3QgYmUgcnVubmluZy4KK2RlZiBleHRyYWN0X2lucHV0IShhcmdzKQorICBwcmVmaXggPSAnLURQ
T1NUUFJPQ0VTU19BU009JworCisgIGlkeCA9IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7
IHxhcmd8CisgICAgYXJnLnN0YXJ0X3dpdGg/KHByZWZpeCkKKyAgfSwgIk5vIGAtRFBPU1RQUk9D
RVNTX0FTTWAgYXJndW1lbnRgIikKKworICBwYXRoID0gYXJnc1tpZHhdW3ByZWZpeC5zaXplLi4t
MV0KKyAgaWYgcGF0aC5zaXplID09IDAKKyAgICAkc3RkZXJyLnB1dHMoIkVtcHR5IHBhdGggaW4g
LURQT1NUUFJPQ0VTU19BU009IikKKyAgICBleGl0KDMpCisgIGVuZAorICAjIFdlIG9ubHkgbmVl
ZCB0aGlzIHRvIGJlIGRlZmluZWQgZm9yIHRoZSBwcmVwcm9jZXNzb3IgKG5vdCBhbnkKKyAgIyB3
cmFwcGVyKSBmcm9tIG5vdyBvbi4KKyAgYXJnc1tpZHhdID0gIi1EUE9TVFBST0NFU1NfQVNNIgor
ICByZXR1cm4gcGF0aAorZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYXJndW1l
bnQgZW5kaW5nIGluIHRoaXMgc3VmZml4LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhl
IGFyZ3VtZW50IGlzbid0IHRoZXJlLiBXZSdyZSBvbmx5IGV2ZXIKKyMgY2FsbGVkIHdpdGggYXJn
dW1lbnRzIHdlIGtub3cgYXJlIGJlaW5nIHBhc3NlZCBpbiBieSB0aGUgYnVpbGQKKyMgc3lzdGVt
LgorZGVmIGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChh
cmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZy5lbmRfd2l0aD8od2Fu
dGVkKQorICAgICAgICAgICAgICAgfSwgIk5vIGFyZ3VtZW50IGVuZHMgd2l0aCAje3dhbnRlZH0i
KQorZW5kCisKKyMgR2V0IGluZGV4IG9mIGEgZ2l2ZW4gYXJndW1lbnQuIERpZSBpZiBpdCdzIG5v
dCB0aGVyZS4KK2RlZiBnZXRfYXJnX2lkeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChh
cmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZyA9PSB3YW50ZWQKKyAg
ICAgICAgICAgICAgIH0sICJObyBgI3t3YW50ZWR9YCBhcmd1bWVudCIpCitlbmQKKworIyBHZXQg
dGhlIGluZGV4IG9mIGAtb2AgYW5kIHZlcmlmeSB0aGF0IGFuIGFyZ3VtZW50IGZvbGxvd3MuCisj
IEJvdGggYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3QgKGZyb20gb3VyIGJ1aWxkIHN5c3RlbSkuCitk
ZWYgZ2V0X29faWR4KGFyZ3MpCisgIGkgPSBnZXRfYXJnX2lkeChhcmdzLCAnLW8nKQorICBpZiAo
aSArIDEpID49IGFyZ3Muc2l6ZQorICAgICRzdGRlcnIucHV0cygiTm8gYXJndW1lbnQgdG8gYC1v
YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaQorZW5kCisKKyMgUnVuIGNvbW1hbmQgYW5kIGRp
ZSBpZiBpdCBmYWlscywgcHJvcGFnYXRpbmcgdGhlIGV4aXQgY29kZS4KK2RlZiBydW5fY21kKGNt
ZCkKKyAgcGlkID0gUHJvY2Vzcy5zcGF3bigqY21kKQorICBQcm9jZXNzLndhaXRwaWQocGlkKQor
ICByZXQgPSAkPworICBpZiBub3QgcmV0LnN1Y2Nlc3M/CisgICAgJHN0ZGVyci5wdXRzKCJFcnJv
ciBydW5uaW5nIGNtZDogI3tyZXR9IikKKyAgICBleGl0KHJldC5leGl0c3RhdHVzKQorICBlbmQK
K2VuZAorCisjIENvbnZlcnQKKyMgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLmNwcAorIyB0bwor
IyAgICBjeHggLW8gYmxhaC5zIC1TIGJsYWguY3BwCitkZWYgYnVpbGRfY3h4X2NtZChhcmdzKQor
ICBjX2lkeCA9IGdldF9hcmdfaWR4KGFyZ3MsICctYycpCisgIG9faWR4ID0gZ2V0X29faWR4KGFy
Z3MpCisKKyAgY3h4X2FyZ3MgPSBhcmdzLmNsb25lCisKKyAgY3h4X2FyZ3NbY19pZHhdID0gJy1T
JworICBvX3BhdGggPSBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGN4eF9hcmdzW29faWR4ICsgMV0g
PSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICAkaW50ZXJtZWRpYXRlX3BhdGhz
IDw8IGN4eF9hcmdzW29faWR4ICsgMV0KKyAgaWYgY3h4X2FyZ3Nbb19pZHggKyAxXSA9PSBvX3Bh
dGgKKyAgICAkc3RkZXJyLnB1dHMoIk91dHB1dCBmaWxlIG5hbWUgbm90IGFuIG9iamVjdCBmaWxl
OiBgI3tvX3BhdGh9YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgY3h4X2FyZ3MKK2VuZAorCisj
IERvCisjICAgICBtdiBibGFoLlMgYmxhaC5wcmUuUworIyBUaGUgcmVhc29uIHdlIGRvIGEgcmVu
YW1lIGluc3RlYWQgb2YgZGlyZWN0bHkgZ2VuZXJhdGluZyB0aGUgLnByZS5zCisjIGZpbGUgd2hl
biBjb21waWxpbmcgaXMgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyAuZHdvIGZpbGUgd2lsbCBo
YXZlCisjIHRoZSBjb3JyZWN0IG5hbWUgZW1iZWRkZWQuCitkZWYgcmVuYW1lX3NfZmlsZShhcmdz
KQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisgIEZpbGUucmVuYW1lKG9f
cGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpLAorICAgICAgICAgICAgICBvX3BhdGguc3Vi
KC9bLl1vJC8sICRhc21fc3VmZml4X3ByZSkpCitlbmQKKworIyBCdWlsZAorIyAgICAgcG9zdHBy
b2Nlc3NvciBibGFoLnByZS5TIGJsYWguUworZGVmIGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFy
Z3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBwcF9hcmdzID0g
WworICAgICRwb3N0cHJvY2Vzc29yLAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZm
aXhfcHJlKSwgIyBpbnB1dAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpICMg
b3V0cHV0CisgIF0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0yXQorICAkaW50
ZXJtZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTFdCisgIHBwX2FyZ3MKK2VuZAorCisjIEJ1aWxk
CisjICAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguUworZGVmIGJ1aWxkX2FzX2NtZChhcmdzLCBp
X3BhdGgpCisgIGlfaWR4ID0gZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3MsIGlfcGF0aCkKKyAgb19w
YXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIGFzX2FyZ3MgPSBhcmdzLmNsb25l
CisgIGlfcGF0aCA9IGFzX2FyZ3NbaV9pZHhdCisgIGFzX2FyZ3NbaV9pZHhdID0gb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgYXNfYXJncworZW5kCisKK2FyZ3MgPSBBUkdWLnRv
X2EKK2lfcGF0aCA9IGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisKK2JlZ2luCisgIHJ1bl9jbWQoYnVp
bGRfY3h4X2NtZChhcmdzKSkKKyAgcmVuYW1lX3NfZmlsZShhcmdzKQorICBydW5fY21kKGJ1aWxk
X3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3MpKQorICBydW5fY21kKGJ1aWxkX2FzX2NtZChhcmdzLCBp
X3BhdGgpKQorZW5zdXJlCisgICRpbnRlcm1lZGlhdGVfcGF0aHMuZWFjaCB7IHxwfAorICAgIGlm
IEZpbGUuZXhpc3Q/KHApCisgICAgICBGaWxlLmRlbGV0ZShwKQorICAgIGVuZAorICB9CitlbmQK
KworZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVz
b2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTgzMmQ4ZDAxZjI5
Y2FhYTM2YTlkNmMwYjE0OTYxZDdhNDhiN2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAs
MCArMSwzOTkgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuIEwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IFJlc29sdmUgY29uZmxpY3RzIGluIGAuZmlsZWAgZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIgZmls
ZXMuIFRob3NlCisjIG1heSByZXN1bHQgZnJvbSBpbmxpbmUgYXNtIHN0YXRlbWVudHMgd2hpY2gg
dGhlbXNlbHZlcyBoYXZlIGAuZmlsZWAKKyMgZGlyZWN0aXZlcy4gQXMgdGhlIGlubGluZSBhc20g
aGFzIG5vIGlkZWEgd2hhdCB0aGUgbmV4dCBmcmVlIGZpbGUKKyMgbnVtYmVyIGlzLCBpdCdsbCBn
ZW5lcmFsbHkgaGF2ZSBpdHMgb3duIG51bWJlcmluZy4gVG8gZ2V0IHRoaW5ncyB0bworIyB3b3Jr
IHdlIGhhdmUgdG8KKyMgMS4gcmVtYXAgY29uZmxpY3RpbmcgZmlsZSBudW1iZXJzCisjIDIuIGNo
YW5nZSBgLmxvY2AgZGlyZWN0aXZlcyB0byByZWZlcmVuY2UgdGhlIGFwcHJvcHJpYXRlIGZpbGUg
bnVtYmVyLgorIworIyBUbyBiZSBhYmxlIHRvIGRvIHRoYXQsIHdlIG5lZWQgc29tZSBjb25jZXB0
IG9mICJzY29wZSIsIGkuZS4gd2hpY2gKKyMgc2V0IG9mIGZpbGVzIGEgZ2l2ZW4gYC5sb2NgIGRp
cmVjdGl2ZSByZWZlcnMgdG8uIFdlIGdldCB0aGF0IGJ5CisjIHRyYWNraW5nIHRoZSAjQVBQLyNO
T0FQUCBkaXJlY3RpdmVzIHRoYXQgdGhlIGNvbXBpbGVyIGVtaXRzIHdoZW4gaXQKKyMgc3dpdGNo
IHRvL2Zyb20gaW5saW5lIGFzbS4KKyMKKyMgSW4gZWZmZWN0LCB3ZSBjb252ZXJ0CisjICAgICAu
ZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAxICJiYXIiCisjICAgICAuZmls
ZSAyICJmb28iCisjICAgICAubG9jIDEsIFgKKyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZ
CisjIHRvCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAyICJi
YXIiCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAubG9jIDIsIFgKKyMgICAgICNOT0FQUAor
IyAgICAgLmxvYyAxLCBZCisKK3JlcXVpcmUgJ3BhdGhuYW1lJworcmVxdWlyZSAnc3RyaW5naW8n
CityZXF1aXJlICdzdHJzY2FuJworCitQYXJzZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1Y3QubmV3KDpz
dHIpCitQYXJzZVJlc3VsdEVycm9yID0gU3RydWN0Lm5ldyg6ZXJyb3IpCisKKyMgUGFyc2VzIHRo
ZSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwgZm9sbG93aW5nIGEgLmZpbGUgYXNzZW1ibGVyIGRpcmVj
dGl2ZQorY2xhc3MgRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIKKyAgZGVmIGluaXRpYWxpemUocykK
KyAgICBAcyA9IFN0cmluZ1NjYW5uZXIubmV3KHMpCisgIGVuZAorICBkZWYgcGFyc2UKKyAgICBA
cy5za2lwKC9ccyovKQorCisgICAgIyBXZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzdHJpbmcgbGl0
ZXJhbAorICAgIHJldCA9IHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgcmV0LnJlc3BvbmRf
dG8/KDplcnJvcikKKyAgICAgIHJldHVybiByZXQKKyAgICBlbmQKKworICAgIEBzLnNraXAoL1xz
Ki8pCisgICAgaWYgbm90IEBzLmVvcz8KKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5l
dygiRXhwZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0ZXIgI3tyZXQuc3RyfSIpCisgICAgZW5kCisgICAg
cmV0dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcocmV0LnN0cikKKyAgZW5kCisgIGRlZiBwYXJz
ZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIEBzLnNjYW4oLyIvKS5uaWw/CisgICAgICBlcnIgPSAi
RXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgYXQgYCN7QHMuc3RyaW5nfWAgKHBvcyAje0BzLnBvc30p
IgorICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAgICBlbmQKKyAgICBw
YXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgZW5kCisgIGRlZiBwYXJzZV91bnRp
bF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgICBzdGFydF9wb3MgPSBAcy5wb3MKKyAgICB3aGls
ZSB0cnVlCisgICAgICAjIFNlYXJjaCBmb3Igb3VyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAg
QHMuc2tpcCgvW14iXFxdKy8pCisgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgIGlmIEBz
LnNjYW4oL1xcLykKKyAgICAgICAgICAjIFdoZW4gd2Ugc2VlICdcXCcsIGNvbnN1bWUgYm90aCBj
aGFyYWN0ZXJzIHNvIHRoYXQgdGhlCisgICAgICAgICAgIyBzZWNvbmQgJ1wnIHdpbGwgbm90IGJl
IHRyZWF0ZWQgYXMgYW4gZXNjYXBlIGNoYXIuCisgICAgICAgICAgbmV4dAorICAgICAgICBlbHNp
ZiBAcy5zY2FuKC8iLykKKyAgICAgICAgICAjIEZvciAnXCInLCBjb25zdW1lIGJvdGggY2hhcmFj
dGVycyBzbyB0aGF0IHRoZSAnIicgd2lsbCBub3QKKyAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUg
c3RyaW5nLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAg
IGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAjICciJyB3aXRob3V0IGEgcHJlY2VlZGluZyAn
XCc7IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4KKyAgICAgICAgIyBXZSdyZSBhbHJlYWR5IHBhc3Qg
dGhlICciJywgc28gdGhlIGxpdGVyYWwgZW5kcyBhdCAtMgorICAgICAgICAjIGNoYXJhY3RlcnMu
CisgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KEBzLnN0cmluZ1tzdGFydF9w
b3MuLihAcy5wb3MgLSAyKV0pCisgICAgICBlbHNpZiBAcy5lb3M/CisgICAgICAgIGVyciA9ICJV
bnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwgKHN0YXJ0aW5nIGF0IHBvcyAje3N0YXJ0X3Bvc30g
aW4gI3tAcy5zdHJpbmd9IgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoZXJy
KQorICAgICAgZW5kCisgICAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgKCN7QHMuaW5zcGVjdH0p
IgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgcHIg
PSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcoc3RyKS5wYXJzZQorICBpZiByZXMuaXNfYT8o
QXJyYXkpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgb3V0Zi5wdXRzKCJQ
YXJzZSByZXN1bHQgaXMgYCN7cHIuZXJyb3J9YCBidXQgZXhwZWN0ZWQgI3tyZXN9IikKKyAgICAg
IHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIGlmIHByLnN0ciAhPSByZXNbMF0KKyAgICAgIG91
dGYucHV0cygiUGFyc2VkIHBhdGggYCN7cHIuc3RyfWAgYnV0IGV4cGVjdGVkIGAje3Jlc1swXX1g
IikKKyAgICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lm
IHJlcy5pc19hPyhTdHJpbmcpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAg
aWYgbm90IHByLmVycm9yLmRvd25jYXNlLmluY2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAg
ZXJyID0gIkVycm9yIG1lc3NhZ2UgYCN7cHIuZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVj
dGVkIHN1YnN0cmluZyBgI3tyZXN9YCIKKyAgICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAg
cmV0dXJuIGZhbHNlCisgICAgICBlbmQKKyAgICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAg
b3V0Zi5wdXRzKCJFeHBlY3RlZCBlcnJvciAoI3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFy
c2UgI3twci5zdHJ9IikKKyAgICByZXR1cm4gZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRl
cm5hbCBlcnJvciAje3Jlcy5jbGFzc30iCisgIGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBu
cl9zdWNjZWVkZWQgPSAwCisgIHRlc3RzID0gWworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsn
ImZvby9iYXIiJywgWyJmb28vYmFyIl1dLAorCisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBz
dHJpbmcgbGl0ZXJhbCJdLAorCisgICAgWyciZm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBs
aXRlcmFsIl0sCisKKyAgICAjICJmb29cIgorICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRl
ZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIs
IFsiZm9vXHg1Y1x4NWMiXV0sCisKKyAgICAjIENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJi
YXIiJywgWydmb29cImJhciddXSwKKworICAgICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyci
Zm9vL2JhciInLCBbJ2Zvby9iYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAg
IFsnIi9iYXIiJywgWycvYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0
d28gY29tcG9uZW50cworICAgIFsnIi9iYXIvYmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAj
IENhbiBkZXRlY3Qgc3RyYXkgdG9rZW4KKyAgICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQg
b2YgbGluZSJdLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVz
cGFjZQorICAgIFsnImZvbyJiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMg
V2lsbCBub3QgYWNjZXB0IGNsYW5nLXN0eWxlIC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3Jr
aW5nX2RpcmVjdG9yeSIgInBhdGgiJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBv
dXRmID0gU3RyaW5nSU8ubmV3KCIiKQorICB0ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlm
IHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgICAgICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAor
ICB9CisgIGlmIG5yX3N1Y2NlZWRlZCAhPSB0ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91
dGYuc3RyaW5nKQorICAgICRzdGRlcnIucHV0cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25y
X3N1Y2NlZWRlZH0vI3t0ZXN0cy5zaXplfSIpCisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisj
IEtlZXAgdHJhY2sgb2Ygd2hpY2ggZmlsZW5vIGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0
aC4gV2UgY2FsbAorIyB0aGUgZmlsZW5vIGEgJ3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2Vy
CisgIEBAbmV4dF9mcmVlID0gMSAgICMgTmV4dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMg
PSB7fSAjIE1hcHMgcGF0aCAtPiBnbG9iYWwgc2xvdAorICBkZWYgaW5pdGlhbGl6ZShwYXJlbnQp
CisgICAgQHBhcmVudCA9IHBhcmVudAorICAgICMgVGhpcyBtYXBzIGZyb20gb3VyIG93biBsb2Nh
bCBzbG90cyAoaS5lLiB3aXRoaW4gYW4gQVBQIHNlY3Rpb24pCisgICAgIyB0byBhIGdsb2JhbCBz
bG90LgorICAgIEBzbG90X21hcCA9IHt9CisgIGVuZAorICAjIFdlIG1ha2Ugc3VyZSB0aGF0IC5m
aWxlIGRpcmVjdGl2ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzYW1lIHBhdGggYXJlCisgICMgZGVkdXAn
ZCwgaS5lLiBpZiB3ZSBzZWUKKyAgIyAgICAgLmZpbGUgTiAiL3BhdGgvdG8vaW5jbHVkZS5oIgor
ICAjICAgICAuLi4KKyAgIyAgICAgLmZpbGUgTSAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjIHRo
ZW4gdGhlICJsb2NhbCIgTiwgTSBzbG90cyB3aWxsIGJlIG1hcHBlZCB0byB0aGUgc2FtZSAiZ2xv
YmFsIiBzbG90LgorICBkZWYgcmVnaXN0ZXJfcGF0aChwYXRoLCBzbG90KQorICAgIGN1cnJfc2xv
dCA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBjdXJyX3Nsb3QubmlsPworICAgICAgIyBXZSBoYXZl
bid0IHNlZW4gdGhpcyBmaWxlIGJlZm9yZQorICAgICAgaWYgc2xvdCA8PSBAQG5leHRfZnJlZQor
ICAgICAgICAjIERlc2lyZWQgZmlsZSBzbG90IGVpdGhlciBjbGFzaGVzIHdpdGggYW4gZXhpc3Rp
bmcgb25lLCBvciBpcworICAgICAgICAjIHRoZSBuZXh0IG9uZSB0byBiZSBhbGxvY2F0ZWQuIElu
IGVpdGhlciBjYXNlLCBhc3NpZ24gdGhlCisgICAgICAgICMgbmV4dCBmcmVlIHNsb3QuCisgICAg
ICAgIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICAgIGVsc2UKKyAgICAgICAgIyBEb24ndCBh
bGxvdyBzbG90IGdhcHMuIFRlY2huaWNhbGx5IHdlIGNvdWxkIGhhbmRsZSB0aGVtLCBidXQKKyAg
ICAgICAgIyB0aGV5IHNob3VsZCBuZXZlciBoYXBwZW47IGJhaWwgbm93IHJhdGhlciB0aGFuIHBh
cGVyaW5nIG92ZXIKKyAgICAgICAgIyBhbiBlYXJsaWVyIGVycm9yLgorICAgICAgICAkc3RkZXJy
LnB1dHMoIkZpbGUgd2FudHMgc2xvdCAje3Nsb3R9IGJ1dCBvbmx5IHNlZW4gI3tAQG5leHRfZnJl
ZX0gc28gZmFyIikKKyAgICAgICAgZXhpdCgyKQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
IyBXZSd2ZSBhbHJlYWR5IGFzc2lnbmVkIGEgc2xvdCBmb3IgdGhpcyBmaWxlLgorICAgIGVuZAor
ICAgIEBzbG90X21hcFtzbG90XSA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBAc2xvdF9tYXBbc2xv
dF0ubmlsPworICAgICAgcmFpc2UgIkRpZG4ndCBtYXAgbG9jYWwgc2xvdCAje3Nsb3R9IgorICAg
IGVuZAorICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgZm9yIHBhdGgKKyAgZGVmIHNsb3Rf
Zm9yX3BhdGgocGF0aCkKKyAgICByZXR1cm4gQEBwYXRoc1twYXRoXQorICBlbmQKKyAgIyBSZXR1
cm4gZ2xvYmFsIHNsb3QgdGhhdCB3aWxsIHJlcGxhY2UgdGhlIGxvY2FsIHNsb3QKKyAgZGVmIHJl
bWFwX3Nsb3Qoc2xvdCkKKyAgICByZXQgPSBuaWwKKyAgICBpZiBAc2xvdF9tYXAuc2l6ZSA+IDAK
KyAgICAgICMgSWYgdGhlIGN1cnJlbnQgTk9fQVBQIHNlZ21lbnQgaGFzIGRlZmluZWQgYSAuZmls
ZSwgb25seSBsb29rCisgICAgICAjIGluIHRoZSBjdXJyZW50IEZpbGVTbG90VHJhY2tlci4gVGhp
cyBpcyB0aGUgY2FzZSBmb3IgYQorICAgICAgIyB0b3AtbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1l
bnQuCisgICAgICByZXQgPSBAc2xvdF9tYXBbc2xvdF0KKyAgICBlbHNpZiBub3QgQHBhcmVudC5u
aWw/CisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBub3QgZGVmaW5l
ZCBhIC5maWxlLCBjbGVhcmx5CisgICAgICAjIGFsbCAubG9jIGRpcmVjdGl2ZXMgcmVmZXIgdG8g
ZmlsZXMgZGVmaW5lZCBpbiB0aGUgQVBQCisgICAgICAjIHBhcnQuIFRoaXMgaXMgdGhlIGNhc2Ug
Zm9yIG5vbi10b3AtbGV2ZWwgaW5saW5lIGFzbQorICAgICAgIyBzdGF0ZW1lbnRzLgorICAgICAg
cmV0ID0gQHBhcmVudC5yZW1hcF9zbG90KHNsb3QpCisgICAgZW5kCisgICAgaWYgcmV0Lm5pbD8K
KyAgICAgIHJhaXNlICJObyBnbG9iYWwgc2xvdCBmb3IgI3tzbG90fSIKKyAgICBlbmQKKyAgICBy
ZXQKKyAgZW5kCisgIHByaXZhdGUKKyAgZGVmIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBA
QHBhdGhzW3BhdGhdID0gQEBuZXh0X2ZyZWUKKyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAor
ZW5kCisKKyMgUmV0dXJuIHNlcXVlbnRpYWwgbGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Yg
d2hldGhlciB3ZSdyZSBpbiBhbgorIyAjQVBQIG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNt
UmVhZGVyCisgIGF0dHJfcmVhZGVyIDppbl9hcHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25v
YXBwLCA6bm9hcHBfdG9fYXBwCisgIGRlZiBpbml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAg
QGYucmV3aW5kCisgICAgQGxpbmVuciA9IDAKKyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFz
dF9zd2l0Y2ggPSAic3RhcnQgb2YgZmlsZSIgIyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisg
IGRlZiBuZXh0X2xpbmUKKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAg
aWYgbC5uaWw/CisgICAgICAgIHJldHVybiBsCisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0g
MQorICAgICAgaWYgL14jXHMqQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisg
ICAgICAgICAgcmFpc2UgIiNBUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNB
UFAgKCN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1
ZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19h
cHAKKyAgICAgICAgICBAbm9hcHBfdG9fYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVu
ZAorICAgICAgaWYgL14jXHMqTk9fQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBub3QgQGlu
X2FwcAorICAgICAgICAgIHJhaXNlICIjTk9BUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCB3YXMg
bm90IGluICNBUFAgKGxhc3Qgc3dpY2ggYXQgI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5k
CisgICAgICAgIEBpbl9hcHAgPSBmYWxzZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5y
CisgICAgICAgIGlmIEBhcHBfdG9fbm9hcHAKKyAgICAgICAgICBAYXBwX3RvX25vYXBwLmNhbGwo
KQorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGwKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgRmlsZUNvbmZsaWN0UmVzb2x2ZXIKKyAgQEBmaWxlX3JlID0gL15ccypb
Ll1maWxlXHMrKD88c2xvdD5cZCspXHMrKD88cmVzdD4uKikkLworICBAQGxvY19yZSA9IC9eKD88
d2hpdGUxPlxzKilbLl1sb2MoPzx3aGl0ZTI+XHMrKSg/PHNsb3Q+XGQrKSg/PHJlc3Q+XHMrXGQr
LiopJC8KKyAgZGVmIGluaXRpYWxpemUoaW5mLCBvdXRmKQorICAgIEBvdXRmID0gb3V0ZgorICAg
IEB0cmFja2VycyA9IFtGaWxlU2xvdFRyYWNrZXIubmV3KG5pbCldCisgICAgQGFzbV9yZWFkZXIg
PSBBc21SZWFkZXIubmV3KGluZikKKyAgICAjIFdoZW4gd2UgZW50ZXIgYW4gI0FQUCBzZWN0aW9u
IChpLmUuIGFzbSBlbWl0dGVkIGZyb20gYW4gZXhwYW5kZWQKKyAgICAjIGlubGluZSBhc20gc3Rh
dGVtZW50KSwgY3JlYXRlIGEgbmV3IGZpbGUgdHJhY2tlciwgaW4gZWZmZWN0CisgICAgIyBwcm9j
ZXNzaW5nIHRoZSAuZmlsZSBhbmQgLmxvYyBkaXJlY3RpdmVzIGluIGEgbmV3ICJuYW1lc3BhY2Ui
CisgICAgIyAoYXMgZmFyIGFzIHRoZSBmaWxlIG51bWJlcnMgYXJlIGNvbmNlcm5lZCkuIFRoaXMg
aXMgYW4gYXJyYXksCisgICAgIyBidXQgaW4gcHJhY3RpY2UgdGhlIHNpemUgd2lsbCBlaXRoZXIg
YmUgMSAoTk9BUFApIG9yIDIgKEFQUCkuCisgICAgQGFzbV9yZWFkZXIuYXBwX3RvX25vYXBwID0g
UHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QHRyYWNrZXJzLnBvcAorICAgIH0KKyAgICBAYXNtX3JlYWRlci5ub2FwcF90b19hcHAgPSBQcm9j
Lm5ldyB7IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJh
Y2tlcnMucHVzaChGaWxlU2xvdFRyYWNrZXIubmV3KEB0cmFja2Vyc1stMV0pKQorICAgIH0KKyAg
ZW5kCisgIGRlZiBydW4KKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGFzbV9yZWFkZXIubmV4
dF9saW5lCisgICAgICBicmVhayB1bmxlc3MgbAorCisgICAgICBtZCA9IEBAZmlsZV9yZS5tYXRj
aChsKQorICAgICAgaWYgbWQKKyAgICAgICAgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgICAgIG5l
eHQKKyAgICAgIGVuZAorICAgICAgbWQgPSBAQGxvY19yZS5tYXRjaChsKQorICAgICAgaWYgbWQK
KyAgICAgICAgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAg
ICBAb3V0Zi53cml0ZShsKQorICAgICAgbmV4dAorICAgIGVuZAorICBlbmQKKyAgZGVmIGxvY19k
aXJlY3RpdmUobWQpCisgICAgdHJhY2tlciA9IEB0cmFja2Vycy5sYXN0CisgICAgc2xvdCA9IHRy
YWNrZXIucmVtYXBfc2xvdChtZFs6c2xvdF0udG9faSkKKyAgICBAb3V0Zi5wdXRzKCIje21kWzp3
aGl0ZTFdfS5sb2Mje21kWzp3aGl0ZTJdfSN7c2xvdH0je21kWzpyZXN0XX0iKQorICBlbmQKKyAg
ZGVmIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorCisg
ICAgcHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcobWRbOnJlc3RdKS5wYXJzZQorICAg
IGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgICRzdGRlcnIucHV0cygiRXJyb3IgcGFy
c2luZyBwYXRoIGFyZ3VtZW50IHRvIC5maWxlIGRpcmVjdGl2ZTogI3twci5lcnJvcn0iKQorICAg
ICAgZXhpdCgyKQorICAgIGVuZAorCisgICAgcGF0aCA9IHByLnN0cgorICAgIHRyYWNrZXIucmVn
aXN0ZXJfcGF0aChwYXRoLCBtZFs6c2xvdF0udG9faSkKKworICAgIHNsb3QgPSB0cmFja2VyLnNs
b3RfZm9yX3BhdGgocGF0aCkKKyAgICBAb3V0Zi5wdXRzKCJcdC5maWxlXHQje3Nsb3R9ICN7bWRb
OnJlc3RdfSIpCisgIGVuZAorZW5kCisKKyMgRmlyc3QsIG1ha2Ugc3VyZSBvdXIgdGVzdHMgc3Rp
bGwgcGFzcy4gVGhpcyBvbmx5IHRha2VzIGEgZnJhY3Rpb24gb2YKKyMgb3VyIHJ1bnRpbWUgYW5k
IGVuc3VyZXMgdGhlIHRlc3RzIHdpbGwgZ2V0IHJ1biBieSBhbnlvbmUgdHJ5aW5nIG91dAorIyBj
aGFuZ2VzIHRvIHRoaXMgZmlsZS4KK3NlbGZ0ZXN0CisKK2lmIEFSR1Yuc2l6ZSAhPSAyCisgICRz
dGRlcnIucHV0cygiVXNhZ2U6ICN7JDB9IGlucHV0IG91dHB1dCIpCisgIGV4aXQoMikKK2VuZAor
CitpbnBhdGgsIG91dHBhdGggPSBBUkdWLmNvbGxlY3QgeyB8bnwgUGF0aG5hbWUubmV3KG4pIH0K
KworaWYgbm90IGlucGF0aC5maWxlPworICAkc3RkZXJyLnB1dHMoIk5vdCBhIHJlZ3VsYXIgZmls
ZTogYCN7aW5wYXRofWAiKQorICBleGl0KDIpCitlbmQKKworaWYgaW5wYXRoLmV4dG5hbWUudXBj
YXNlICE9ICIuUyIKKyAgJHN0ZGVyci5wdXRzKCJ3YXJuaW5nOiBmaWxlIGAje2lucGF0aH1gIGRv
ZXNuJ3QgaGF2ZSBhIGAuc2Agb3IgYC5TYCBleHRlbnNpb24uIEdvaW5nIG9uIGFueXdheS4uLiIp
CitlbmQKKworRmlsZS5vcGVuKGlucGF0aCwgInIiKSB7IHxpbmZ8CisgIEZpbGUub3BlbihvdXRw
YXRoLCAidyIpIHsgfG91dGZ8CisgICAgRmlsZUNvbmZsaWN0UmVzb2x2ZXIubmV3KGluZiwgb3V0
ZikucnVuCisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2I2MzhiYzQw
MTFjOWNkNDRlMTYyOTk3ZTA5M2M4ZTA0ZTQyMGEyLi5lNmRlYjAxNDI1MjA0MDhmOGM3ODEwMGFh
Njg2NWRhNWRmODdkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC02NzUsOCAr
Njc1LDYgQEAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAogbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCiBsbGludC9MTEludFRodW5rcy5jcHAKLS8v
IEZJWE1FOiBXZSBjYW4ndCBidW5kbGUgdGhpcyBmaWxlIGR1ZSB0byBhIGNsYW5nIGJ1Zy4KLWxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIEBuby11bmlmeQogCiBwYXJzZXIvTGV4ZXIuY3Bw
CiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEz
YTlmYjMzZTJmZjIzNTJjNjllYmE3Ni4uZDUxMDMxMzE5YTE4NzEyMzUzOGI2N2I2ZDNkMTRhYWZm
ZjA0N2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcApAQCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVj
dXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSog
dm0sCiAjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRp
ZgogCisjaWYgQ09NUElMRVIoR0NDKQorLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4gR0RC
IHdoZXJlLCBpZiB0aGUgY29tcGlsYXRpb24gdW5pdAorLy8gZG9lc24ndCBoYXZlIGFueSBhZGRy
ZXNzIHJhbmdlIGluZm9ybWF0aW9uLCBpdHMgbGluZSB0YWJsZSB3b24ndAorLy8gZXZlbiBiZSBj
b25zdWx0ZWQuIEVtaXQge2JlZm9yZSxhZnRlcn1fbGxpbnRfYXNtIHNvIHRoYXQgdGhlIGNvZGUK
Ky8vIGVtaXR0ZWQgaW4gdGhlIHRvcCBsZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudCBpcyB3aXRo
aW4gZnVuY3Rpb25zCisvLyB2aXNpYmxlIHRvIHRoZSBjb21waWxlci4gVGhpcyB3YXksIEdEQiBj
YW4gcmVzb2x2ZSBhIFBDIGluIHRoZQorLy8gbGxpbnQgYXNtIGNvZGUgdG8gdGhpcyBjb21waWxh
dGlvbiB1bml0IGFuZCB0aGUgc3VjY2Vzc2Z1bGx5IGxvb2sKKy8vIHVwIHRoZSBsaW5lIG51bWJl
ciBpbmZvcm1hdGlvbi4KK01BUktFUl9TWU1CT0woYmVmb3JlX2xsaW50X2FzbSkKKyNlbmRpZiAv
KiBXVEZfQ09NUElMRVJfR0NDICovCisKIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBv
ZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZv
ciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5h
c20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisjaWYgQ09NUElMRVIoR0NDKQorTUFS
S0VSX1NZTUJPTChhZnRlcl9sbGludF9hc20pCisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAq
LworCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFiMmZhMTZlNjU4OGI2ODMyODlhYzA0Nzcy
N2I3ZjBlLi4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1OWVkMzc4YWRmODMyOWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCkBAIC04OSw2ICs4OSwxMCBA
QCBkZWYgc2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9ucygpCiAgICAgICAgICAgICAgICAgZW5k
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgZW5kCisgICAgZWxzaWYgRU5WWyJDTUFLRV9DWFhf
Q09NUElMRVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAgICAgIEVOVlsiR0NDX09GRkxJTkVBU01f
U09VUkNFX01BUCJdID09ICdPTicKKyAgICAgICMgQWxsIEdDQyB2ZXJzaW9ucyB0aGF0IGNhbiBi
dWlsZCBKU0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9ucworICAgICAgcmV0dXJuIHRydWUKICAg
ICBlbmQKIAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5o
IGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCA0Mzc0Y2IzYWYyM2M4OWJiNTM0OTQ2
OWRjODhlZmM2NDQ2MTRhNDdjLi41MTAxZTA0NDIwYjc3ZGJjZjUwZWNkNjdkY2UzNzFiYWIwNWJi
NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIsMTEgQEAKICNkZWZpbmUgV0FSTl9VTlVT
RURfUkVUVVJOCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKE1BUktFUl9TWU1CT0wpICYmIENPTVBJ
TEVSKEdDQykKKyNkZWZpbmUgTUFSS0VSX1NZTUJPTChuYW1lKSBcCisgICAgdm9pZCBfX2F0dHJp
YnV0ZV9fKChfX25vX3Jlb3JkZXJfXykpIG5hbWUodm9pZCkgeyBfX2FzbV9fKCIiKTsgfQorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihNU1ZDKQogI2Rl
ZmluZSBfX2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFr
ZQppbmRleCBhNTc0ZWY4YzIyMmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIxLi5lYTEzNjI0
ODNlNzgwZTQxNWNjODU0OGNjNmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0NvbW1vbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5j
bWFrZQpAQCAtMTEyLDYgKzExMiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAgICBzZXQoQ01B
S0VfU0hBUkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtV2wsLS1n
ZGItaW5kZXgiKQogZW5kaWYgKCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVG
QVVMVCBPRkYpCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciIE9SIENNQUtF
X0JVSUxEX1RZUEUgU1RSRVFVQUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQoR0NDX09GRkxJ
TkVBU01fU09VUkNFX01BUF9ERUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9uKEdDQ19PRkZM
SU5FQVNNX1NPVVJDRV9NQVAKKyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1hdGlvbiBmb3Ig
b2ZmbGluZWFzbS1nZW5lcmF0ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQ
X0RFRkFVTFR9KQorCiAjIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAgLSBBdCB0aGlz
IG1vbWVudCwgT3Blbk1QIGlzIG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRh
dGlvbgogIyAgICB0byBuYXRpdmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXphdGlvbiBvZiB0
aGUgU1ZHIGZpbHRlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395174</attachid>
            <date>2020-04-01 09:14:37 -0700</date>
            <delta_ts>2020-04-02 06:04:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200401161435.patch</filename>
            <type>text/plain</type>
            <size>28402</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi41MDA5MmI1YjE4ZDUyMzMw
YWFmOWZiNjRlMTcyYTg4MjExODI4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVi
dWcKKyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0
YXRpb25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZp
bGUgZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAg
ICAgIHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGls
YXRpb24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lm
aWNhbGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQt
aW4gYXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMs
IGJ1dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0
ZWQgYXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5n
bGUgc291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZv
ciBpdC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcg
d2l0aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBk
ZWJ1ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJ
bmZvIGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4K
KworICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBm
b3IgYSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRo
ZSBhZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmls
ZS4gSW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZl
IHRvIGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNzkxYjdmZTkz
OWU3MjVhYzE4MjZjMTc0YWRhZjU5OGEzOTY0YzI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBP
VVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0
fQogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9h
c20ucmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtP
RkZMSU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNt
LmFzbQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
PFRBUkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtD
TUFLRV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
ICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElS
RUNUT1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJ
TSkKQEAgLTM0OCwxMCArMzQ4LDE3IEBAIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkK
ICAgICAgICAgQ09NTUFORCAke01BU01fRVhFQ1VUQUJMRX0gJHtMTElOVF9NQVNNX0ZMQUdTfSAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xldmVsSW50ZXJwcmV0ZXJX
aW4ub2JqICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRl
cnByZXRlcldpbi5hc20KICAgICAgICAgVkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xv
d0xldmVsSW50ZXJwcmV0ZXJXaW4ub2JqKQorICAgIGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJw
cmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKQogZWxzZSAoKQot
ICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKLSAgICAgICAgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9MTEludEFzc2VtYmx5LmgKLSAgICApCisgICAg
IyBBcyB0aGVyZSdzIHBvb3IgdG9vbGNoYWluIHN1cHBvcnQgZm9yIHVzaW5nIGAuZmlsZWAgZGly
ZWN0aXZlcyBpbgorICAgICMgaW5saW5lIGFzbSAoaS5lLiB0aGVyZSdzIG5vIHdheSB0byBhdm9p
ZCBjbGFzaGVzIHdpdGggdGhlIGAuZmlsZWAKKyAgICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVkIGJ5
IHRoZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAgICMgaW50cm9kdWNl
IGEgcG9zdHByb2Nlc3NpbmcgcGFzcyBmb3IgdGhlIGFzbSB0aGF0IGdldHMgYXNzZW1ibGVkIGlu
dG8KKyAgICAjIGFuIG9iamVjdCBmaWxlLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBmb3IgTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAKKyAgICAjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVzIHRv
IGludHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyAgICAjIHNpbmdsZSBzb3VyY2Ug
ZmlsZSwgc28gd2UgbmVlZCB0byBjcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQgZm9yIGl0LgorICAg
IGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCisgICAgICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vJHtMTEludE91dHB1dH0pCiBlbmRpZiAoKQogCiAjIFdlYkFzc2VtYmx5IGdlbmVyYXRv
cgpAQCAtMTM2Miw2ICsxMzY5LDI5IEBAIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExMSW50
T2Zmc2V0c0V4dHJhY3RvciBTWVNURU0gUFJJVkFURSAke0phdmFTY3JpcHRDb3JlCiAKIGFkZF9z
dWJkaXJlY3Rvcnkoc2hlbGwpCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVs
SW50ZXJwcmV0ZXJMaWIKKyAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0
Q29yZSxJTkNMVURFX0RJUkVDVE9SSUVTPiIpCisKK2lmIChDTUFLRV9DT01QSUxFUl9JU19HTlVD
WFggQU5EIEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVApCisgICAgbWVzc2FnZShTVEFUVVMgIkVu
YWJsaW5nIGFzbSBwb3N0cHJvY2Vzc2luZyIpCisKKyAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUiAiJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElSfS9wb3N0cHJv
Y2Vzcy1hc20iKQorICAgIGdldF90YXJnZXRfcHJvcGVydHkoUFJPUF9SVUxFX0xBVU5DSF9DT01Q
SUxFIExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICBpZiAo
UFJPUF9SVUxFX0xBVU5DSF9DT01QSUxFKQorICAgICAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUiAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSAke1BST1BfUlVMRV9M
QVVOQ0hfQ09NUElMRX0iKQorICAgIGVuZGlmICgpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBM
b3dMZXZlbEludGVycHJldGVyTGliCisgICAgICAgIFBST1BFUlRZIFJVTEVfTEFVTkNIX0NPTVBJ
TEUgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0iKQorCisgICAgIyBQYXNzIGluIHRo
ZSBmaWxlbmFtZSBhcyBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIHNvIHRoYXQKKyAg
ICAjIHRoZSB3cmFwcGVyIGNhbiBhY2N1cmF0ZWx5IGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZS4K
KyAgICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoImxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwIgorICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMg
IlBPU1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCitlbmRpZiAo
KQorCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMgTG93TGV2ZWxJbnRlcnBy
ZXRlckxpYikKKwogV0VCS0lUX0NPTVBVVEVfU09VUkNFUyhKYXZhU2NyaXB0Q29yZSkKIFdFQktJ
VF9XUkFQX1NPVVJDRUxJU1QoJHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTfSkKIFdFQktJVF9GUkFN
RVdPUksoSmF2YVNjcmlwdENvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9wb3N0cHJvY2Vzcy1hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9w
b3N0cHJvY2Vzcy1hc20KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwYTMxMmVlNGE3ODE0OWZjOWU5ZWUxMzQzODFh
YzRmNmNkMDBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Bvc3Rwcm9jZXNzLWFzbQpAQCAtMCwwICsxLDE5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVi
eQorCisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgV3JhcHBlciBmb3IgYSAuY3BwIC0+IC5vIGNvbXBp
bGF0aW9uIGNvbW1hbmQuIEl0CisjIDEuIGNvbnZlcnRzIHRoZSBjb21tYW5kIHRvIGdlbmVyYXRl
IGEgYC5zJyBmaWxlCisjIDIuIHJ1bnMgdGhlIEFTTSBwb3N0cHJvY2Vzc29yIG9uIGl0IHRvIGdl
bmVyYXRlIHRoZSBmaW5hbCBgLnNgIGZpbGUKKyMgMy4gYXNzZW1ibGVzIHRoZSBgLnNgIGZpbGUg
dG8gYSBgLm9gIGZpbGUKKworJGFzbV9zdWZmaXhfcHJlID0gIi5wcmUucyIKKyRhc21fc3VmZml4
ID0gIi5zIgorJHBvc3Rwcm9jZXNzb3IgPSAiI3tGaWxlLmRpcm5hbWUoJDApfS9yZXNvbHZlLWFz
bS1maWxlLWNvbmZsaWN0cy5yYiIKKworCiskaW50ZXJtZWRpYXRlX3BhdGhzID0gW10KKworIyBX
ZSBuZWVkIHRvIHdvcmsgd2l0aCBpbmRpY2VzIGEgbG90IGFuZCB1bmZvcnR1bmF0ZWx5ICdnZXRv
cHRsb25nJyBpbgorIyB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IGV4cG9zZSBvcHRpbmQs
IHNvIHdlJ3JlIGdvaW5nIHdpdGgKKyMgYXJyYXkgc2VhcmNoZXMgZm9yIHNpbXBsaWNpdHkuCitk
ZWYgaW5kZXhfbm9mYWlsKGFyeSwgZiwgZXJybXNnKQorICBpZHggPSBhcnkuaW5kZXggeyB8ZWx8
CisgICAgZi5jYWxsKGVsKQorICB9CisgIGlmIGlkeC5uaWw/CisgICAgJHN0ZGVyci5wdXRzKGVy
cm1zZykKKyAgICBleGl0KDMpCisgIGVuZAorICBpZHgKK2VuZAorCisjIEZpbmQgYW5kIHJldHVy
biB0aGUgc291cmNlIGZpbGUgZm9yIHRoaXMgY29tcGlsYXRpb24gY29tbWFuZCwKKyMgcmVtb3Zp
bmcgaXQgZnJvbSB0aGUgYXJncy4gTm90ZSB0aGF0IHRoZSBwYXRoIChBKSBhcyBpdCBhcHBlYXJz
IGhlcmUKKyMgKGNvbWluZyBmcm9tIGEgY21ha2UgcnVsZSkgaXMgbGlrZWx5IHRvIGJlIGRpZmZl
cmVudCB0byB0aGUKKyMgYW5vbnltb3VzIGFyZ3VtZW50IChCKSB0byB0aGUgY29tcGlsYXRpb24g
Y29tbWFuZC4gSG93ZXZlciwgQSB3aWxsCisjIGJlIGEgc3VmZml4IG9mIEIuCisjCisjIEV4aXQg
d2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHRoZXJlLiBUaGlzIGhhcyBhbHJl
YWR5CisjIGJlZW4gY2hlY2tlZCBieSBgY3h4LXdyYXBwZXJgLCBvdGhlcndpc2Ugd2Ugd291bGRu
J3QgYmUgcnVubmluZy4KK2RlZiBleHRyYWN0X2lucHV0IShhcmdzKQorICBwcmVmaXggPSAnLURQ
T1NUUFJPQ0VTU19BU009JworCisgIGlkeCA9IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7
IHxhcmd8CisgICAgYXJnLnN0YXJ0X3dpdGg/KHByZWZpeCkKKyAgfSwgIk5vIGAtRFBPU1RQUk9D
RVNTX0FTTWAgYXJndW1lbnRgIikKKworICBwYXRoID0gYXJnc1tpZHhdW3ByZWZpeC5zaXplLi4t
MV0KKyAgaWYgcGF0aC5zaXplID09IDAKKyAgICAkc3RkZXJyLnB1dHMoIkVtcHR5IHBhdGggaW4g
LURQT1NUUFJPQ0VTU19BU009IikKKyAgICBleGl0KDMpCisgIGVuZAorICAjIFdlIG9ubHkgbmVl
ZCB0aGlzIHRvIGJlIGRlZmluZWQgZm9yIHRoZSBwcmVwcm9jZXNzb3IgKG5vdCBhbnkKKyAgIyB3
cmFwcGVyKSBmcm9tIG5vdyBvbi4KKyAgYXJnc1tpZHhdID0gIi1EUE9TVFBST0NFU1NfQVNNIgor
ICByZXR1cm4gcGF0aAorZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYXJndW1l
bnQgZW5kaW5nIGluIHRoaXMgc3VmZml4LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhl
IGFyZ3VtZW50IGlzbid0IHRoZXJlLiBXZSdyZSBvbmx5IGV2ZXIKKyMgY2FsbGVkIHdpdGggYXJn
dW1lbnRzIHdlIGtub3cgYXJlIGJlaW5nIHBhc3NlZCBpbiBieSB0aGUgYnVpbGQKKyMgc3lzdGVt
LgorZGVmIGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChh
cmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZy5lbmRfd2l0aD8od2Fu
dGVkKQorICAgICAgICAgICAgICAgfSwgIk5vIGFyZ3VtZW50IGVuZHMgd2l0aCAje3dhbnRlZH0i
KQorZW5kCisKKyMgR2V0IGluZGV4IG9mIGEgZ2l2ZW4gYXJndW1lbnQuIERpZSBpZiBpdCdzIG5v
dCB0aGVyZS4KK2RlZiBnZXRfYXJnX2lkeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChh
cmdzLCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZyA9PSB3YW50ZWQKKyAg
ICAgICAgICAgICAgIH0sICJObyBgI3t3YW50ZWR9YCBhcmd1bWVudCIpCitlbmQKKworIyBHZXQg
dGhlIGluZGV4IG9mIGAtb2AgYW5kIHZlcmlmeSB0aGF0IGFuIGFyZ3VtZW50IGZvbGxvd3MuCisj
IEJvdGggYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3QgKGZyb20gb3VyIGJ1aWxkIHN5c3RlbSkuCitk
ZWYgZ2V0X29faWR4KGFyZ3MpCisgIGkgPSBnZXRfYXJnX2lkeChhcmdzLCAnLW8nKQorICBpZiAo
aSArIDEpID49IGFyZ3Muc2l6ZQorICAgICRzdGRlcnIucHV0cygiTm8gYXJndW1lbnQgdG8gYC1v
YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaQorZW5kCisKKyMgUnVuIGNvbW1hbmQgYW5kIGRp
ZSBpZiBpdCBmYWlscywgcHJvcGFnYXRpbmcgdGhlIGV4aXQgY29kZS4KK2RlZiBydW5fY21kKGNt
ZCkKKyAgcGlkID0gUHJvY2Vzcy5zcGF3bigqY21kKQorICBQcm9jZXNzLndhaXRwaWQocGlkKQor
ICByZXQgPSAkPworICBpZiBub3QgcmV0LnN1Y2Nlc3M/CisgICAgJHN0ZGVyci5wdXRzKCJFcnJv
ciBydW5uaW5nIGNtZDogI3tyZXR9IikKKyAgICBleGl0KHJldC5leGl0c3RhdHVzKQorICBlbmQK
K2VuZAorCisjIENvbnZlcnQKKyMgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLmNwcAorIyB0bwor
IyAgICBjeHggLW8gYmxhaC5zIC1TIGJsYWguY3BwCitkZWYgYnVpbGRfY3h4X2NtZChhcmdzKQor
ICBjX2lkeCA9IGdldF9hcmdfaWR4KGFyZ3MsICctYycpCisgIG9faWR4ID0gZ2V0X29faWR4KGFy
Z3MpCisKKyAgY3h4X2FyZ3MgPSBhcmdzLmNsb25lCisKKyAgY3h4X2FyZ3NbY19pZHhdID0gJy1T
JworICBvX3BhdGggPSBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGN4eF9hcmdzW29faWR4ICsgMV0g
PSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICAkaW50ZXJtZWRpYXRlX3BhdGhz
IDw8IGN4eF9hcmdzW29faWR4ICsgMV0KKyAgaWYgY3h4X2FyZ3Nbb19pZHggKyAxXSA9PSBvX3Bh
dGgKKyAgICAkc3RkZXJyLnB1dHMoIk91dHB1dCBmaWxlIG5hbWUgbm90IGFuIG9iamVjdCBmaWxl
OiBgI3tvX3BhdGh9YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgY3h4X2FyZ3MKK2VuZAorCisj
IERvCisjICAgICBtdiBibGFoLlMgYmxhaC5wcmUuUworIyBUaGUgcmVhc29uIHdlIGRvIGEgcmVu
YW1lIGluc3RlYWQgb2YgZGlyZWN0bHkgZ2VuZXJhdGluZyB0aGUgLnByZS5zCisjIGZpbGUgd2hl
biBjb21waWxpbmcgaXMgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyAuZHdvIGZpbGUgd2lsbCBo
YXZlCisjIHRoZSBjb3JyZWN0IG5hbWUgZW1iZWRkZWQuCitkZWYgcmVuYW1lX3NfZmlsZShhcmdz
KQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisgIEZpbGUucmVuYW1lKG9f
cGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpLAorICAgICAgICAgICAgICBvX3BhdGguc3Vi
KC9bLl1vJC8sICRhc21fc3VmZml4X3ByZSkpCitlbmQKKworIyBCdWlsZAorIyAgICAgcG9zdHBy
b2Nlc3NvciBibGFoLnByZS5TIGJsYWguUworZGVmIGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFy
Z3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBwcF9hcmdzID0g
WworICAgICRwb3N0cHJvY2Vzc29yLAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZm
aXhfcHJlKSwgIyBpbnB1dAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpICMg
b3V0cHV0CisgIF0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0yXQorICAkaW50
ZXJtZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTFdCisgIHBwX2FyZ3MKK2VuZAorCisjIEJ1aWxk
CisjICAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguUworZGVmIGJ1aWxkX2FzX2NtZChhcmdzLCBp
X3BhdGgpCisgIGlfaWR4ID0gZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3MsIGlfcGF0aCkKKyAgb19w
YXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIGFzX2FyZ3MgPSBhcmdzLmNsb25l
CisgIGlfcGF0aCA9IGFzX2FyZ3NbaV9pZHhdCisgIGFzX2FyZ3NbaV9pZHhdID0gb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgYXNfYXJncworZW5kCisKK2FyZ3MgPSBBUkdWLnRv
X2EKK2lfcGF0aCA9IGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisKK2JlZ2luCisgIHJ1bl9jbWQoYnVp
bGRfY3h4X2NtZChhcmdzKSkKKyAgcmVuYW1lX3NfZmlsZShhcmdzKQorICBydW5fY21kKGJ1aWxk
X3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3MpKQorICBydW5fY21kKGJ1aWxkX2FzX2NtZChhcmdzLCBp
X3BhdGgpKQorZW5zdXJlCisgICRpbnRlcm1lZGlhdGVfcGF0aHMuZWFjaCB7IHxwfAorICAgIGlm
IEZpbGUuZXhpc3Q/KHApCisgICAgICBGaWxlLmRlbGV0ZShwKQorICAgIGVuZAorICB9CitlbmQK
KworZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVz
b2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTgzMmQ4ZDAxZjI5
Y2FhYTM2YTlkNmMwYjE0OTYxZDdhNDhiN2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAs
MCArMSwzOTkgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuIEwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IFJlc29sdmUgY29uZmxpY3RzIGluIGAuZmlsZWAgZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIgZmls
ZXMuIFRob3NlCisjIG1heSByZXN1bHQgZnJvbSBpbmxpbmUgYXNtIHN0YXRlbWVudHMgd2hpY2gg
dGhlbXNlbHZlcyBoYXZlIGAuZmlsZWAKKyMgZGlyZWN0aXZlcy4gQXMgdGhlIGlubGluZSBhc20g
aGFzIG5vIGlkZWEgd2hhdCB0aGUgbmV4dCBmcmVlIGZpbGUKKyMgbnVtYmVyIGlzLCBpdCdsbCBn
ZW5lcmFsbHkgaGF2ZSBpdHMgb3duIG51bWJlcmluZy4gVG8gZ2V0IHRoaW5ncyB0bworIyB3b3Jr
IHdlIGhhdmUgdG8KKyMgMS4gcmVtYXAgY29uZmxpY3RpbmcgZmlsZSBudW1iZXJzCisjIDIuIGNo
YW5nZSBgLmxvY2AgZGlyZWN0aXZlcyB0byByZWZlcmVuY2UgdGhlIGFwcHJvcHJpYXRlIGZpbGUg
bnVtYmVyLgorIworIyBUbyBiZSBhYmxlIHRvIGRvIHRoYXQsIHdlIG5lZWQgc29tZSBjb25jZXB0
IG9mICJzY29wZSIsIGkuZS4gd2hpY2gKKyMgc2V0IG9mIGZpbGVzIGEgZ2l2ZW4gYC5sb2NgIGRp
cmVjdGl2ZSByZWZlcnMgdG8uIFdlIGdldCB0aGF0IGJ5CisjIHRyYWNraW5nIHRoZSAjQVBQLyNO
T0FQUCBkaXJlY3RpdmVzIHRoYXQgdGhlIGNvbXBpbGVyIGVtaXRzIHdoZW4gaXQKKyMgc3dpdGNo
IHRvL2Zyb20gaW5saW5lIGFzbS4KKyMKKyMgSW4gZWZmZWN0LCB3ZSBjb252ZXJ0CisjICAgICAu
ZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAxICJiYXIiCisjICAgICAuZmls
ZSAyICJmb28iCisjICAgICAubG9jIDEsIFgKKyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZ
CisjIHRvCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAyICJi
YXIiCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAubG9jIDIsIFgKKyMgICAgICNOT0FQUAor
IyAgICAgLmxvYyAxLCBZCisKK3JlcXVpcmUgJ3BhdGhuYW1lJworcmVxdWlyZSAnc3RyaW5naW8n
CityZXF1aXJlICdzdHJzY2FuJworCitQYXJzZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1Y3QubmV3KDpz
dHIpCitQYXJzZVJlc3VsdEVycm9yID0gU3RydWN0Lm5ldyg6ZXJyb3IpCisKKyMgUGFyc2VzIHRo
ZSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwgZm9sbG93aW5nIGEgLmZpbGUgYXNzZW1ibGVyIGRpcmVj
dGl2ZQorY2xhc3MgRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIKKyAgZGVmIGluaXRpYWxpemUocykK
KyAgICBAcyA9IFN0cmluZ1NjYW5uZXIubmV3KHMpCisgIGVuZAorICBkZWYgcGFyc2UKKyAgICBA
cy5za2lwKC9ccyovKQorCisgICAgIyBXZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzdHJpbmcgbGl0
ZXJhbAorICAgIHJldCA9IHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgcmV0LnJlc3BvbmRf
dG8/KDplcnJvcikKKyAgICAgIHJldHVybiByZXQKKyAgICBlbmQKKworICAgIEBzLnNraXAoL1xz
Ki8pCisgICAgaWYgbm90IEBzLmVvcz8KKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5l
dygiRXhwZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0ZXIgI3tyZXQuc3RyfSIpCisgICAgZW5kCisgICAg
cmV0dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcocmV0LnN0cikKKyAgZW5kCisgIGRlZiBwYXJz
ZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIEBzLnNjYW4oLyIvKS5uaWw/CisgICAgICBlcnIgPSAi
RXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgYXQgYCN7QHMuc3RyaW5nfWAgKHBvcyAje0BzLnBvc30p
IgorICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAgICBlbmQKKyAgICBw
YXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgZW5kCisgIGRlZiBwYXJzZV91bnRp
bF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgICBzdGFydF9wb3MgPSBAcy5wb3MKKyAgICB3aGls
ZSB0cnVlCisgICAgICAjIFNlYXJjaCBmb3Igb3VyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAg
QHMuc2tpcCgvW14iXFxdKy8pCisgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgIGlmIEBz
LnNjYW4oL1xcLykKKyAgICAgICAgICAjIFdoZW4gd2Ugc2VlICdcXCcsIGNvbnN1bWUgYm90aCBj
aGFyYWN0ZXJzIHNvIHRoYXQgdGhlCisgICAgICAgICAgIyBzZWNvbmQgJ1wnIHdpbGwgbm90IGJl
IHRyZWF0ZWQgYXMgYW4gZXNjYXBlIGNoYXIuCisgICAgICAgICAgbmV4dAorICAgICAgICBlbHNp
ZiBAcy5zY2FuKC8iLykKKyAgICAgICAgICAjIEZvciAnXCInLCBjb25zdW1lIGJvdGggY2hhcmFj
dGVycyBzbyB0aGF0IHRoZSAnIicgd2lsbCBub3QKKyAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUg
c3RyaW5nLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAg
IGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAjICciJyB3aXRob3V0IGEgcHJlY2VlZGluZyAn
XCc7IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4KKyAgICAgICAgIyBXZSdyZSBhbHJlYWR5IHBhc3Qg
dGhlICciJywgc28gdGhlIGxpdGVyYWwgZW5kcyBhdCAtMgorICAgICAgICAjIGNoYXJhY3RlcnMu
CisgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KEBzLnN0cmluZ1tzdGFydF9w
b3MuLihAcy5wb3MgLSAyKV0pCisgICAgICBlbHNpZiBAcy5lb3M/CisgICAgICAgIGVyciA9ICJV
bnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwgKHN0YXJ0aW5nIGF0IHBvcyAje3N0YXJ0X3Bvc30g
aW4gI3tAcy5zdHJpbmd9IgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoZXJy
KQorICAgICAgZW5kCisgICAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgKCN7QHMuaW5zcGVjdH0p
IgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgcHIg
PSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcoc3RyKS5wYXJzZQorICBpZiByZXMuaXNfYT8o
QXJyYXkpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgb3V0Zi5wdXRzKCJQ
YXJzZSByZXN1bHQgaXMgYCN7cHIuZXJyb3J9YCBidXQgZXhwZWN0ZWQgI3tyZXN9IikKKyAgICAg
IHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIGlmIHByLnN0ciAhPSByZXNbMF0KKyAgICAgIG91
dGYucHV0cygiUGFyc2VkIHBhdGggYCN7cHIuc3RyfWAgYnV0IGV4cGVjdGVkIGAje3Jlc1swXX1g
IikKKyAgICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lm
IHJlcy5pc19hPyhTdHJpbmcpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAg
aWYgbm90IHByLmVycm9yLmRvd25jYXNlLmluY2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAg
ZXJyID0gIkVycm9yIG1lc3NhZ2UgYCN7cHIuZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVj
dGVkIHN1YnN0cmluZyBgI3tyZXN9YCIKKyAgICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAg
cmV0dXJuIGZhbHNlCisgICAgICBlbmQKKyAgICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAg
b3V0Zi5wdXRzKCJFeHBlY3RlZCBlcnJvciAoI3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFy
c2UgI3twci5zdHJ9IikKKyAgICByZXR1cm4gZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRl
cm5hbCBlcnJvciAje3Jlcy5jbGFzc30iCisgIGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBu
cl9zdWNjZWVkZWQgPSAwCisgIHRlc3RzID0gWworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsn
ImZvby9iYXIiJywgWyJmb28vYmFyIl1dLAorCisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBz
dHJpbmcgbGl0ZXJhbCJdLAorCisgICAgWyciZm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBs
aXRlcmFsIl0sCisKKyAgICAjICJmb29cIgorICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRl
ZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIs
IFsiZm9vXHg1Y1x4NWMiXV0sCisKKyAgICAjIENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJi
YXIiJywgWydmb29cImJhciddXSwKKworICAgICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyci
Zm9vL2JhciInLCBbJ2Zvby9iYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAg
IFsnIi9iYXIiJywgWycvYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0
d28gY29tcG9uZW50cworICAgIFsnIi9iYXIvYmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAj
IENhbiBkZXRlY3Qgc3RyYXkgdG9rZW4KKyAgICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQg
b2YgbGluZSJdLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVz
cGFjZQorICAgIFsnImZvbyJiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMg
V2lsbCBub3QgYWNjZXB0IGNsYW5nLXN0eWxlIC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3Jr
aW5nX2RpcmVjdG9yeSIgInBhdGgiJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBv
dXRmID0gU3RyaW5nSU8ubmV3KCIiKQorICB0ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlm
IHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgICAgICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAor
ICB9CisgIGlmIG5yX3N1Y2NlZWRlZCAhPSB0ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91
dGYuc3RyaW5nKQorICAgICRzdGRlcnIucHV0cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25y
X3N1Y2NlZWRlZH0vI3t0ZXN0cy5zaXplfSIpCisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisj
IEtlZXAgdHJhY2sgb2Ygd2hpY2ggZmlsZW5vIGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0
aC4gV2UgY2FsbAorIyB0aGUgZmlsZW5vIGEgJ3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2Vy
CisgIEBAbmV4dF9mcmVlID0gMSAgICMgTmV4dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMg
PSB7fSAjIE1hcHMgcGF0aCAtPiBnbG9iYWwgc2xvdAorICBkZWYgaW5pdGlhbGl6ZShwYXJlbnQp
CisgICAgQHBhcmVudCA9IHBhcmVudAorICAgICMgVGhpcyBtYXBzIGZyb20gb3VyIG93biBsb2Nh
bCBzbG90cyAoaS5lLiB3aXRoaW4gYW4gQVBQIHNlY3Rpb24pCisgICAgIyB0byBhIGdsb2JhbCBz
bG90LgorICAgIEBzbG90X21hcCA9IHt9CisgIGVuZAorICAjIFdlIG1ha2Ugc3VyZSB0aGF0IC5m
aWxlIGRpcmVjdGl2ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzYW1lIHBhdGggYXJlCisgICMgZGVkdXAn
ZCwgaS5lLiBpZiB3ZSBzZWUKKyAgIyAgICAgLmZpbGUgTiAiL3BhdGgvdG8vaW5jbHVkZS5oIgor
ICAjICAgICAuLi4KKyAgIyAgICAgLmZpbGUgTSAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjIHRo
ZW4gdGhlICJsb2NhbCIgTiwgTSBzbG90cyB3aWxsIGJlIG1hcHBlZCB0byB0aGUgc2FtZSAiZ2xv
YmFsIiBzbG90LgorICBkZWYgcmVnaXN0ZXJfcGF0aChwYXRoLCBzbG90KQorICAgIGN1cnJfc2xv
dCA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBjdXJyX3Nsb3QubmlsPworICAgICAgIyBXZSBoYXZl
bid0IHNlZW4gdGhpcyBmaWxlIGJlZm9yZQorICAgICAgaWYgc2xvdCA8PSBAQG5leHRfZnJlZQor
ICAgICAgICAjIERlc2lyZWQgZmlsZSBzbG90IGVpdGhlciBjbGFzaGVzIHdpdGggYW4gZXhpc3Rp
bmcgb25lLCBvciBpcworICAgICAgICAjIHRoZSBuZXh0IG9uZSB0byBiZSBhbGxvY2F0ZWQuIElu
IGVpdGhlciBjYXNlLCBhc3NpZ24gdGhlCisgICAgICAgICMgbmV4dCBmcmVlIHNsb3QuCisgICAg
ICAgIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICAgIGVsc2UKKyAgICAgICAgIyBEb24ndCBh
bGxvdyBzbG90IGdhcHMuIFRlY2huaWNhbGx5IHdlIGNvdWxkIGhhbmRsZSB0aGVtLCBidXQKKyAg
ICAgICAgIyB0aGV5IHNob3VsZCBuZXZlciBoYXBwZW47IGJhaWwgbm93IHJhdGhlciB0aGFuIHBh
cGVyaW5nIG92ZXIKKyAgICAgICAgIyBhbiBlYXJsaWVyIGVycm9yLgorICAgICAgICAkc3RkZXJy
LnB1dHMoIkZpbGUgd2FudHMgc2xvdCAje3Nsb3R9IGJ1dCBvbmx5IHNlZW4gI3tAQG5leHRfZnJl
ZX0gc28gZmFyIikKKyAgICAgICAgZXhpdCgyKQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
IyBXZSd2ZSBhbHJlYWR5IGFzc2lnbmVkIGEgc2xvdCBmb3IgdGhpcyBmaWxlLgorICAgIGVuZAor
ICAgIEBzbG90X21hcFtzbG90XSA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBAc2xvdF9tYXBbc2xv
dF0ubmlsPworICAgICAgcmFpc2UgIkRpZG4ndCBtYXAgbG9jYWwgc2xvdCAje3Nsb3R9IgorICAg
IGVuZAorICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgZm9yIHBhdGgKKyAgZGVmIHNsb3Rf
Zm9yX3BhdGgocGF0aCkKKyAgICByZXR1cm4gQEBwYXRoc1twYXRoXQorICBlbmQKKyAgIyBSZXR1
cm4gZ2xvYmFsIHNsb3QgdGhhdCB3aWxsIHJlcGxhY2UgdGhlIGxvY2FsIHNsb3QKKyAgZGVmIHJl
bWFwX3Nsb3Qoc2xvdCkKKyAgICByZXQgPSBuaWwKKyAgICBpZiBAc2xvdF9tYXAuc2l6ZSA+IDAK
KyAgICAgICMgSWYgdGhlIGN1cnJlbnQgTk9fQVBQIHNlZ21lbnQgaGFzIGRlZmluZWQgYSAuZmls
ZSwgb25seSBsb29rCisgICAgICAjIGluIHRoZSBjdXJyZW50IEZpbGVTbG90VHJhY2tlci4gVGhp
cyBpcyB0aGUgY2FzZSBmb3IgYQorICAgICAgIyB0b3AtbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1l
bnQuCisgICAgICByZXQgPSBAc2xvdF9tYXBbc2xvdF0KKyAgICBlbHNpZiBub3QgQHBhcmVudC5u
aWw/CisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBub3QgZGVmaW5l
ZCBhIC5maWxlLCBjbGVhcmx5CisgICAgICAjIGFsbCAubG9jIGRpcmVjdGl2ZXMgcmVmZXIgdG8g
ZmlsZXMgZGVmaW5lZCBpbiB0aGUgQVBQCisgICAgICAjIHBhcnQuIFRoaXMgaXMgdGhlIGNhc2Ug
Zm9yIG5vbi10b3AtbGV2ZWwgaW5saW5lIGFzbQorICAgICAgIyBzdGF0ZW1lbnRzLgorICAgICAg
cmV0ID0gQHBhcmVudC5yZW1hcF9zbG90KHNsb3QpCisgICAgZW5kCisgICAgaWYgcmV0Lm5pbD8K
KyAgICAgIHJhaXNlICJObyBnbG9iYWwgc2xvdCBmb3IgI3tzbG90fSIKKyAgICBlbmQKKyAgICBy
ZXQKKyAgZW5kCisgIHByaXZhdGUKKyAgZGVmIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBA
QHBhdGhzW3BhdGhdID0gQEBuZXh0X2ZyZWUKKyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAor
ZW5kCisKKyMgUmV0dXJuIHNlcXVlbnRpYWwgbGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Yg
d2hldGhlciB3ZSdyZSBpbiBhbgorIyAjQVBQIG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNt
UmVhZGVyCisgIGF0dHJfcmVhZGVyIDppbl9hcHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25v
YXBwLCA6bm9hcHBfdG9fYXBwCisgIGRlZiBpbml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAg
QGYucmV3aW5kCisgICAgQGxpbmVuciA9IDAKKyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFz
dF9zd2l0Y2ggPSAic3RhcnQgb2YgZmlsZSIgIyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisg
IGRlZiBuZXh0X2xpbmUKKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAg
aWYgbC5uaWw/CisgICAgICAgIHJldHVybiBsCisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0g
MQorICAgICAgaWYgL14jXHMqQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisg
ICAgICAgICAgcmFpc2UgIiNBUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNB
UFAgKCN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1
ZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19h
cHAKKyAgICAgICAgICBAbm9hcHBfdG9fYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVu
ZAorICAgICAgaWYgL14jXHMqTk9fQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBub3QgQGlu
X2FwcAorICAgICAgICAgIHJhaXNlICIjTk9BUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCB3YXMg
bm90IGluICNBUFAgKGxhc3Qgc3dpY2ggYXQgI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5k
CisgICAgICAgIEBpbl9hcHAgPSBmYWxzZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5y
CisgICAgICAgIGlmIEBhcHBfdG9fbm9hcHAKKyAgICAgICAgICBAYXBwX3RvX25vYXBwLmNhbGwo
KQorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGwKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgRmlsZUNvbmZsaWN0UmVzb2x2ZXIKKyAgQEBmaWxlX3JlID0gL15ccypb
Ll1maWxlXHMrKD88c2xvdD5cZCspXHMrKD88cmVzdD4uKikkLworICBAQGxvY19yZSA9IC9eKD88
d2hpdGUxPlxzKilbLl1sb2MoPzx3aGl0ZTI+XHMrKSg/PHNsb3Q+XGQrKSg/PHJlc3Q+XHMrXGQr
LiopJC8KKyAgZGVmIGluaXRpYWxpemUoaW5mLCBvdXRmKQorICAgIEBvdXRmID0gb3V0ZgorICAg
IEB0cmFja2VycyA9IFtGaWxlU2xvdFRyYWNrZXIubmV3KG5pbCldCisgICAgQGFzbV9yZWFkZXIg
PSBBc21SZWFkZXIubmV3KGluZikKKyAgICAjIFdoZW4gd2UgZW50ZXIgYW4gI0FQUCBzZWN0aW9u
IChpLmUuIGFzbSBlbWl0dGVkIGZyb20gYW4gZXhwYW5kZWQKKyAgICAjIGlubGluZSBhc20gc3Rh
dGVtZW50KSwgY3JlYXRlIGEgbmV3IGZpbGUgdHJhY2tlciwgaW4gZWZmZWN0CisgICAgIyBwcm9j
ZXNzaW5nIHRoZSAuZmlsZSBhbmQgLmxvYyBkaXJlY3RpdmVzIGluIGEgbmV3ICJuYW1lc3BhY2Ui
CisgICAgIyAoYXMgZmFyIGFzIHRoZSBmaWxlIG51bWJlcnMgYXJlIGNvbmNlcm5lZCkuIFRoaXMg
aXMgYW4gYXJyYXksCisgICAgIyBidXQgaW4gcHJhY3RpY2UgdGhlIHNpemUgd2lsbCBlaXRoZXIg
YmUgMSAoTk9BUFApIG9yIDIgKEFQUCkuCisgICAgQGFzbV9yZWFkZXIuYXBwX3RvX25vYXBwID0g
UHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QHRyYWNrZXJzLnBvcAorICAgIH0KKyAgICBAYXNtX3JlYWRlci5ub2FwcF90b19hcHAgPSBQcm9j
Lm5ldyB7IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJh
Y2tlcnMucHVzaChGaWxlU2xvdFRyYWNrZXIubmV3KEB0cmFja2Vyc1stMV0pKQorICAgIH0KKyAg
ZW5kCisgIGRlZiBydW4KKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGFzbV9yZWFkZXIubmV4
dF9saW5lCisgICAgICBicmVhayB1bmxlc3MgbAorCisgICAgICBtZCA9IEBAZmlsZV9yZS5tYXRj
aChsKQorICAgICAgaWYgbWQKKyAgICAgICAgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgICAgIG5l
eHQKKyAgICAgIGVuZAorICAgICAgbWQgPSBAQGxvY19yZS5tYXRjaChsKQorICAgICAgaWYgbWQK
KyAgICAgICAgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAg
ICBAb3V0Zi53cml0ZShsKQorICAgICAgbmV4dAorICAgIGVuZAorICBlbmQKKyAgZGVmIGxvY19k
aXJlY3RpdmUobWQpCisgICAgdHJhY2tlciA9IEB0cmFja2Vycy5sYXN0CisgICAgc2xvdCA9IHRy
YWNrZXIucmVtYXBfc2xvdChtZFs6c2xvdF0udG9faSkKKyAgICBAb3V0Zi5wdXRzKCIje21kWzp3
aGl0ZTFdfS5sb2Mje21kWzp3aGl0ZTJdfSN7c2xvdH0je21kWzpyZXN0XX0iKQorICBlbmQKKyAg
ZGVmIGZpbGVfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorCisg
ICAgcHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcobWRbOnJlc3RdKS5wYXJzZQorICAg
IGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgICRzdGRlcnIucHV0cygiRXJyb3IgcGFy
c2luZyBwYXRoIGFyZ3VtZW50IHRvIC5maWxlIGRpcmVjdGl2ZTogI3twci5lcnJvcn0iKQorICAg
ICAgZXhpdCgyKQorICAgIGVuZAorCisgICAgcGF0aCA9IHByLnN0cgorICAgIHRyYWNrZXIucmVn
aXN0ZXJfcGF0aChwYXRoLCBtZFs6c2xvdF0udG9faSkKKworICAgIHNsb3QgPSB0cmFja2VyLnNs
b3RfZm9yX3BhdGgocGF0aCkKKyAgICBAb3V0Zi5wdXRzKCJcdC5maWxlXHQje3Nsb3R9ICN7bWRb
OnJlc3RdfSIpCisgIGVuZAorZW5kCisKKyMgRmlyc3QsIG1ha2Ugc3VyZSBvdXIgdGVzdHMgc3Rp
bGwgcGFzcy4gVGhpcyBvbmx5IHRha2VzIGEgZnJhY3Rpb24gb2YKKyMgb3VyIHJ1bnRpbWUgYW5k
IGVuc3VyZXMgdGhlIHRlc3RzIHdpbGwgZ2V0IHJ1biBieSBhbnlvbmUgdHJ5aW5nIG91dAorIyBj
aGFuZ2VzIHRvIHRoaXMgZmlsZS4KK3NlbGZ0ZXN0CisKK2lmIEFSR1Yuc2l6ZSAhPSAyCisgICRz
dGRlcnIucHV0cygiVXNhZ2U6ICN7JDB9IGlucHV0IG91dHB1dCIpCisgIGV4aXQoMikKK2VuZAor
CitpbnBhdGgsIG91dHBhdGggPSBBUkdWLmNvbGxlY3QgeyB8bnwgUGF0aG5hbWUubmV3KG4pIH0K
KworaWYgbm90IGlucGF0aC5maWxlPworICAkc3RkZXJyLnB1dHMoIk5vdCBhIHJlZ3VsYXIgZmls
ZTogYCN7aW5wYXRofWAiKQorICBleGl0KDIpCitlbmQKKworaWYgaW5wYXRoLmV4dG5hbWUudXBj
YXNlICE9ICIuUyIKKyAgJHN0ZGVyci5wdXRzKCJ3YXJuaW5nOiBmaWxlIGAje2lucGF0aH1gIGRv
ZXNuJ3QgaGF2ZSBhIGAuc2Agb3IgYC5TYCBleHRlbnNpb24uIEdvaW5nIG9uIGFueXdheS4uLiIp
CitlbmQKKworRmlsZS5vcGVuKGlucGF0aCwgInIiKSB7IHxpbmZ8CisgIEZpbGUub3BlbihvdXRw
YXRoLCAidyIpIHsgfG91dGZ8CisgICAgRmlsZUNvbmZsaWN0UmVzb2x2ZXIubmV3KGluZiwgb3V0
ZikucnVuCisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2I2MzhiYzQw
MTFjOWNkNDRlMTYyOTk3ZTA5M2M4ZTA0ZTQyMGEyLi5lNmRlYjAxNDI1MjA0MDhmOGM3ODEwMGFh
Njg2NWRhNWRmODdkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC02NzUsOCAr
Njc1LDYgQEAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAogbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCiBsbGludC9MTEludFRodW5rcy5jcHAKLS8v
IEZJWE1FOiBXZSBjYW4ndCBidW5kbGUgdGhpcyBmaWxlIGR1ZSB0byBhIGNsYW5nIGJ1Zy4KLWxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIEBuby11bmlmeQogCiBwYXJzZXIvTGV4ZXIuY3Bw
CiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEz
YTlmYjMzZTJmZjIzNTJjNjllYmE3Ni4uZDUxMDMxMzE5YTE4NzEyMzUzOGI2N2I2ZDNkMTRhYWZm
ZjA0N2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcApAQCAtNTM3LDggKzUzNywyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVj
dXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSog
dm0sCiAjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRp
ZgogCisjaWYgQ09NUElMRVIoR0NDKQorLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4gR0RC
IHdoZXJlLCBpZiB0aGUgY29tcGlsYXRpb24gdW5pdAorLy8gZG9lc24ndCBoYXZlIGFueSBhZGRy
ZXNzIHJhbmdlIGluZm9ybWF0aW9uLCBpdHMgbGluZSB0YWJsZSB3b24ndAorLy8gZXZlbiBiZSBj
b25zdWx0ZWQuIEVtaXQge2JlZm9yZSxhZnRlcn1fbGxpbnRfYXNtIHNvIHRoYXQgdGhlIGNvZGUK
Ky8vIGVtaXR0ZWQgaW4gdGhlIHRvcCBsZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudCBpcyB3aXRo
aW4gZnVuY3Rpb25zCisvLyB2aXNpYmxlIHRvIHRoZSBjb21waWxlci4gVGhpcyB3YXksIEdEQiBj
YW4gcmVzb2x2ZSBhIFBDIGluIHRoZQorLy8gbGxpbnQgYXNtIGNvZGUgdG8gdGhpcyBjb21waWxh
dGlvbiB1bml0IGFuZCB0aGUgc3VjY2Vzc2Z1bGx5IGxvb2sKKy8vIHVwIHRoZSBsaW5lIG51bWJl
ciBpbmZvcm1hdGlvbi4KK01BUktFUl9TWU1CT0woYmVmb3JlX2xsaW50X2FzbSkKKyNlbmRpZiAv
KiBXVEZfQ09NUElMRVJfR0NDICovCisKIC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBv
ZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZv
ciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5h
c20uCiAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisjaWYgQ09NUElMRVIoR0NDKQorTUFS
S0VSX1NZTUJPTChhZnRlcl9sbGludF9hc20pCisjZW5kaWYgLyogV1RGX0NPTVBJTEVSX0dDQyAq
LworCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFiMmZhMTZlNjU4OGI2ODMyODlhYzA0Nzcy
N2I3ZjBlLi4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1OWVkMzc4YWRmODMyOWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCkBAIC04OSw2ICs4OSwxMCBA
QCBkZWYgc2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9ucygpCiAgICAgICAgICAgICAgICAgZW5k
CiAgICAgICAgICAgICBlbmQKICAgICAgICAgZW5kCisgICAgZWxzaWYgRU5WWyJDTUFLRV9DWFhf
Q09NUElMRVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAgICAgIEVOVlsiR0NDX09GRkxJTkVBU01f
U09VUkNFX01BUCJdID09ICdPTicKKyAgICAgICMgQWxsIEdDQyB2ZXJzaW9ucyB0aGF0IGNhbiBi
dWlsZCBKU0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9ucworICAgICAgcmV0dXJuIHRydWUKICAg
ICBlbmQKIAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5o
IGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCA0Mzc0Y2IzYWYyM2M4OWJiNTM0OTQ2
OWRjODhlZmM2NDQ2MTRhNDdjLi40YzA2OTEyNTFmY2M2ZmE3ODllYjQxZTRhMzM4YWVjMDhiYmMx
YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIsMTEgQEAKICNkZWZpbmUgV0FSTl9VTlVT
RURfUkVUVVJOCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKE1BUktFUl9TWU1CT0wpICYmIENPTVBJ
TEVSKEdDQykKKyNkZWZpbmUgTUFSS0VSX1NZTUJPTChuYW1lKSBcCisgICAgX19hdHRyaWJ1dGVf
XygoX19ub19yZW9yZGVyX18pKSB2b2lkIG5hbWUodm9pZCkgeyBfX2FzbV9fKCIiKTsgfQorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihNU1ZDKQogI2Rl
ZmluZSBfX2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFr
ZQppbmRleCBhNTc0ZWY4YzIyMmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIxLi5lYTEzNjI0
ODNlNzgwZTQxNWNjODU0OGNjNmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0NvbW1vbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5j
bWFrZQpAQCAtMTEyLDYgKzExMiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAgICBzZXQoQ01B
S0VfU0hBUkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtV2wsLS1n
ZGItaW5kZXgiKQogZW5kaWYgKCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVG
QVVMVCBPRkYpCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciIE9SIENNQUtF
X0JVSUxEX1RZUEUgU1RSRVFVQUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQoR0NDX09GRkxJ
TkVBU01fU09VUkNFX01BUF9ERUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9uKEdDQ19PRkZM
SU5FQVNNX1NPVVJDRV9NQVAKKyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1hdGlvbiBmb3Ig
b2ZmbGluZWFzbS1nZW5lcmF0ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQ
X0RFRkFVTFR9KQorCiAjIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAgLSBBdCB0aGlz
IG1vbWVudCwgT3Blbk1QIGlzIG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRh
dGlvbgogIyAgICB0byBuYXRpdmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXphdGlvbiBvZiB0
aGUgU1ZHIGZpbHRlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395262</attachid>
            <date>2020-04-02 06:05:11 -0700</date>
            <delta_ts>2020-04-03 06:50:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200402130508.patch</filename>
            <type>text/plain</type>
            <size>28481</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi43NTQxZWI3NDNmMDk0NWNi
NDkyZDFmNjgxNjAyZWU3ZjM4ZGZiNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
aGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVidWcK
KyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0YXRp
b25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZpbGUg
ZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAgICAg
IHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGlsYXRp
b24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lmaWNh
bGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQtaW4g
YXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMsIGJ1
dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQg
YXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cg
dXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5nbGUg
c291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciBp
dC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcgd2l0
aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBkZWJ1
ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJbmZv
IGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4KKwor
ICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBmb3Ig
YSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRoZSBh
ZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmlsZS4g
SW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZlIHRv
IGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNzkxYjdmZTkzOWU3
MjVhYzE4MjZjMTc0YWRhZjU5OGEzOTY0YzI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQ
VVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQog
ICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20u
cmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtPRkZM
SU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0ZWNv
ZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFz
bQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9v
ZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
ICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkPFRB
UkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAgQ09N
TUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtDTUFL
RV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZGTElO
RUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQ8
VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAgICBD
T01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElSRUNU
T1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJTSkK
QEAgLTM0OCwxMCArMzQ4LDE3IEBAIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAg
ICAgICAgQ09NTUFORCAke01BU01fRVhFQ1VUQUJMRX0gJHtMTElOVF9NQVNNX0ZMQUdTfSAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xldmVsSW50ZXJwcmV0ZXJXaW4u
b2JqICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRlcnBy
ZXRlcldpbi5hc20KICAgICAgICAgVkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xl
dmVsSW50ZXJwcmV0ZXJXaW4ub2JqKQorICAgIGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0
ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKQogZWxzZSAoKQotICAg
IGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKLSAgICAgICAgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9MTEludEFzc2VtYmx5LmgKLSAgICApCisgICAgIyBB
cyB0aGVyZSdzIHBvb3IgdG9vbGNoYWluIHN1cHBvcnQgZm9yIHVzaW5nIGAuZmlsZWAgZGlyZWN0
aXZlcyBpbgorICAgICMgaW5saW5lIGFzbSAoaS5lLiB0aGVyZSdzIG5vIHdheSB0byBhdm9pZCBj
bGFzaGVzIHdpdGggdGhlIGAuZmlsZWAKKyAgICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVkIGJ5IHRo
ZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAgICMgaW50cm9kdWNlIGEg
cG9zdHByb2Nlc3NpbmcgcGFzcyBmb3IgdGhlIGFzbSB0aGF0IGdldHMgYXNzZW1ibGVkIGludG8K
KyAgICAjIGFuIG9iamVjdCBmaWxlLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBmb3IgTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKKyAgICAjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVzIHRvIGlu
dHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyAgICAjIHNpbmdsZSBzb3VyY2UgZmls
ZSwgc28gd2UgbmVlZCB0byBjcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQgZm9yIGl0LgorICAgIGFk
ZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwCisgICAgICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vJHtMTEludE91dHB1dH0pCiBlbmRpZiAoKQogCiAjIFdlYkFzc2VtYmx5IGdlbmVyYXRvcgpA
QCAtMTM2Miw2ICsxMzY5LDI5IEBAIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExMSW50T2Zm
c2V0c0V4dHJhY3RvciBTWVNURU0gUFJJVkFURSAke0phdmFTY3JpcHRDb3JlCiAKIGFkZF9zdWJk
aXJlY3Rvcnkoc2hlbGwpCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50
ZXJwcmV0ZXJMaWIKKyAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0Q29y
ZSxJTkNMVURFX0RJUkVDVE9SSUVTPiIpCisKK2lmIChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFgg
QU5EIEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVApCisgICAgbWVzc2FnZShTVEFUVVMgIkVuYWJs
aW5nIGFzbSBwb3N0cHJvY2Vzc2luZyIpCisKKyAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9M
QVVOQ0hFUiAiJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElSfS9wb3N0cHJvY2Vz
cy1hc20iKQorICAgIGdldF90YXJnZXRfcHJvcGVydHkoUFJPUF9SVUxFX0xBVU5DSF9DT01QSUxF
IExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICBpZiAoUFJP
UF9SVUxFX0xBVU5DSF9DT01QSUxFKQorICAgICAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9M
QVVOQ0hFUiAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSAke1BST1BfUlVMRV9MQVVO
Q0hfQ09NUElMRX0iKQorICAgIGVuZGlmICgpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBMb3dM
ZXZlbEludGVycHJldGVyTGliCisgICAgICAgIFBST1BFUlRZIFJVTEVfTEFVTkNIX0NPTVBJTEUg
IiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0iKQorCisgICAgIyBQYXNzIGluIHRoZSBm
aWxlbmFtZSBhcyBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIHNvIHRoYXQKKyAgICAj
IHRoZSB3cmFwcGVyIGNhbiBhY2N1cmF0ZWx5IGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZS4KKyAg
ICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoImxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwIgorICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIlBP
U1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCitlbmRpZiAoKQor
CitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMgTG93TGV2ZWxJbnRlcnByZXRl
ckxpYikKKwogV0VCS0lUX0NPTVBVVEVfU09VUkNFUyhKYXZhU2NyaXB0Q29yZSkKIFdFQktJVF9X
UkFQX1NPVVJDRUxJU1QoJHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTfSkKIFdFQktJVF9GUkFNRVdP
UksoSmF2YVNjcmlwdENvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9wb3N0cHJvY2Vzcy1hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9wb3N0
cHJvY2Vzcy1hc20KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwYTMxMmVlNGE3ODE0OWZjOWU5ZWUxMzQzODFhYzRm
NmNkMDBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Bvc3Rwcm9jZXNzLWFzbQpAQCAtMCwwICsxLDE5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQor
CisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgV3JhcHBlciBmb3IgYSAuY3BwIC0+IC5vIGNvbXBpbGF0
aW9uIGNvbW1hbmQuIEl0CisjIDEuIGNvbnZlcnRzIHRoZSBjb21tYW5kIHRvIGdlbmVyYXRlIGEg
YC5zJyBmaWxlCisjIDIuIHJ1bnMgdGhlIEFTTSBwb3N0cHJvY2Vzc29yIG9uIGl0IHRvIGdlbmVy
YXRlIHRoZSBmaW5hbCBgLnNgIGZpbGUKKyMgMy4gYXNzZW1ibGVzIHRoZSBgLnNgIGZpbGUgdG8g
YSBgLm9gIGZpbGUKKworJGFzbV9zdWZmaXhfcHJlID0gIi5wcmUucyIKKyRhc21fc3VmZml4ID0g
Ii5zIgorJHBvc3Rwcm9jZXNzb3IgPSAiI3tGaWxlLmRpcm5hbWUoJDApfS9yZXNvbHZlLWFzbS1m
aWxlLWNvbmZsaWN0cy5yYiIKKworCiskaW50ZXJtZWRpYXRlX3BhdGhzID0gW10KKworIyBXZSBu
ZWVkIHRvIHdvcmsgd2l0aCBpbmRpY2VzIGEgbG90IGFuZCB1bmZvcnR1bmF0ZWx5ICdnZXRvcHRs
b25nJyBpbgorIyB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IGV4cG9zZSBvcHRpbmQsIHNv
IHdlJ3JlIGdvaW5nIHdpdGgKKyMgYXJyYXkgc2VhcmNoZXMgZm9yIHNpbXBsaWNpdHkuCitkZWYg
aW5kZXhfbm9mYWlsKGFyeSwgZiwgZXJybXNnKQorICBpZHggPSBhcnkuaW5kZXggeyB8ZWx8Cisg
ICAgZi5jYWxsKGVsKQorICB9CisgIGlmIGlkeC5uaWw/CisgICAgJHN0ZGVyci5wdXRzKGVycm1z
ZykKKyAgICBleGl0KDMpCisgIGVuZAorICBpZHgKK2VuZAorCisjIEZpbmQgYW5kIHJldHVybiB0
aGUgc291cmNlIGZpbGUgZm9yIHRoaXMgY29tcGlsYXRpb24gY29tbWFuZCwKKyMgcmVtb3Zpbmcg
aXQgZnJvbSB0aGUgYXJncy4gTm90ZSB0aGF0IHRoZSBwYXRoIChBKSBhcyBpdCBhcHBlYXJzIGhl
cmUKKyMgKGNvbWluZyBmcm9tIGEgY21ha2UgcnVsZSkgaXMgbGlrZWx5IHRvIGJlIGRpZmZlcmVu
dCB0byB0aGUKKyMgYW5vbnltb3VzIGFyZ3VtZW50IChCKSB0byB0aGUgY29tcGlsYXRpb24gY29t
bWFuZC4gSG93ZXZlciwgQSB3aWxsCisjIGJlIGEgc3VmZml4IG9mIEIuCisjCisjIEV4aXQgd2l0
aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHRoZXJlLiBUaGlzIGhhcyBhbHJlYWR5
CisjIGJlZW4gY2hlY2tlZCBieSBgY3h4LXdyYXBwZXJgLCBvdGhlcndpc2Ugd2Ugd291bGRuJ3Qg
YmUgcnVubmluZy4KK2RlZiBleHRyYWN0X2lucHV0IShhcmdzKQorICBwcmVmaXggPSAnLURQT1NU
UFJPQ0VTU19BU009JworCisgIGlkeCA9IGluZGV4X25vZmFpbChhcmdzLCBQcm9jLm5ldyB7IHxh
cmd8CisgICAgYXJnLnN0YXJ0X3dpdGg/KHByZWZpeCkKKyAgfSwgIk5vIGAtRFBPU1RQUk9DRVNT
X0FTTWAgYXJndW1lbnRgIikKKworICBwYXRoID0gYXJnc1tpZHhdW3ByZWZpeC5zaXplLi4tMV0K
KyAgaWYgcGF0aC5zaXplID09IDAKKyAgICAkc3RkZXJyLnB1dHMoIkVtcHR5IHBhdGggaW4gLURQ
T1NUUFJPQ0VTU19BU009IikKKyAgICBleGl0KDMpCisgIGVuZAorICAjIFdlIG9ubHkgbmVlZCB0
aGlzIHRvIGJlIGRlZmluZWQgZm9yIHRoZSBwcmVwcm9jZXNzb3IgKG5vdCBhbnkKKyAgIyB3cmFw
cGVyKSBmcm9tIG5vdyBvbi4KKyAgYXJnc1tpZHhdID0gIi1EUE9TVFBST0NFU1NfQVNNIgorICBy
ZXR1cm4gcGF0aAorZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYXJndW1lbnQg
ZW5kaW5nIGluIHRoaXMgc3VmZml4LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFy
Z3VtZW50IGlzbid0IHRoZXJlLiBXZSdyZSBvbmx5IGV2ZXIKKyMgY2FsbGVkIHdpdGggYXJndW1l
bnRzIHdlIGtub3cgYXJlIGJlaW5nIHBhc3NlZCBpbiBieSB0aGUgYnVpbGQKKyMgc3lzdGVtLgor
ZGVmIGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdz
LCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZy5lbmRfd2l0aD8od2FudGVk
KQorICAgICAgICAgICAgICAgfSwgIk5vIGFyZ3VtZW50IGVuZHMgd2l0aCAje3dhbnRlZH0iKQor
ZW5kCisKKyMgR2V0IGluZGV4IG9mIGEgZ2l2ZW4gYXJndW1lbnQuIERpZSBpZiBpdCdzIG5vdCB0
aGVyZS4KK2RlZiBnZXRfYXJnX2lkeChhcmdzLCB3YW50ZWQpCisgIGluZGV4X25vZmFpbChhcmdz
LCBQcm9jLm5ldyB7IHxhcmd8CisgICAgICAgICAgICAgICAgIGFyZyA9PSB3YW50ZWQKKyAgICAg
ICAgICAgICAgIH0sICJObyBgI3t3YW50ZWR9YCBhcmd1bWVudCIpCitlbmQKKworIyBHZXQgdGhl
IGluZGV4IG9mIGAtb2AgYW5kIHZlcmlmeSB0aGF0IGFuIGFyZ3VtZW50IGZvbGxvd3MuCisjIEJv
dGggYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3QgKGZyb20gb3VyIGJ1aWxkIHN5c3RlbSkuCitkZWYg
Z2V0X29faWR4KGFyZ3MpCisgIGkgPSBnZXRfYXJnX2lkeChhcmdzLCAnLW8nKQorICBpZiAoaSAr
IDEpID49IGFyZ3Muc2l6ZQorICAgICRzdGRlcnIucHV0cygiTm8gYXJndW1lbnQgdG8gYC1vYCIp
CisgICAgZXhpdCgzKQorICBlbmQKKyAgaQorZW5kCisKKyMgUnVuIGNvbW1hbmQgYW5kIGRpZSBp
ZiBpdCBmYWlscywgcHJvcGFnYXRpbmcgdGhlIGV4aXQgY29kZS4KK2RlZiBydW5fY21kKGNtZCkK
KyAgcGlkID0gUHJvY2Vzcy5zcGF3bigqY21kKQorICBQcm9jZXNzLndhaXRwaWQocGlkKQorICBy
ZXQgPSAkPworICBpZiBub3QgcmV0LnN1Y2Nlc3M/CisgICAgJHN0ZGVyci5wdXRzKCJFcnJvciBy
dW5uaW5nIGNtZDogI3tyZXR9IikKKyAgICBleGl0KHJldC5leGl0c3RhdHVzKQorICBlbmQKK2Vu
ZAorCisjIENvbnZlcnQKKyMgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLmNwcAorIyB0bworIyAg
ICBjeHggLW8gYmxhaC5zIC1TIGJsYWguY3BwCitkZWYgYnVpbGRfY3h4X2NtZChhcmdzKQorICBj
X2lkeCA9IGdldF9hcmdfaWR4KGFyZ3MsICctYycpCisgIG9faWR4ID0gZ2V0X29faWR4KGFyZ3Mp
CisKKyAgY3h4X2FyZ3MgPSBhcmdzLmNsb25lCisKKyAgY3h4X2FyZ3NbY19pZHhdID0gJy1TJwor
ICBvX3BhdGggPSBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGN4eF9hcmdzW29faWR4ICsgMV0gPSBv
X3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICAkaW50ZXJtZWRpYXRlX3BhdGhzIDw8
IGN4eF9hcmdzW29faWR4ICsgMV0KKyAgaWYgY3h4X2FyZ3Nbb19pZHggKyAxXSA9PSBvX3BhdGgK
KyAgICAkc3RkZXJyLnB1dHMoIk91dHB1dCBmaWxlIG5hbWUgbm90IGFuIG9iamVjdCBmaWxlOiBg
I3tvX3BhdGh9YCIpCisgICAgZXhpdCgzKQorICBlbmQKKyAgY3h4X2FyZ3MKK2VuZAorCisjIERv
CisjICAgICBtdiBibGFoLlMgYmxhaC5wcmUuUworIyBUaGUgcmVhc29uIHdlIGRvIGEgcmVuYW1l
IGluc3RlYWQgb2YgZGlyZWN0bHkgZ2VuZXJhdGluZyB0aGUgLnByZS5zCisjIGZpbGUgd2hlbiBj
b21waWxpbmcgaXMgc28gdGhhdCB0aGUgY29ycmVzcG9uZGluZyAuZHdvIGZpbGUgd2lsbCBoYXZl
CisjIHRoZSBjb3JyZWN0IG5hbWUgZW1iZWRkZWQuCitkZWYgcmVuYW1lX3NfZmlsZShhcmdzKQor
ICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisgIEZpbGUucmVuYW1lKG9fcGF0
aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpLAorICAgICAgICAgICAgICBvX3BhdGguc3ViKC9b
Ll1vJC8sICRhc21fc3VmZml4X3ByZSkpCitlbmQKKworIyBCdWlsZAorIyAgICAgcG9zdHByb2Nl
c3NvciBibGFoLnByZS5TIGJsYWguUworZGVmIGJ1aWxkX3Bvc3Rwcm9jZXNzb3JfY21kKGFyZ3Mp
CisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBwcF9hcmdzID0gWwor
ICAgICRwb3N0cHJvY2Vzc29yLAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhf
cHJlKSwgIyBpbnB1dAorICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpICMgb3V0
cHV0CisgIF0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0yXQorICAkaW50ZXJt
ZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTFdCisgIHBwX2FyZ3MKK2VuZAorCisjIEJ1aWxkCisj
ICAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguUworZGVmIGJ1aWxkX2FzX2NtZChhcmdzLCBpX3Bh
dGgpCisgIGlfaWR4ID0gZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3MsIGlfcGF0aCkKKyAgb19wYXRo
ID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIGFzX2FyZ3MgPSBhcmdzLmNsb25lCisg
IGlfcGF0aCA9IGFzX2FyZ3NbaV9pZHhdCisgIGFzX2FyZ3NbaV9pZHhdID0gb19wYXRoLnN1Yigv
Wy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgYXNfYXJncworZW5kCisKK2FyZ3MgPSBBUkdWLnRvX2EK
K2lfcGF0aCA9IGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisKK2JlZ2luCisgIHJ1bl9jbWQoYnVpbGRf
Y3h4X2NtZChhcmdzKSkKKyAgcmVuYW1lX3NfZmlsZShhcmdzKQorICBydW5fY21kKGJ1aWxkX3Bv
c3Rwcm9jZXNzb3JfY21kKGFyZ3MpKQorICBydW5fY21kKGJ1aWxkX2FzX2NtZChhcmdzLCBpX3Bh
dGgpKQorZW5zdXJlCisgICRpbnRlcm1lZGlhdGVfcGF0aHMuZWFjaCB7IHxwfAorICAgIGlmIEZp
bGUuZXhpc3Q/KHApCisgICAgICBGaWxlLmRlbGV0ZShwKQorICAgIGVuZAorICB9CitlbmQKKwor
ZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2
ZS1hc20tZmlsZS1jb25mbGljdHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9y
ZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTgzMmQ4ZDAxZjI5Y2Fh
YTM2YTlkNmMwYjE0OTYxZDdhNDhiN2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAsMCAr
MSwzOTkgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuIEwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFJl
c29sdmUgY29uZmxpY3RzIGluIGAuZmlsZWAgZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIgZmlsZXMu
IFRob3NlCisjIG1heSByZXN1bHQgZnJvbSBpbmxpbmUgYXNtIHN0YXRlbWVudHMgd2hpY2ggdGhl
bXNlbHZlcyBoYXZlIGAuZmlsZWAKKyMgZGlyZWN0aXZlcy4gQXMgdGhlIGlubGluZSBhc20gaGFz
IG5vIGlkZWEgd2hhdCB0aGUgbmV4dCBmcmVlIGZpbGUKKyMgbnVtYmVyIGlzLCBpdCdsbCBnZW5l
cmFsbHkgaGF2ZSBpdHMgb3duIG51bWJlcmluZy4gVG8gZ2V0IHRoaW5ncyB0bworIyB3b3JrIHdl
IGhhdmUgdG8KKyMgMS4gcmVtYXAgY29uZmxpY3RpbmcgZmlsZSBudW1iZXJzCisjIDIuIGNoYW5n
ZSBgLmxvY2AgZGlyZWN0aXZlcyB0byByZWZlcmVuY2UgdGhlIGFwcHJvcHJpYXRlIGZpbGUgbnVt
YmVyLgorIworIyBUbyBiZSBhYmxlIHRvIGRvIHRoYXQsIHdlIG5lZWQgc29tZSBjb25jZXB0IG9m
ICJzY29wZSIsIGkuZS4gd2hpY2gKKyMgc2V0IG9mIGZpbGVzIGEgZ2l2ZW4gYC5sb2NgIGRpcmVj
dGl2ZSByZWZlcnMgdG8uIFdlIGdldCB0aGF0IGJ5CisjIHRyYWNraW5nIHRoZSAjQVBQLyNOT0FQ
UCBkaXJlY3RpdmVzIHRoYXQgdGhlIGNvbXBpbGVyIGVtaXRzIHdoZW4gaXQKKyMgc3dpdGNoIHRv
L2Zyb20gaW5saW5lIGFzbS4KKyMKKyMgSW4gZWZmZWN0LCB3ZSBjb252ZXJ0CisjICAgICAuZmls
ZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAxICJiYXIiCisjICAgICAuZmlsZSAy
ICJmb28iCisjICAgICAubG9jIDEsIFgKKyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZCisj
IHRvCisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisjICAgICAuZmlsZSAyICJiYXIi
CisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAubG9jIDIsIFgKKyMgICAgICNOT0FQUAorIyAg
ICAgLmxvYyAxLCBZCisKK3JlcXVpcmUgJ3BhdGhuYW1lJworcmVxdWlyZSAnc3RyaW5naW8nCity
ZXF1aXJlICdzdHJzY2FuJworCitQYXJzZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1Y3QubmV3KDpzdHIp
CitQYXJzZVJlc3VsdEVycm9yID0gU3RydWN0Lm5ldyg6ZXJyb3IpCisKKyMgUGFyc2VzIHRoZSBz
aW5nbGUgc3RyaW5nIGxpdGVyYWwgZm9sbG93aW5nIGEgLmZpbGUgYXNzZW1ibGVyIGRpcmVjdGl2
ZQorY2xhc3MgRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIKKyAgZGVmIGluaXRpYWxpemUocykKKyAg
ICBAcyA9IFN0cmluZ1NjYW5uZXIubmV3KHMpCisgIGVuZAorICBkZWYgcGFyc2UKKyAgICBAcy5z
a2lwKC9ccyovKQorCisgICAgIyBXZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzdHJpbmcgbGl0ZXJh
bAorICAgIHJldCA9IHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgcmV0LnJlc3BvbmRfdG8/
KDplcnJvcikKKyAgICAgIHJldHVybiByZXQKKyAgICBlbmQKKworICAgIEBzLnNraXAoL1xzKi8p
CisgICAgaWYgbm90IEBzLmVvcz8KKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldygi
RXhwZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0ZXIgI3tyZXQuc3RyfSIpCisgICAgZW5kCisgICAgcmV0
dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcocmV0LnN0cikKKyAgZW5kCisgIGRlZiBwYXJzZV9z
dHJpbmdfbGl0ZXJhbAorICAgIGlmIEBzLnNjYW4oLyIvKS5uaWw/CisgICAgICBlcnIgPSAiRXhw
ZWN0ZWQgc3RyaW5nIGxpdGVyYWwgYXQgYCN7QHMuc3RyaW5nfWAgKHBvcyAje0BzLnBvc30pIgor
ICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KGVycikKKyAgICBlbmQKKyAgICBwYXJz
ZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgZW5kCisgIGRlZiBwYXJzZV91bnRpbF9l
bmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAgICBzdGFydF9wb3MgPSBAcy5wb3MKKyAgICB3aGlsZSB0
cnVlCisgICAgICAjIFNlYXJjaCBmb3Igb3VyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAgQHMu
c2tpcCgvW14iXFxdKy8pCisgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgIGlmIEBzLnNj
YW4oL1xcLykKKyAgICAgICAgICAjIFdoZW4gd2Ugc2VlICdcXCcsIGNvbnN1bWUgYm90aCBjaGFy
YWN0ZXJzIHNvIHRoYXQgdGhlCisgICAgICAgICAgIyBzZWNvbmQgJ1wnIHdpbGwgbm90IGJlIHRy
ZWF0ZWQgYXMgYW4gZXNjYXBlIGNoYXIuCisgICAgICAgICAgbmV4dAorICAgICAgICBlbHNpZiBA
cy5zY2FuKC8iLykKKyAgICAgICAgICAjIEZvciAnXCInLCBjb25zdW1lIGJvdGggY2hhcmFjdGVy
cyBzbyB0aGF0IHRoZSAnIicgd2lsbCBub3QKKyAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgc3Ry
aW5nLgorICAgICAgICAgIG5leHQKKyAgICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAgIGVs
c2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAjICciJyB3aXRob3V0IGEgcHJlY2VlZGluZyAnXCc7
IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4KKyAgICAgICAgIyBXZSdyZSBhbHJlYWR5IHBhc3QgdGhl
ICciJywgc28gdGhlIGxpdGVyYWwgZW5kcyBhdCAtMgorICAgICAgICAjIGNoYXJhY3RlcnMuCisg
ICAgICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KEBzLnN0cmluZ1tzdGFydF9wb3Mu
LihAcy5wb3MgLSAyKV0pCisgICAgICBlbHNpZiBAcy5lb3M/CisgICAgICAgIGVyciA9ICJVbnRl
cm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwgKHN0YXJ0aW5nIGF0IHBvcyAje3N0YXJ0X3Bvc30gaW4g
I3tAcy5zdHJpbmd9IgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoZXJyKQor
ICAgICAgZW5kCisgICAgICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgKCN7QHMuaW5zcGVjdH0pIgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgcHIgPSBG
aWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcoc3RyKS5wYXJzZQorICBpZiByZXMuaXNfYT8oQXJy
YXkpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgb3V0Zi5wdXRzKCJQYXJz
ZSByZXN1bHQgaXMgYCN7cHIuZXJyb3J9YCBidXQgZXhwZWN0ZWQgI3tyZXN9IikKKyAgICAgIHJl
dHVybiBmYWxzZQorICAgIGVuZAorICAgIGlmIHByLnN0ciAhPSByZXNbMF0KKyAgICAgIG91dGYu
cHV0cygiUGFyc2VkIHBhdGggYCN7cHIuc3RyfWAgYnV0IGV4cGVjdGVkIGAje3Jlc1swXX1gIikK
KyAgICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lmIHJl
cy5pc19hPyhTdHJpbmcpCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgaWYg
bm90IHByLmVycm9yLmRvd25jYXNlLmluY2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAgZXJy
ID0gIkVycm9yIG1lc3NhZ2UgYCN7cHIuZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVjdGVk
IHN1YnN0cmluZyBgI3tyZXN9YCIKKyAgICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAgcmV0
dXJuIGZhbHNlCisgICAgICBlbmQKKyAgICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAgb3V0
Zi5wdXRzKCJFeHBlY3RlZCBlcnJvciAoI3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFyc2Ug
I3twci5zdHJ9IikKKyAgICByZXR1cm4gZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRlcm5h
bCBlcnJvciAje3Jlcy5jbGFzc30iCisgIGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBucl9z
dWNjZWVkZWQgPSAwCisgIHRlc3RzID0gWworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsnImZv
by9iYXIiJywgWyJmb28vYmFyIl1dLAorCisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBzdHJp
bmcgbGl0ZXJhbCJdLAorCisgICAgWyciZm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRl
cmFsIl0sCisKKyAgICAjICJmb29cIgorICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRlZCBz
dHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIsIFsi
Zm9vXHg1Y1x4NWMiXV0sCisKKyAgICAjIENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJiYXIi
JywgWydmb29cImJhciddXSwKKworICAgICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyciZm9v
L2JhciInLCBbJ2Zvby9iYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAgIFsn
Ii9iYXIiJywgWycvYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0d28g
Y29tcG9uZW50cworICAgIFsnIi9iYXIvYmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAjIENh
biBkZXRlY3Qgc3RyYXkgdG9rZW4KKyAgICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQgb2Yg
bGluZSJdLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVzcGFj
ZQorICAgIFsnImZvbyJiYXInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgV2ls
bCBub3QgYWNjZXB0IGNsYW5nLXN0eWxlIC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3JraW5n
X2RpcmVjdG9yeSIgInBhdGgiJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBvdXRm
ID0gU3RyaW5nSU8ubmV3KCIiKQorICB0ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlmIHRl
c3Qob3V0Ziwgc3RyLCByZXMpCisgICAgICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAorICB9
CisgIGlmIG5yX3N1Y2NlZWRlZCAhPSB0ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91dGYu
c3RyaW5nKQorICAgICRzdGRlcnIucHV0cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25yX3N1
Y2NlZWRlZH0vI3t0ZXN0cy5zaXplfSIpCisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisjIEtl
ZXAgdHJhY2sgb2Ygd2hpY2ggZmlsZW5vIGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0aC4g
V2UgY2FsbAorIyB0aGUgZmlsZW5vIGEgJ3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2VyCisg
IEBAbmV4dF9mcmVlID0gMSAgICMgTmV4dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMgPSB7
fSAjIE1hcHMgcGF0aCAtPiBnbG9iYWwgc2xvdAorICBkZWYgaW5pdGlhbGl6ZShwYXJlbnQpCisg
ICAgQHBhcmVudCA9IHBhcmVudAorICAgICMgVGhpcyBtYXBzIGZyb20gb3VyIG93biBsb2NhbCBz
bG90cyAoaS5lLiB3aXRoaW4gYW4gQVBQIHNlY3Rpb24pCisgICAgIyB0byBhIGdsb2JhbCBzbG90
LgorICAgIEBzbG90X21hcCA9IHt9CisgIGVuZAorICAjIFdlIG1ha2Ugc3VyZSB0aGF0IC5maWxl
IGRpcmVjdGl2ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzYW1lIHBhdGggYXJlCisgICMgZGVkdXAnZCwg
aS5lLiBpZiB3ZSBzZWUKKyAgIyAgICAgLmZpbGUgTiAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAj
ICAgICAuLi4KKyAgIyAgICAgLmZpbGUgTSAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjIHRoZW4g
dGhlICJsb2NhbCIgTiwgTSBzbG90cyB3aWxsIGJlIG1hcHBlZCB0byB0aGUgc2FtZSAiZ2xvYmFs
IiBzbG90LgorICBkZWYgcmVnaXN0ZXJfcGF0aChwYXRoLCBzbG90KQorICAgIGN1cnJfc2xvdCA9
IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBjdXJyX3Nsb3QubmlsPworICAgICAgIyBXZSBoYXZlbid0
IHNlZW4gdGhpcyBmaWxlIGJlZm9yZQorICAgICAgaWYgc2xvdCA8PSBAQG5leHRfZnJlZQorICAg
ICAgICAjIERlc2lyZWQgZmlsZSBzbG90IGVpdGhlciBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcg
b25lLCBvciBpcworICAgICAgICAjIHRoZSBuZXh0IG9uZSB0byBiZSBhbGxvY2F0ZWQuIEluIGVp
dGhlciBjYXNlLCBhc3NpZ24gdGhlCisgICAgICAgICMgbmV4dCBmcmVlIHNsb3QuCisgICAgICAg
IGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICAgIGVsc2UKKyAgICAgICAgIyBEb24ndCBhbGxv
dyBzbG90IGdhcHMuIFRlY2huaWNhbGx5IHdlIGNvdWxkIGhhbmRsZSB0aGVtLCBidXQKKyAgICAg
ICAgIyB0aGV5IHNob3VsZCBuZXZlciBoYXBwZW47IGJhaWwgbm93IHJhdGhlciB0aGFuIHBhcGVy
aW5nIG92ZXIKKyAgICAgICAgIyBhbiBlYXJsaWVyIGVycm9yLgorICAgICAgICAkc3RkZXJyLnB1
dHMoIkZpbGUgd2FudHMgc2xvdCAje3Nsb3R9IGJ1dCBvbmx5IHNlZW4gI3tAQG5leHRfZnJlZX0g
c28gZmFyIikKKyAgICAgICAgZXhpdCgyKQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgIyBX
ZSd2ZSBhbHJlYWR5IGFzc2lnbmVkIGEgc2xvdCBmb3IgdGhpcyBmaWxlLgorICAgIGVuZAorICAg
IEBzbG90X21hcFtzbG90XSA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBAc2xvdF9tYXBbc2xvdF0u
bmlsPworICAgICAgcmFpc2UgIkRpZG4ndCBtYXAgbG9jYWwgc2xvdCAje3Nsb3R9IgorICAgIGVu
ZAorICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgZm9yIHBhdGgKKyAgZGVmIHNsb3RfZm9y
X3BhdGgocGF0aCkKKyAgICByZXR1cm4gQEBwYXRoc1twYXRoXQorICBlbmQKKyAgIyBSZXR1cm4g
Z2xvYmFsIHNsb3QgdGhhdCB3aWxsIHJlcGxhY2UgdGhlIGxvY2FsIHNsb3QKKyAgZGVmIHJlbWFw
X3Nsb3Qoc2xvdCkKKyAgICByZXQgPSBuaWwKKyAgICBpZiBAc2xvdF9tYXAuc2l6ZSA+IDAKKyAg
ICAgICMgSWYgdGhlIGN1cnJlbnQgTk9fQVBQIHNlZ21lbnQgaGFzIGRlZmluZWQgYSAuZmlsZSwg
b25seSBsb29rCisgICAgICAjIGluIHRoZSBjdXJyZW50IEZpbGVTbG90VHJhY2tlci4gVGhpcyBp
cyB0aGUgY2FzZSBmb3IgYQorICAgICAgIyB0b3AtbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQu
CisgICAgICByZXQgPSBAc2xvdF9tYXBbc2xvdF0KKyAgICBlbHNpZiBub3QgQHBhcmVudC5uaWw/
CisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBub3QgZGVmaW5lZCBh
IC5maWxlLCBjbGVhcmx5CisgICAgICAjIGFsbCAubG9jIGRpcmVjdGl2ZXMgcmVmZXIgdG8gZmls
ZXMgZGVmaW5lZCBpbiB0aGUgQVBQCisgICAgICAjIHBhcnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9y
IG5vbi10b3AtbGV2ZWwgaW5saW5lIGFzbQorICAgICAgIyBzdGF0ZW1lbnRzLgorICAgICAgcmV0
ID0gQHBhcmVudC5yZW1hcF9zbG90KHNsb3QpCisgICAgZW5kCisgICAgaWYgcmV0Lm5pbD8KKyAg
ICAgIHJhaXNlICJObyBnbG9iYWwgc2xvdCBmb3IgI3tzbG90fSIKKyAgICBlbmQKKyAgICByZXQK
KyAgZW5kCisgIHByaXZhdGUKKyAgZGVmIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBAQHBh
dGhzW3BhdGhdID0gQEBuZXh0X2ZyZWUKKyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAorZW5k
CisKKyMgUmV0dXJuIHNlcXVlbnRpYWwgbGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hl
dGhlciB3ZSdyZSBpbiBhbgorIyAjQVBQIG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNtUmVh
ZGVyCisgIGF0dHJfcmVhZGVyIDppbl9hcHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25vYXBw
LCA6bm9hcHBfdG9fYXBwCisgIGRlZiBpbml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAgQGYu
cmV3aW5kCisgICAgQGxpbmVuciA9IDAKKyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFzdF9z
d2l0Y2ggPSAic3RhcnQgb2YgZmlsZSIgIyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisgIGRl
ZiBuZXh0X2xpbmUKKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAgaWYg
bC5uaWw/CisgICAgICAgIHJldHVybiBsCisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0gMQor
ICAgICAgaWYgL14jXHMqQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisgICAg
ICAgICAgcmFpc2UgIiNBUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNBUFAg
KCN7QGxhc3Rfc3dpdGNofSkiCisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1ZQor
ICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19hcHAK
KyAgICAgICAgICBAbm9hcHBfdG9fYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVuZAor
ICAgICAgaWYgL14jXHMqTk9fQVBQXHMqLy5tYXRjaChsKQorICAgICAgICBpZiBub3QgQGluX2Fw
cAorICAgICAgICAgIHJhaXNlICIjTk9BUFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCB3YXMgbm90
IGluICNBUFAgKGxhc3Qgc3dpY2ggYXQgI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5kCisg
ICAgICAgIEBpbl9hcHAgPSBmYWxzZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisg
ICAgICAgIGlmIEBhcHBfdG9fbm9hcHAKKyAgICAgICAgICBAYXBwX3RvX25vYXBwLmNhbGwoKQor
ICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGwKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworY2xhc3MgRmlsZUNvbmZsaWN0UmVzb2x2ZXIKKyAgQEBmaWxlX3JlID0gL15ccypbLl1m
aWxlXHMrKD88c2xvdD5cZCspXHMrKD88cmVzdD4uKikkLworICBAQGxvY19yZSA9IC9eKD88d2hp
dGUxPlxzKilbLl1sb2MoPzx3aGl0ZTI+XHMrKSg/PHNsb3Q+XGQrKSg/PHJlc3Q+XHMrXGQrLiop
JC8KKyAgZGVmIGluaXRpYWxpemUoaW5mLCBvdXRmKQorICAgIEBvdXRmID0gb3V0ZgorICAgIEB0
cmFja2VycyA9IFtGaWxlU2xvdFRyYWNrZXIubmV3KG5pbCldCisgICAgQGFzbV9yZWFkZXIgPSBB
c21SZWFkZXIubmV3KGluZikKKyAgICAjIFdoZW4gd2UgZW50ZXIgYW4gI0FQUCBzZWN0aW9uIChp
LmUuIGFzbSBlbWl0dGVkIGZyb20gYW4gZXhwYW5kZWQKKyAgICAjIGlubGluZSBhc20gc3RhdGVt
ZW50KSwgY3JlYXRlIGEgbmV3IGZpbGUgdHJhY2tlciwgaW4gZWZmZWN0CisgICAgIyBwcm9jZXNz
aW5nIHRoZSAuZmlsZSBhbmQgLmxvYyBkaXJlY3RpdmVzIGluIGEgbmV3ICJuYW1lc3BhY2UiCisg
ICAgIyAoYXMgZmFyIGFzIHRoZSBmaWxlIG51bWJlcnMgYXJlIGNvbmNlcm5lZCkuIFRoaXMgaXMg
YW4gYXJyYXksCisgICAgIyBidXQgaW4gcHJhY3RpY2UgdGhlIHNpemUgd2lsbCBlaXRoZXIgYmUg
MSAoTk9BUFApIG9yIDIgKEFQUCkuCisgICAgQGFzbV9yZWFkZXIuYXBwX3RvX25vYXBwID0gUHJv
Yy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRy
YWNrZXJzLnBvcAorICAgIH0KKyAgICBAYXNtX3JlYWRlci5ub2FwcF90b19hcHAgPSBQcm9jLm5l
dyB7IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhY2tl
cnMucHVzaChGaWxlU2xvdFRyYWNrZXIubmV3KEB0cmFja2Vyc1stMV0pKQorICAgIH0KKyAgZW5k
CisgIGRlZiBydW4KKyAgICB3aGlsZSB0cnVlCisgICAgICBsID0gQGFzbV9yZWFkZXIubmV4dF9s
aW5lCisgICAgICBicmVhayB1bmxlc3MgbAorCisgICAgICBtZCA9IEBAZmlsZV9yZS5tYXRjaChs
KQorICAgICAgaWYgbWQKKyAgICAgICAgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQK
KyAgICAgIGVuZAorICAgICAgbWQgPSBAQGxvY19yZS5tYXRjaChsKQorICAgICAgaWYgbWQKKyAg
ICAgICAgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAgICBA
b3V0Zi53cml0ZShsKQorICAgICAgbmV4dAorICAgIGVuZAorICBlbmQKKyAgZGVmIGxvY19kaXJl
Y3RpdmUobWQpCisgICAgdHJhY2tlciA9IEB0cmFja2Vycy5sYXN0CisgICAgc2xvdCA9IHRyYWNr
ZXIucmVtYXBfc2xvdChtZFs6c2xvdF0udG9faSkKKyAgICBAb3V0Zi5wdXRzKCIje21kWzp3aGl0
ZTFdfS5sb2Mje21kWzp3aGl0ZTJdfSN7c2xvdH0je21kWzpyZXN0XX0iKQorICBlbmQKKyAgZGVm
IGZpbGVfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorCisgICAg
cHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5uZXcobWRbOnJlc3RdKS5wYXJzZQorICAgIGlm
IHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgICRzdGRlcnIucHV0cygiRXJyb3IgcGFyc2lu
ZyBwYXRoIGFyZ3VtZW50IHRvIC5maWxlIGRpcmVjdGl2ZTogI3twci5lcnJvcn0iKQorICAgICAg
ZXhpdCgyKQorICAgIGVuZAorCisgICAgcGF0aCA9IHByLnN0cgorICAgIHRyYWNrZXIucmVnaXN0
ZXJfcGF0aChwYXRoLCBtZFs6c2xvdF0udG9faSkKKworICAgIHNsb3QgPSB0cmFja2VyLnNsb3Rf
Zm9yX3BhdGgocGF0aCkKKyAgICBAb3V0Zi5wdXRzKCJcdC5maWxlXHQje3Nsb3R9ICN7bWRbOnJl
c3RdfSIpCisgIGVuZAorZW5kCisKKyMgRmlyc3QsIG1ha2Ugc3VyZSBvdXIgdGVzdHMgc3RpbGwg
cGFzcy4gVGhpcyBvbmx5IHRha2VzIGEgZnJhY3Rpb24gb2YKKyMgb3VyIHJ1bnRpbWUgYW5kIGVu
c3VyZXMgdGhlIHRlc3RzIHdpbGwgZ2V0IHJ1biBieSBhbnlvbmUgdHJ5aW5nIG91dAorIyBjaGFu
Z2VzIHRvIHRoaXMgZmlsZS4KK3NlbGZ0ZXN0CisKK2lmIEFSR1Yuc2l6ZSAhPSAyCisgICRzdGRl
cnIucHV0cygiVXNhZ2U6ICN7JDB9IGlucHV0IG91dHB1dCIpCisgIGV4aXQoMikKK2VuZAorCitp
bnBhdGgsIG91dHBhdGggPSBBUkdWLmNvbGxlY3QgeyB8bnwgUGF0aG5hbWUubmV3KG4pIH0KKwor
aWYgbm90IGlucGF0aC5maWxlPworICAkc3RkZXJyLnB1dHMoIk5vdCBhIHJlZ3VsYXIgZmlsZTog
YCN7aW5wYXRofWAiKQorICBleGl0KDIpCitlbmQKKworaWYgaW5wYXRoLmV4dG5hbWUudXBjYXNl
ICE9ICIuUyIKKyAgJHN0ZGVyci5wdXRzKCJ3YXJuaW5nOiBmaWxlIGAje2lucGF0aH1gIGRvZXNu
J3QgaGF2ZSBhIGAuc2Agb3IgYC5TYCBleHRlbnNpb24uIEdvaW5nIG9uIGFueXdheS4uLiIpCitl
bmQKKworRmlsZS5vcGVuKGlucGF0aCwgInIiKSB7IHxpbmZ8CisgIEZpbGUub3BlbihvdXRwYXRo
LCAidyIpIHsgfG91dGZ8CisgICAgRmlsZUNvbmZsaWN0UmVzb2x2ZXIubmV3KGluZiwgb3V0Ziku
cnVuCisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2I2MzhiYzQwMTFj
OWNkNDRlMTYyOTk3ZTA5M2M4ZTA0ZTQyMGEyLi5lNmRlYjAxNDI1MjA0MDhmOGM3ODEwMGFhNjg2
NWRhNWRmODdkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC02NzUsOCArNjc1
LDYgQEAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNw
cAogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCiBsbGludC9MTEludFRodW5rcy5jcHAKLS8vIEZJ
WE1FOiBXZSBjYW4ndCBidW5kbGUgdGhpcyBmaWxlIGR1ZSB0byBhIGNsYW5nIGJ1Zy4KLWxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIEBuby11bmlmeQogCiBwYXJzZXIvTGV4ZXIuY3BwCiBw
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEzYTlm
YjMzZTJmZjIzNTJjNjllYmE3Ni4uYzlhYWZjMTVlODcwN2JiYTk4OTIxNDMyMzU0NzNjZjA3MmU0
Yjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcApAQCAtNTM3LDggKzUzNywxOSBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRl
KE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0s
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX09QQ09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRpZgog
CisvLyBUaGlzIHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiBHREIgd2hlcmUsIGlmIHRoZSBjb21waWxh
dGlvbiB1bml0CisvLyBkb2Vzbid0IGhhdmUgYW55IGFkZHJlc3MgcmFuZ2UgaW5mb3JtYXRpb24s
IGl0cyBsaW5lIHRhYmxlIHdvbid0CisvLyBldmVuIGJlIGNvbnN1bHRlZC4gRW1pdCB7YmVmb3Jl
LGFmdGVyfV9sbGludF9hc20gc28gdGhhdCB0aGUgY29kZQorLy8gZW1pdHRlZCBpbiB0aGUgdG9w
IGxldmVsIGlubGluZSBhc20gc3RhdGVtZW50IGlzIHdpdGhpbiBmdW5jdGlvbnMKKy8vIHZpc2li
bGUgdG8gdGhlIGNvbXBpbGVyLiBUaGlzIHdheSwgR0RCIGNhbiByZXNvbHZlIGEgUEMgaW4gdGhl
CisvLyBsbGludCBhc20gY29kZSB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQgYW5kIHRoZSBzdWNj
ZXNzZnVsbHkgbG9vaworLy8gdXAgdGhlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uLgorREVCVUdH
RVJfQU5OT1RBVElPTl9NQVJLRVIoYmVmb3JlX2xsaW50X2FzbSkKKwogLy8gVGhpcyBpcyBhIGZp
bGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNz
ZW1ibHkgY29kZQogLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dM
ZXZlbEludGVycHJldGVyLmFzbS4KICNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCiAKK0RFQlVH
R0VSX0FOTk9UQVRJT05fTUFSS0VSKGFmdGVyX2xsaW50X2FzbSkKKwogI2VuZGlmIC8vIEVOQUJM
RShDX0xPT1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9j
b25maWcucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKaW5k
ZXggNDk1NDNmY2QxYjJmYTE2ZTY1ODhiNjgzMjg5YWMwNDc3MjdiN2YwZS4uMmYzMTIzZTVmYTA0
MzUzZGEwYTM3MmY0NTllZDM3OGFkZjgzMjlhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2NvbmZpZy5yYgpAQCAtODksNiArODksMTAgQEAgZGVmIHNob3VsZEVuYWJsZURl
YnVnQW5ub3RhdGlvbnMoKQogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgZW5kCiAg
ICAgICAgIGVuZAorICAgIGVsc2lmIEVOVlsiQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIl0gPT0gJ0dO
VScgYW5kCisgICAgICAgICBFTlZbIkdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVAiXSA9PSAnT04n
CisgICAgICAjIEFsbCBHQ0MgdmVyc2lvbnMgdGhhdCBjYW4gYnVpbGQgSlNDIHN1cHBvcnQgZGVi
dWcgYW5ub3RhdGlvbnMKKyAgICAgIHJldHVybiB0cnVlCiAgICAgZW5kCiAKICAgICBmYWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bXBpbGVyLmgKaW5kZXggNDM3NGNiM2FmMjNjODliYjUzNDk0NjlkYzg4ZWZjNjQ0NjE0YTQ3Yy4u
MGZiMzMyMDI3ZWQ5ZWY1ZjY0MmRhZDZlZDg5NTY1NWQ2YjAzMWZiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBA
IC0zODIsNiArMzgyLDE3IEBACiAjZGVmaW5lIFdBUk5fVU5VU0VEX1JFVFVSTgogI2VuZGlmCiAK
Ky8qIERFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSICovCisKKyNpZiAhZGVmaW5lZChERUJVR0dF
Ul9BTk5PVEFUSU9OX01BUktFUikgJiYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBERUJVR0dFUl9B
Tk5PVEFUSU9OX01BUktFUihuYW1lKSBcCisgICAgX19hdHRyaWJ1dGVfXygoX19ub19yZW9yZGVy
X18pKSB2b2lkIG5hbWUodm9pZCkgeyBfX2FzbV9fKCIiKTsgfQorI2VuZGlmCisKKyNpZiAhZGVm
aW5lZChERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUikKKyNkZWZpbmUgREVCVUdHRVJfQU5OT1RB
VElPTl9NQVJLRVIobmFtZSkKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoX19oYXNfaW5jbHVkZSkg
JiYgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNDb21tb24uY21ha2UKaW5kZXggYTU3NGVmOGMyMjJiYTA3MjBkMjJhMWZkNWQ1
YzgxNTNhNGRjZjcyMS4uZWExMzYyNDgzZTc4MGU0MTVjYzg1NDhjYzZmOTE0YjJhODhjZDhjZSAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UKQEAgLTExMiw2ICsxMTIsMTUgQEAgaWYgKERFQlVH
X0ZJU1NJT04pCiAgICAgc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhF
X0xJTktFUl9GTEFHU30gLVdsLC0tZ2RiLWluZGV4IikKIGVuZGlmICgpCiAKK3NldChHQ0NfT0ZG
TElORUFTTV9TT1VSQ0VfTUFQX0RFRkFVTFQgT0ZGKQoraWYgKENNQUtFX0JVSUxEX1RZUEUgU1RS
RVFVQUwgIkRlYnVnIiBPUiBDTUFLRV9CVUlMRF9UWVBFIFNUUkVRVUFMICJSZWxXaXRoRGViSW5m
byIpCisgICAgc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBPTikKK2VuZGlm
ICgpCisKK29wdGlvbihHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVn
IGxpbmUgaW5mb3JtYXRpb24gZm9yIG9mZmxpbmVhc20tZ2VuZXJhdGVkIGNvZGUiCisgICR7R0ND
X09GRkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxUfSkKKwogIyBFbmFibGUgdGhlIHVzYWdlIG9m
IE9wZW5NUC4KICMgIC0gQXQgdGhpcyBtb21lbnQsIE9wZW5NUCBpcyBvbmx5IHVzZWQgYXMgYW4g
YWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24KICMgICAgdG8gbmF0aXZlIHRocmVhZHMgZm9yIHRo
ZSBwYXJhbGxlbGl6YXRpb24gb2YgdGhlIFNWRyBmaWx0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395371</attachid>
            <date>2020-04-03 06:50:19 -0700</date>
            <delta_ts>2020-04-08 04:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200403135017.patch</filename>
            <type>text/plain</type>
            <size>28497</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi43NTQxZWI3NDNmMDk0NWNi
NDkyZDFmNjgxNjAyZWU3ZjM4ZGZiNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
aGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVidWcK
KyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0YXRp
b25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZpbGUg
ZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAgICAg
IHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGlsYXRp
b24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lmaWNh
bGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQtaW4g
YXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMsIGJ1
dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQg
YXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cg
dXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5nbGUg
c291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciBp
dC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcgd2l0
aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBkZWJ1
ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJbmZv
IGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4KKwor
ICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBmb3Ig
YSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRoZSBh
ZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmlsZS4g
SW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZlIHRv
IGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uYzY5MzI5YmQ0NTQx
YzU0ZWNhZGZiMDRhODE5Y2I2NWMyOTJmMDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzIzLDcgKzMyMyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQ
VVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQog
ICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20u
cmIKICAgICBERVBFTkRTIExMSW50T2Zmc2V0c0V4dHJhY3RvciAke0xMSU5UX0FTTX0gJHtPRkZM
SU5FX0FTTX0gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbml0Qnl0ZWNv
ZGVzLmFzbSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFz
bQotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9v
ZmZsaW5lYXNtL2FzbS5yYiAtSSR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
ICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkPFRB
UkdFVF9GSUxFOkxMSW50T2Zmc2V0c0V4dHJhY3Rvcj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSAke09GRkxJTkVfQVNNX0FSR1N9CisgICAgQ09N
TUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiBDTUFLRV9DWFhfQ09NUElMRVJfSUQ9JHtDTUFL
RV9DWFhfQ09NUElMRVJfSUR9IEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVA9JHtHQ0NfT0ZGTElO
RUFTTV9TT1VSQ0VfTUFQfSAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQ8
VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9BU01fQVJHU30KICAgICBD
T01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2hfbm9jcmVhdGUgJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fQogICAgIFdPUktJTkdfRElSRUNU
T1JZICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICBWRVJCQVRJTSkK
QEAgLTM0OCwxMCArMzQ4LDE3IEBAIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAg
ICAgICAgQ09NTUFORCAke01BU01fRVhFQ1VUQUJMRX0gJHtMTElOVF9NQVNNX0ZMQUdTfSAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xldmVsSW50ZXJwcmV0ZXJXaW4u
b2JqICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRlcnBy
ZXRlcldpbi5hc20KICAgICAgICAgVkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xvd0xl
dmVsSW50ZXJwcmV0ZXJXaW4ub2JqKQorICAgIGFkZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0
ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKQogZWxzZSAoKQotICAg
IGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKLSAgICAgICAgJHtKYXZhU2NyaXB0
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9MTEludEFzc2VtYmx5LmgKLSAgICApCisgICAgIyBB
cyB0aGVyZSdzIHBvb3IgdG9vbGNoYWluIHN1cHBvcnQgZm9yIHVzaW5nIGAuZmlsZWAgZGlyZWN0
aXZlcyBpbgorICAgICMgaW5saW5lIGFzbSAoaS5lLiB0aGVyZSdzIG5vIHdheSB0byBhdm9pZCBj
bGFzaGVzIHdpdGggdGhlIGAuZmlsZWAKKyAgICAjIGRpcmVjdGl2ZXMgZ2VuZXJhdGVkIGJ5IHRo
ZSBDIGNvZGUgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQpLCB3ZQorICAgICMgaW50cm9kdWNlIGEg
cG9zdHByb2Nlc3NpbmcgcGFzcyBmb3IgdGhlIGFzbSB0aGF0IGdldHMgYXNzZW1ibGVkIGludG8K
KyAgICAjIGFuIG9iamVjdCBmaWxlLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBmb3IgTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKKyAgICAjIGFuZCBjbWFrZSBkb2Vzbid0IGFsbG93IHVzIHRvIGlu
dHJvZHVjZSBhIGNvbXBpbGVyIHdyYXBwZXIgZm9yIGEKKyAgICAjIHNpbmdsZSBzb3VyY2UgZmls
ZSwgc28gd2UgbmVlZCB0byBjcmVhdGUgYSBzZXBhcmF0ZSB0YXJnZXQgZm9yIGl0LgorICAgIGFk
ZF9saWJyYXJ5KExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgT0JKRUNUIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwCisgICAgICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vJHtMTEludE91dHB1dH0pCiBlbmRpZiAoKQogCiAjIFdlYkFzc2VtYmx5IGdlbmVyYXRvcgpA
QCAtMTM2Miw2ICsxMzY5LDI5IEBAIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExMSW50T2Zm
c2V0c0V4dHJhY3RvciBTWVNURU0gUFJJVkFURSAke0phdmFTY3JpcHRDb3JlCiAKIGFkZF9zdWJk
aXJlY3Rvcnkoc2hlbGwpCiAKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50
ZXJwcmV0ZXJMaWIKKyAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0Q29y
ZSxJTkNMVURFX0RJUkVDVE9SSUVTPiIpCisKK2lmIChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFgg
QU5EIEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVApCisgICAgbWVzc2FnZShTVEFUVVMgIkVuYWJs
aW5nIGFzbSBwb3N0cHJvY2Vzc2luZyIpCisKKyAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9M
QVVOQ0hFUiAiJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfRElSfS9wb3N0cHJvY2Vz
cy1hc20iKQorICAgIGdldF90YXJnZXRfcHJvcGVydHkoUFJPUF9SVUxFX0xBVU5DSF9DT01QSUxF
IExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICBpZiAoUFJP
UF9SVUxFX0xBVU5DSF9DT01QSUxFKQorICAgICAgICBzZXQoTG93TGV2ZWxJbnRlcnByZXRlcl9M
QVVOQ0hFUiAiJHtMb3dMZXZlbEludGVycHJldGVyX0xBVU5DSEVSfSAke1BST1BfUlVMRV9MQVVO
Q0hfQ09NUElMRX0iKQorICAgIGVuZGlmICgpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBMb3dM
ZXZlbEludGVycHJldGVyTGliCisgICAgICAgIFBST1BFUlRZIFJVTEVfTEFVTkNIX0NPTVBJTEUg
IiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0iKQorCisgICAgIyBQYXNzIGluIHRoZSBm
aWxlbmFtZSBhcyBhIG1hZ2ljIHByZXByb2Nlc3NvciBkaXJlY3RpdmUsIHNvIHRoYXQKKyAgICAj
IHRoZSB3cmFwcGVyIGNhbiBhY2N1cmF0ZWx5IGlkZW50aWZ5IHRoZSBzb3VyY2UgZmlsZS4KKyAg
ICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoImxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwIgorICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIlBP
U1RQUk9DRVNTX0FTTT1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIpCitlbmRpZiAoKQor
CitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICQ8VEFSR0VUX09CSkVDVFM6TG93
TGV2ZWxJbnRlcnByZXRlckxpYj4pCisKIFdFQktJVF9DT01QVVRFX1NPVVJDRVMoSmF2YVNjcmlw
dENvcmUpCiBXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30p
CiBXRUJLSVRfRlJBTUVXT1JLKEphdmFTY3JpcHRDb3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGEzMTJlZTRhNzgxNDlm
YzllOWVlMTM0MzgxYWM0ZjZjZDAwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9wb3N0cHJvY2Vzcy1hc20KQEAgLTAsMCArMSwxOTMgQEAKKyMhL3Vz
ci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuIEwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFdyYXBwZXIgZm9yIGEgLmNw
cCAtPiAubyBjb21waWxhdGlvbiBjb21tYW5kLiBJdAorIyAxLiBjb252ZXJ0cyB0aGUgY29tbWFu
ZCB0byBnZW5lcmF0ZSBhIGAucycgZmlsZQorIyAyLiBydW5zIHRoZSBBU00gcG9zdHByb2Nlc3Nv
ciBvbiBpdCB0byBnZW5lcmF0ZSB0aGUgZmluYWwgYC5zYCBmaWxlCisjIDMuIGFzc2VtYmxlcyB0
aGUgYC5zYCBmaWxlIHRvIGEgYC5vYCBmaWxlCisKKyRhc21fc3VmZml4X3ByZSA9ICIucHJlLnMi
CiskYXNtX3N1ZmZpeCA9ICIucyIKKyRwb3N0cHJvY2Vzc29yID0gIiN7RmlsZS5kaXJuYW1lKCQw
KX0vcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIiCisKKworJGludGVybWVkaWF0ZV9wYXRo
cyA9IFtdCisKKyMgV2UgbmVlZCB0byB3b3JrIHdpdGggaW5kaWNlcyBhIGxvdCBhbmQgdW5mb3J0
dW5hdGVseSAnZ2V0b3B0bG9uZycgaW4KKyMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBl
eHBvc2Ugb3B0aW5kLCBzbyB3ZSdyZSBnb2luZyB3aXRoCisjIGFycmF5IHNlYXJjaGVzIGZvciBz
aW1wbGljaXR5LgorZGVmIGluZGV4X25vZmFpbChhcnksIGYsIGVycm1zZykKKyAgaWR4ID0gYXJ5
LmluZGV4IHsgfGVsfAorICAgIGYuY2FsbChlbCkKKyAgfQorICBpZiBpZHgubmlsPworICAgICRz
dGRlcnIucHV0cyhlcnJtc2cpCisgICAgZXhpdCgzKQorICBlbmQKKyAgaWR4CitlbmQKKworIyBG
aW5kIGFuZCByZXR1cm4gdGhlIHNvdXJjZSBmaWxlIGZvciB0aGlzIGNvbXBpbGF0aW9uIGNvbW1h
bmQsCisjIHJlbW92aW5nIGl0IGZyb20gdGhlIGFyZ3MuIE5vdGUgdGhhdCB0aGUgcGF0aCAoQSkg
YXMgaXQgYXBwZWFycyBoZXJlCisjIChjb21pbmcgZnJvbSBhIGNtYWtlIHJ1bGUpIGlzIGxpa2Vs
eSB0byBiZSBkaWZmZXJlbnQgdG8gdGhlCisjIGFub255bW91cyBhcmd1bWVudCAoQikgdG8gdGhl
IGNvbXBpbGF0aW9uIGNvbW1hbmQuIEhvd2V2ZXIsIEEgd2lsbAorIyBiZSBhIHN1ZmZpeCBvZiBC
LgorIworIyBFeGl0IHdpdGggYW4gZXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB0aGVyZS4g
VGhpcyBoYXMgYWxyZWFkeQorIyBiZWVuIGNoZWNrZWQgYnkgYGN4eC13cmFwcGVyYCwgb3RoZXJ3
aXNlIHdlIHdvdWxkbid0IGJlIHJ1bm5pbmcuCitkZWYgZXh0cmFjdF9pbnB1dCEoYXJncykKKyAg
cHJlZml4ID0gJy1EUE9TVFBST0NFU1NfQVNNPScKKworICBpZHggPSBpbmRleF9ub2ZhaWwoYXJn
cywgUHJvYy5uZXcgeyB8YXJnfAorICAgIGFyZy5zdGFydF93aXRoPyhwcmVmaXgpCisgIH0sICJO
byBgLURQT1NUUFJPQ0VTU19BU01gIGFyZ3VtZW50YCIpCisKKyAgcGF0aCA9IGFyZ3NbaWR4XVtw
cmVmaXguc2l6ZS4uLTFdCisgIGlmIHBhdGguc2l6ZSA9PSAwCisgICAgJHN0ZGVyci5wdXRzKCJF
bXB0eSBwYXRoIGluIC1EUE9TVFBST0NFU1NfQVNNPSIpCisgICAgZXhpdCgzKQorICBlbmQKKyAg
IyBXZSBvbmx5IG5lZWQgdGhpcyB0byBiZSBkZWZpbmVkIGZvciB0aGUgcHJlcHJvY2Vzc29yIChu
b3QgYW55CisgICMgd3JhcHBlcikgZnJvbSBub3cgb24uCisgIGFyZ3NbaWR4XSA9ICItRFBPU1RQ
Uk9DRVNTX0FTTSIKKyAgcmV0dXJuIHBhdGgKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgdGhl
IGZpcnN0IGFyZ3VtZW50IGVuZGluZyBpbiB0aGlzIHN1ZmZpeC4KKyMKKyMgRXhpdCB3aXRoIGFu
IGVycm9yIGlmIHRoZSBhcmd1bWVudCBpc24ndCB0aGVyZS4gV2UncmUgb25seSBldmVyCisjIGNh
bGxlZCB3aXRoIGFyZ3VtZW50cyB3ZSBrbm93IGFyZSBiZWluZyBwYXNzZWQgaW4gYnkgdGhlIGJ1
aWxkCisjIHN5c3RlbS4KK2RlZiBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgd2FudGVkKQorICBp
bmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcu
ZW5kX3dpdGg/KHdhbnRlZCkKKyAgICAgICAgICAgICAgIH0sICJObyBhcmd1bWVudCBlbmRzIHdp
dGggI3t3YW50ZWR9IikKK2VuZAorCisjIEdldCBpbmRleCBvZiBhIGdpdmVuIGFyZ3VtZW50LiBE
aWUgaWYgaXQncyBub3QgdGhlcmUuCitkZWYgZ2V0X2FyZ19pZHgoYXJncywgd2FudGVkKQorICBp
bmRleF9ub2ZhaWwoYXJncywgUHJvYy5uZXcgeyB8YXJnfAorICAgICAgICAgICAgICAgICBhcmcg
PT0gd2FudGVkCisgICAgICAgICAgICAgICB9LCAiTm8gYCN7d2FudGVkfWAgYXJndW1lbnQiKQor
ZW5kCisKKyMgR2V0IHRoZSBpbmRleCBvZiBgLW9gIGFuZCB2ZXJpZnkgdGhhdCBhbiBhcmd1bWVu
dCBmb2xsb3dzLgorIyBCb3RoIGFyZSBndWFyYW50ZWVkIHRvIGV4aXN0IChmcm9tIG91ciBidWls
ZCBzeXN0ZW0pLgorZGVmIGdldF9vX2lkeChhcmdzKQorICBpID0gZ2V0X2FyZ19pZHgoYXJncywg
Jy1vJykKKyAgaWYgKGkgKyAxKSA+PSBhcmdzLnNpemUKKyAgICAkc3RkZXJyLnB1dHMoIk5vIGFy
Z3VtZW50IHRvIGAtb2AiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGkKK2VuZAorCisjIFJ1biBj
b21tYW5kIGFuZCBkaWUgaWYgaXQgZmFpbHMsIHByb3BhZ2F0aW5nIHRoZSBleGl0IGNvZGUuCitk
ZWYgcnVuX2NtZChjbWQpCisgIHBpZCA9IFByb2Nlc3Muc3Bhd24oKmNtZCkKKyAgUHJvY2Vzcy53
YWl0cGlkKHBpZCkKKyAgcmV0ID0gJD8KKyAgaWYgbm90IHJldC5zdWNjZXNzPworICAgICRzdGRl
cnIucHV0cygiRXJyb3IgcnVubmluZyBjbWQ6ICN7cmV0fSIpCisgICAgZXhpdChyZXQuZXhpdHN0
YXR1cykKKyAgZW5kCitlbmQKKworIyBDb252ZXJ0CisjICAgIGN4eCAtbyBibGFoLm8gLWMgYmxh
aC5jcHAKKyMgdG8KKyMgICAgY3h4IC1vIGJsYWgucyAtUyBibGFoLmNwcAorZGVmIGJ1aWxkX2N4
eF9jbWQoYXJncykKKyAgY19pZHggPSBnZXRfYXJnX2lkeChhcmdzLCAnLWMnKQorICBvX2lkeCA9
IGdldF9vX2lkeChhcmdzKQorCisgIGN4eF9hcmdzID0gYXJncy5jbG9uZQorCisgIGN4eF9hcmdz
W2NfaWR4XSA9ICctUycKKyAgb19wYXRoID0gY3h4X2FyZ3Nbb19pZHggKyAxXQorICBjeHhfYXJn
c1tvX2lkeCArIDFdID0gb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkKKyAgJGludGVy
bWVkaWF0ZV9wYXRocyA8PCBjeHhfYXJnc1tvX2lkeCArIDFdCisgIGlmIGN4eF9hcmdzW29faWR4
ICsgMV0gPT0gb19wYXRoCisgICAgJHN0ZGVyci5wdXRzKCJPdXRwdXQgZmlsZSBuYW1lIG5vdCBh
biBvYmplY3QgZmlsZTogYCN7b19wYXRofWAiKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGN4eF9h
cmdzCitlbmQKKworIyBEbworIyAgICAgbXYgYmxhaC5TIGJsYWgucHJlLlMKKyMgVGhlIHJlYXNv
biB3ZSBkbyBhIHJlbmFtZSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGdlbmVyYXRpbmcgdGhlIC5wcmUu
cworIyBmaWxlIHdoZW4gY29tcGlsaW5nIGlzIHNvIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgLmR3
byBmaWxlIHdpbGwgaGF2ZQorIyB0aGUgY29ycmVjdCBuYW1lIGVtYmVkZGVkLgorZGVmIHJlbmFt
ZV9zX2ZpbGUoYXJncykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorICBG
aWxlLnJlbmFtZShvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KSwKKyAgICAgICAgICAg
ICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpKQorZW5kCisKKyMgQnVpbGQK
KyMgICAgIHBvc3Rwcm9jZXNzb3IgYmxhaC5wcmUuUyBibGFoLlMKK2RlZiBidWlsZF9wb3N0cHJv
Y2Vzc29yX2NtZChhcmdzKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFdCisK
KyAgcHBfYXJncyA9IFsKKyAgICAkcG9zdHByb2Nlc3NvciwKKyAgICBvX3BhdGguc3ViKC9bLl1v
JC8sICRhc21fc3VmZml4X3ByZSksICMgaW5wdXQKKyAgICBvX3BhdGguc3ViKC9bLl1vJC8sICRh
c21fc3VmZml4KSAjIG91dHB1dAorICBdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJn
c1stMl0KKyAgJGludGVybWVkaWF0ZV9wYXRocyA8PCBwcF9hcmdzWy0xXQorICBwcF9hcmdzCitl
bmQKKworIyBCdWlsZAorIyAgICAgY3h4IC1vIGJsYWgubyAtYyBibGFoLlMKK2RlZiBidWlsZF9h
c19jbWQoYXJncywgaV9wYXRoKQorICBpX2lkeCA9IGdldF9hcmdfaWR4X3N1ZmZpeChhcmdzLCBp
X3BhdGgpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKworICBhc19hcmdz
ID0gYXJncy5jbG9uZQorICBpX3BhdGggPSBhc19hcmdzW2lfaWR4XQorICBhc19hcmdzW2lfaWR4
XSA9IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXgpCisgIGFzX2FyZ3MKK2VuZAorCith
cmdzID0gQVJHVi50b19hCitpX3BhdGggPSBleHRyYWN0X2lucHV0IShhcmdzKQorCitiZWdpbgor
ICBydW5fY21kKGJ1aWxkX2N4eF9jbWQoYXJncykpCisgIHJlbmFtZV9zX2ZpbGUoYXJncykKKyAg
cnVuX2NtZChidWlsZF9wb3N0cHJvY2Vzc29yX2NtZChhcmdzKSkKKyAgcnVuX2NtZChidWlsZF9h
c19jbWQoYXJncywgaV9wYXRoKSkKK2Vuc3VyZQorICAkaW50ZXJtZWRpYXRlX3BhdGhzLmVhY2gg
eyB8cHwKKyAgICBpZiBGaWxlLmV4aXN0PyhwKQorICAgICAgRmlsZS5kZWxldGUocCkKKyAgICBl
bmQKKyAgfQorZW5kCisKK2V4aXQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjE4MzJkOGQwMWYyOWNhYWEzNmE5ZDZjMGIxNDk2MWQ3YTQ4YjdkZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxp
Y3RzLnJiCkBAIC0wLDAgKzEsMzk5IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIyBSZXNvbHZlIGNvbmZsaWN0cyBpbiBgLmZpbGVgIGRpcmVjdGl2ZXMgaW4g
YXNzZW1ibGVyIGZpbGVzLiBUaG9zZQorIyBtYXkgcmVzdWx0IGZyb20gaW5saW5lIGFzbSBzdGF0
ZW1lbnRzIHdoaWNoIHRoZW1zZWx2ZXMgaGF2ZSBgLmZpbGVgCisjIGRpcmVjdGl2ZXMuIEFzIHRo
ZSBpbmxpbmUgYXNtIGhhcyBubyBpZGVhIHdoYXQgdGhlIG5leHQgZnJlZSBmaWxlCisjIG51bWJl
ciBpcywgaXQnbGwgZ2VuZXJhbGx5IGhhdmUgaXRzIG93biBudW1iZXJpbmcuIFRvIGdldCB0aGlu
Z3MgdG8KKyMgd29yayB3ZSBoYXZlIHRvCisjIDEuIHJlbWFwIGNvbmZsaWN0aW5nIGZpbGUgbnVt
YmVycworIyAyLiBjaGFuZ2UgYC5sb2NgIGRpcmVjdGl2ZXMgdG8gcmVmZXJlbmNlIHRoZSBhcHBy
b3ByaWF0ZSBmaWxlIG51bWJlci4KKyMKKyMgVG8gYmUgYWJsZSB0byBkbyB0aGF0LCB3ZSBuZWVk
IHNvbWUgY29uY2VwdCBvZiAic2NvcGUiLCBpLmUuIHdoaWNoCisjIHNldCBvZiBmaWxlcyBhIGdp
dmVuIGAubG9jYCBkaXJlY3RpdmUgcmVmZXJzIHRvLiBXZSBnZXQgdGhhdCBieQorIyB0cmFja2lu
ZyB0aGUgI0FQUC8jTk9BUFAgZGlyZWN0aXZlcyB0aGF0IHRoZSBjb21waWxlciBlbWl0cyB3aGVu
IGl0CisjIHN3aXRjaCB0by9mcm9tIGlubGluZSBhc20uCisjCisjIEluIGVmZmVjdCwgd2UgY29u
dmVydAorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAgICAgLmZpbGUgMSAiYmFy
IgorIyAgICAgLmZpbGUgMiAiZm9vIgorIyAgICAgLmxvYyAxLCBYCisjICAgICAjTk9BUFAKKyMg
ICAgIC5sb2MgMSwgWQorIyB0bworIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgI0FQUAorIyAg
ICAgLmZpbGUgMiAiYmFyIgorIyAgICAgLmZpbGUgMSAiZm9vIgorIyAgICAgLmxvYyAyLCBYCisj
ICAgICAjTk9BUFAKKyMgICAgIC5sb2MgMSwgWQorCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVp
cmUgJ3N0cmluZ2lvJworcmVxdWlyZSAnc3Ryc2NhbicKKworUGFyc2VSZXN1bHRTdWNjZXNzID0g
U3RydWN0Lm5ldyg6c3RyKQorUGFyc2VSZXN1bHRFcnJvciA9IFN0cnVjdC5uZXcoOmVycm9yKQor
CisjIFBhcnNlcyB0aGUgc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvbGxvd2luZyBhIC5maWxlIGFz
c2VtYmxlciBkaXJlY3RpdmUKK2NsYXNzIEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyCisgIGRlZiBp
bml0aWFsaXplKHMpCisgICAgQHMgPSBTdHJpbmdTY2FubmVyLm5ldyhzKQorICBlbmQKKyAgZGVm
IHBhcnNlCisgICAgQHMuc2tpcCgvXHMqLykKKworICAgICMgV2UgcmVxdWlyZSBhdCBsZWFzdCBv
bmUgc3RyaW5nIGxpdGVyYWwKKyAgICByZXQgPSBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlm
IHJldC5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICByZXR1cm4gcmV0CisgICAgZW5kCisKKyAg
ICBAcy5za2lwKC9ccyovKQorICAgIGlmIG5vdCBAcy5lb3M/CisgICAgICByZXR1cm4gUGFyc2VS
ZXN1bHRFcnJvci5uZXcoIkV4cGVjdGVkIGVuZCBvZiBsaW5lIGFmdGVyICN7cmV0LnN0cn0iKQor
ICAgIGVuZAorICAgIHJldHVybiBQYXJzZVJlc3VsdFN1Y2Nlc3MubmV3KHJldC5zdHIpCisgIGVu
ZAorICBkZWYgcGFyc2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiBAcy5zY2FuKC8iLykubmlsPwor
ICAgICAgZXJyID0gIkV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGF0IGAje0BzLnN0cmluZ31gIChw
b3MgI3tAcy5wb3N9KSIKKyAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisg
ICAgZW5kCisgICAgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgIGVuZAorICBk
ZWYgcGFyc2VfdW50aWxfZW5kX29mX3N0cmluZ19saXRlcmFsCisgICAgc3RhcnRfcG9zID0gQHMu
cG9zCisgICAgd2hpbGUgdHJ1ZQorICAgICAgIyBTZWFyY2ggZm9yIG91ciBzcGVjaWFsIGNoYXJh
Y3RlcnMKKyAgICAgIEBzLnNraXAoL1teIlxcXSsvKQorICAgICAgaWYgQHMuc2NhbigvXFwvKQor
ICAgICAgICBpZiBAcy5zY2FuKC9cXC8pCisgICAgICAgICAgIyBXaGVuIHdlIHNlZSAnXFwnLCBj
b25zdW1lIGJvdGggY2hhcmFjdGVycyBzbyB0aGF0IHRoZQorICAgICAgICAgICMgc2Vjb25kICdc
JyB3aWxsIG5vdCBiZSB0cmVhdGVkIGFzIGFuIGVzY2FwZSBjaGFyLgorICAgICAgICAgIG5leHQK
KyAgICAgICAgZWxzaWYgQHMuc2NhbigvIi8pCisgICAgICAgICAgIyBGb3IgJ1wiJywgY29uc3Vt
ZSBib3RoIGNoYXJhY3RlcnMgc28gdGhhdCB0aGUgJyInIHdpbGwgbm90CisgICAgICAgICAgIyB0
ZXJtaW5hdGUgdGhlIHN0cmluZy4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVuZAorICAgICAg
ICBuZXh0CisgICAgICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgIyAnIicgd2l0aG91dCBh
IHByZWNlZWRpbmcgJ1wnOyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuCisgICAgICAgICMgV2UncmUg
YWxyZWFkeSBwYXN0IHRoZSAnIicsIHNvIHRoZSBsaXRlcmFsIGVuZHMgYXQgLTIKKyAgICAgICAg
IyBjaGFyYWN0ZXJzLgorICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhAcy5z
dHJpbmdbc3RhcnRfcG9zLi4oQHMucG9zIC0gMildKQorICAgICAgZWxzaWYgQHMuZW9zPworICAg
ICAgICBlcnIgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIChzdGFydGluZyBhdCBwb3Mg
I3tzdGFydF9wb3N9IGluICN7QHMuc3RyaW5nfSIKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0
RXJyb3IubmV3KGVycikKKyAgICAgIGVuZAorICAgICAgcmFpc2UgIkludGVybmFsIGVycm9yICgj
e0BzLmluc3BlY3R9KSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIHRlc3Qob3V0Ziwgc3Ry
LCByZXMpCisgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KHN0cikucGFyc2UKKyAg
aWYgcmVzLmlzX2E/KEFycmF5KQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAg
IG91dGYucHV0cygiUGFyc2UgcmVzdWx0IGlzIGAje3ByLmVycm9yfWAgYnV0IGV4cGVjdGVkICN7
cmVzfSIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICBpZiBwci5zdHIgIT0gcmVz
WzBdCisgICAgICBvdXRmLnB1dHMoIlBhcnNlZCBwYXRoIGAje3ByLnN0cn1gIGJ1dCBleHBlY3Rl
ZCBgI3tyZXNbMF19YCIpCisgICAgICByZXR1cm4gZmFsc2UKKyAgICBlbmQKKyAgICByZXR1cm4g
dHJ1ZQorICBlbHNpZiByZXMuaXNfYT8oU3RyaW5nKQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDpl
cnJvcikKKyAgICAgIGlmIG5vdCBwci5lcnJvci5kb3duY2FzZS5pbmNsdWRlPyhyZXMuZG93bmNh
c2UpCisgICAgICAgIGVyciA9ICJFcnJvciBtZXNzYWdlIGAje3ByLmVycm9yfWAgZG9lcyBub3Qg
aW5jbHVkZSBleHBlY3RlZCBzdWJzdHJpbmcgYCN7cmVzfWAiCisgICAgICAgIG91dGYucHV0cyhl
cnIpCisgICAgICAgIHJldHVybiBmYWxzZQorICAgICAgZW5kCisgICAgICByZXR1cm4gdHJ1ZQor
ICAgIGVuZAorICAgIG91dGYucHV0cygiRXhwZWN0ZWQgZXJyb3IgKCN7cmVzfSkgYnV0IGdvdCBz
dWNjZXNzZnVsIHBhcnNlICN7cHIuc3RyfSIpCisgICAgcmV0dXJuIGZhbHNlCisgIGVsc2UKKyAg
ICByYWlzZSAiSW50ZXJuYWwgZXJyb3IgI3tyZXMuY2xhc3N9IgorICBlbmQKK2VuZAorCitkZWYg
c2VsZnRlc3QKKyAgbnJfc3VjY2VlZGVkID0gMAorICB0ZXN0cyA9IFsKKyAgICAjIHNpbXBsZSBz
dHJpbmcKKyAgICBbJyJmb28vYmFyIicsIFsiZm9vL2JhciJdXSwKKworICAgIFsnImZvbycsICJV
bnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgIFsnImZvb1wiJywgIlVudGVybWlu
YXRlZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgIyAiZm9vXCIKKyAgICBbIlwiZm9vXFxcIiIs
ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1xcIgorICAgIFsi
XCJmb29cXFxcXCIiLCBbImZvb1x4NWNceDVjIl1dLAorCisgICAgIyBDYW4gZXNjYXBlICciJwor
ICAgIFsnImZvb1wiYmFyIicsIFsnZm9vXCJiYXInXV0sCisKKyAgICAjIENhbiBwYXJzZSByZWxh
dGl2ZQorICAgIFsnImZvby9iYXIiJywgWydmb28vYmFyJ11dLAorCisgICAgIyBDYW4gcGFyc2Ug
YWJzb2x1dGUKKyAgICBbJyIvYmFyIicsIFsnL2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFi
c29sdXRlIHdpdGggdHdvIGNvbXBvbmVudHMKKyAgICBbJyIvYmFyL2JheiInLCBbJy9iYXIvYmF6
J11dLAorCisgICAgIyBDYW4gZGV0ZWN0IHN0cmF5IHRva2VuCisgICAgWyciZm9vIiBiYXInLCAi
RXhwZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbiB3
aXRob3V0IHdoaXRlc3BhY2UKKyAgICBbJyJmb28iYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5l
Il0sCisKKyAgICAjIFdpbGwgbm90IGFjY2VwdCBjbGFuZy1zdHlsZSAuZmlsZSBkaXJlY3RpdmVz
CisgICAgWycid29ya2luZ19kaXJlY3RvcnkiICJwYXRoIicsICJFeHBlY3RlZCBlbmQgb2YgbGlu
ZSJdCisgIF0KKyAgb3V0ZiA9IFN0cmluZ0lPLm5ldygiIikKKyAgdGVzdHMuZWFjaCB7IHxzdHIs
IHJlc3wKKyAgICBpZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICAgICAgbnJfc3VjY2VlZGVkICs9
IDEKKyAgICBlbmQKKyAgfQorICBpZiBucl9zdWNjZWVkZWQgIT0gdGVzdHMuc2l6ZQorICAgICRz
dGRlcnIucHV0cyhvdXRmLnN0cmluZykKKyAgICAkc3RkZXJyLnB1dHMoIlNvbWUgc2VsZiB0ZXN0
cyBmYWlsZWQgI3tucl9zdWNjZWVkZWR9LyN7dGVzdHMuc2l6ZX0iKQorICAgIGV4aXQoMykKKyAg
ZW5kCitlbmQKKworIyBLZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVubyBpcyBhc3NpZ25lZCB0byB3
aGljaCBmaWxlIHBhdGguIFdlIGNhbGwKKyMgdGhlIGZpbGVubyBhICdzbG90Jy4KK2NsYXNzIEZp
bGVTbG90VHJhY2tlcgorICBAQG5leHRfZnJlZSA9IDEgICAjIE5leHQgZnJlZSBnbG9iYWwgc2xv
dAorICBAQHBhdGhzID0ge30gIyBNYXBzIHBhdGggLT4gZ2xvYmFsIHNsb3QKKyAgZGVmIGluaXRp
YWxpemUocGFyZW50KQorICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICAjIFRoaXMgbWFwcyBmcm9t
IG91ciBvd24gbG9jYWwgc2xvdHMgKGkuZS4gd2l0aGluIGFuIEFQUCBzZWN0aW9uKQorICAgICMg
dG8gYSBnbG9iYWwgc2xvdC4KKyAgICBAc2xvdF9tYXAgPSB7fQorICBlbmQKKyAgIyBXZSBtYWtl
IHN1cmUgdGhhdCAuZmlsZSBkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeSB0aGUgc2FtZSBwYXRoIGFy
ZQorICAjIGRlZHVwJ2QsIGkuZS4gaWYgd2Ugc2VlCisgICMgICAgIC5maWxlIE4gIi9wYXRoL3Rv
L2luY2x1ZGUuaCIKKyAgIyAgICAgLi4uCisgICMgICAgIC5maWxlIE0gIi9wYXRoL3RvL2luY2x1
ZGUuaCIKKyAgIyB0aGVuIHRoZSAibG9jYWwiIE4sIE0gc2xvdHMgd2lsbCBiZSBtYXBwZWQgdG8g
dGhlIHNhbWUgImdsb2JhbCIgc2xvdC4KKyAgZGVmIHJlZ2lzdGVyX3BhdGgocGF0aCwgc2xvdCkK
KyAgICBjdXJyX3Nsb3QgPSBAQHBhdGhzW3BhdGhdCisgICAgaWYgY3Vycl9zbG90Lm5pbD8KKyAg
ICAgICMgV2UgaGF2ZW4ndCBzZWVuIHRoaXMgZmlsZSBiZWZvcmUKKyAgICAgIGlmIHNsb3QgPD0g
QEBuZXh0X2ZyZWUKKyAgICAgICAgIyBEZXNpcmVkIGZpbGUgc2xvdCBlaXRoZXIgY2xhc2hlcyB3
aXRoIGFuIGV4aXN0aW5nIG9uZSwgb3IgaXMKKyAgICAgICAgIyB0aGUgbmV4dCBvbmUgdG8gYmUg
YWxsb2NhdGVkLiBJbiBlaXRoZXIgY2FzZSwgYXNzaWduIHRoZQorICAgICAgICAjIG5leHQgZnJl
ZSBzbG90LgorICAgICAgICBhc3NpZ25fbmV4dF9zbG90KHBhdGgpCisgICAgICBlbHNlCisgICAg
ICAgICMgRG9uJ3QgYWxsb3cgc2xvdCBnYXBzLiBUZWNobmljYWxseSB3ZSBjb3VsZCBoYW5kbGUg
dGhlbSwgYnV0CisgICAgICAgICMgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuOyBiYWlsIG5vdyBy
YXRoZXIgdGhhbiBwYXBlcmluZyBvdmVyCisgICAgICAgICMgYW4gZWFybGllciBlcnJvci4KKyAg
ICAgICAgJHN0ZGVyci5wdXRzKCJGaWxlIHdhbnRzIHNsb3QgI3tzbG90fSBidXQgb25seSBzZWVu
ICN7QEBuZXh0X2ZyZWV9IHNvIGZhciIpCisgICAgICAgIGV4aXQoMikKKyAgICAgIGVuZAorICAg
IGVsc2UKKyAgICAgICMgV2UndmUgYWxyZWFkeSBhc3NpZ25lZCBhIHNsb3QgZm9yIHRoaXMgZmls
ZS4KKyAgICBlbmQKKyAgICBAc2xvdF9tYXBbc2xvdF0gPSBAQHBhdGhzW3BhdGhdCisgICAgaWYg
QHNsb3RfbWFwW3Nsb3RdLm5pbD8KKyAgICAgIHJhaXNlICJEaWRuJ3QgbWFwIGxvY2FsIHNsb3Qg
I3tzbG90fSIKKyAgICBlbmQKKyAgZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IGZvciBwYXRo
CisgIGRlZiBzbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgcmV0dXJuIEBAcGF0aHNbcGF0aF0KKyAg
ZW5kCisgICMgUmV0dXJuIGdsb2JhbCBzbG90IHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2NhbCBz
bG90CisgIGRlZiByZW1hcF9zbG90KHNsb3QpCisgICAgcmV0ID0gbmlsCisgICAgaWYgQHNsb3Rf
bWFwLnNpemUgPiAwCisgICAgICAjIElmIHRoZSBjdXJyZW50IE5PX0FQUCBzZWdtZW50IGhhcyBk
ZWZpbmVkIGEgLmZpbGUsIG9ubHkgbG9vaworICAgICAgIyBpbiB0aGUgY3VycmVudCBGaWxlU2xv
dFRyYWNrZXIuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIGEKKyAgICAgICMgdG9wLWxldmVsIGlubGlu
ZSBhc20gc3RhdGVtZW50LgorICAgICAgcmV0ID0gQHNsb3RfbWFwW3Nsb3RdCisgICAgZWxzaWYg
bm90IEBwYXJlbnQubmlsPworICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAgc2VnbWVudCBo
YXMgbm90IGRlZmluZWQgYSAuZmlsZSwgY2xlYXJseQorICAgICAgIyBhbGwgLmxvYyBkaXJlY3Rp
dmVzIHJlZmVyIHRvIGZpbGVzIGRlZmluZWQgaW4gdGhlIEFQUAorICAgICAgIyBwYXJ0LiBUaGlz
IGlzIHRoZSBjYXNlIGZvciBub24tdG9wLWxldmVsIGlubGluZSBhc20KKyAgICAgICMgc3RhdGVt
ZW50cy4KKyAgICAgIHJldCA9IEBwYXJlbnQucmVtYXBfc2xvdChzbG90KQorICAgIGVuZAorICAg
IGlmIHJldC5uaWw/CisgICAgICByYWlzZSAiTm8gZ2xvYmFsIHNsb3QgZm9yICN7c2xvdH0iCisg
ICAgZW5kCisgICAgcmV0CisgIGVuZAorICBwcml2YXRlCisgIGRlZiBhc3NpZ25fbmV4dF9zbG90
KHBhdGgpCisgICAgQEBwYXRoc1twYXRoXSA9IEBAbmV4dF9mcmVlCisgICAgQEBuZXh0X2ZyZWUg
Kz0gMQorICBlbmQKK2VuZAorCisjIFJldHVybiBzZXF1ZW50aWFsIGxpbmVzLCB3aGlsZSBrZWVw
aW5nIHRyYWNrIG9mIHdoZXRoZXIgd2UncmUgaW4gYW4KKyMgI0FQUCBvciAjTk9BUFAgc2VjdGlv
bi4KK2NsYXNzIEFzbVJlYWRlcgorICBhdHRyX3JlYWRlciA6aW5fYXBwCisgIGF0dHJfYWNjZXNz
b3IgOmFwcF90b19ub2FwcCwgOm5vYXBwX3RvX2FwcAorICBkZWYgaW5pdGlhbGl6ZShmKQorICAg
IEBmID0gZgorICAgIEBmLnJld2luZAorICAgIEBsaW5lbnIgPSAwCisgICAgQGluX2FwcCA9IGZh
bHNlCisgICAgQGxhc3Rfc3dpdGNoID0gInN0YXJ0IG9mIGZpbGUiICMgRm9yIGVycm9yIG1lc3Nh
Z2VzCisgIGVuZAorICBkZWYgbmV4dF9saW5lCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBm
LmdldHMKKyAgICAgIGlmIGwubmlsPworICAgICAgICByZXR1cm4gbAorICAgICAgZW5kCisgICAg
ICBAbGluZW5yICs9IDEKKyAgICAgIGlmIC9eI1xzKkFQUFxzKi8ubWF0Y2gobCkKKyAgICAgICAg
aWYgQGluX2FwcAorICAgICAgICAgIHJhaXNlICIjQVBQIG9uIGxpbmUgI3tAbGluZW5yfSBidXQg
YWxyZWFkeSBpbiAjQVBQICgje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAg
QGluX2FwcCA9IHRydWUKKyAgICAgICAgQGxhc3Rfc3dpdGNoID0gQGxpbmVucgorICAgICAgICBp
ZiBAbm9hcHBfdG9fYXBwCisgICAgICAgICAgQG5vYXBwX3RvX2FwcC5jYWxsKCkKKyAgICAgICAg
ZW5kCisgICAgICBlbmQKKyAgICAgIGlmIC9eI1xzKk5PX0FQUFxzKi8ubWF0Y2gobCkKKyAgICAg
ICAgaWYgbm90IEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAiI05PQVBQIG9uIGxpbmUgI3tAbGlu
ZW5yfSBidXQgd2FzIG5vdCBpbiAjQVBQIChsYXN0IHN3aWNoIGF0ICN7QGxhc3Rfc3dpdGNofSki
CisgICAgICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gZmFsc2UKKyAgICAgICAgQGxhc3Rfc3dp
dGNoID0gQGxpbmVucgorICAgICAgICBpZiBAYXBwX3RvX25vYXBwCisgICAgICAgICAgQGFwcF90
b19ub2FwcC5jYWxsKCkKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICAgIHJldHVybiBsCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZpbGVDb25mbGljdFJlc29sdmVyCisgIEBAZmls
ZV9yZSA9IC9eXHMqWy5dZmlsZVxzKyg/PHNsb3Q+XGQrKVxzKyg/PHJlc3Q+LiopJC8KKyAgQEBs
b2NfcmUgPSAvXig/PHdoaXRlMT5ccyopWy5dbG9jKD88d2hpdGUyPlxzKykoPzxzbG90PlxkKyko
PzxyZXN0PlxzK1xkKy4qKSQvCisgIGRlZiBpbml0aWFsaXplKGluZiwgb3V0ZikKKyAgICBAb3V0
ZiA9IG91dGYKKyAgICBAdHJhY2tlcnMgPSBbRmlsZVNsb3RUcmFja2VyLm5ldyhuaWwpXQorICAg
IEBhc21fcmVhZGVyID0gQXNtUmVhZGVyLm5ldyhpbmYpCisgICAgIyBXaGVuIHdlIGVudGVyIGFu
ICNBUFAgc2VjdGlvbiAoaS5lLiBhc20gZW1pdHRlZCBmcm9tIGFuIGV4cGFuZGVkCisgICAgIyBp
bmxpbmUgYXNtIHN0YXRlbWVudCksIGNyZWF0ZSBhIG5ldyBmaWxlIHRyYWNrZXIsIGluIGVmZmVj
dAorICAgICMgcHJvY2Vzc2luZyB0aGUgLmZpbGUgYW5kIC5sb2MgZGlyZWN0aXZlcyBpbiBhIG5l
dyAibmFtZXNwYWNlIgorICAgICMgKGFzIGZhciBhcyB0aGUgZmlsZSBudW1iZXJzIGFyZSBjb25j
ZXJuZWQpLiBUaGlzIGlzIGFuIGFycmF5LAorICAgICMgYnV0IGluIHByYWN0aWNlIHRoZSBzaXpl
IHdpbGwgZWl0aGVyIGJlIDEgKE5PQVBQKSBvciAyIChBUFApLgorICAgIEBhc21fcmVhZGVyLmFw
cF90b19ub2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEB0cmFja2Vycy5wb3AKKyAgICB9CisgICAgQGFzbV9yZWFkZXIubm9hcHBf
dG9fYXBwID0gUHJvYy5uZXcgeyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQHRyYWNrZXJzLnB1c2goRmlsZVNsb3RUcmFja2VyLm5ldyhAdHJhY2tlcnNbLTFd
KSkKKyAgICB9CisgIGVuZAorICBkZWYgcnVuCisgICAgd2hpbGUgdHJ1ZQorICAgICAgbCA9IEBh
c21fcmVhZGVyLm5leHRfbGluZQorICAgICAgYnJlYWsgdW5sZXNzIGwKKworICAgICAgbWQgPSBA
QGZpbGVfcmUubWF0Y2gobCkKKyAgICAgIGlmIG1kCisgICAgICAgIGZpbGVfZGlyZWN0aXZlKG1k
KQorICAgICAgICBuZXh0CisgICAgICBlbmQKKyAgICAgIG1kID0gQEBsb2NfcmUubWF0Y2gobCkK
KyAgICAgIGlmIG1kCisgICAgICAgIGxvY19kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAg
ICAgIGVuZAorICAgICAgQG91dGYud3JpdGUobCkKKyAgICAgIG5leHQKKyAgICBlbmQKKyAgZW5k
CisgIGRlZiBsb2NfZGlyZWN0aXZlKG1kKQorICAgIHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAor
ICAgIHNsb3QgPSB0cmFja2VyLnJlbWFwX3Nsb3QobWRbOnNsb3RdLnRvX2kpCisgICAgQG91dGYu
cHV0cygiI3ttZFs6d2hpdGUxXX0ubG9jI3ttZFs6d2hpdGUyXX0je3Nsb3R9I3ttZFs6cmVzdF19
IikKKyAgZW5kCisgIGRlZiBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRyYWNr
ZXJzLmxhc3QKKworICAgIHByID0gRmlsZURpcmVjdGl2ZUFyZ1NjYW5uZXIubmV3KG1kWzpyZXN0
XSkucGFyc2UKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICAkc3RkZXJyLnB1
dHMoIkVycm9yIHBhcnNpbmcgcGF0aCBhcmd1bWVudCB0byAuZmlsZSBkaXJlY3RpdmU6ICN7cHIu
ZXJyb3J9IikKKyAgICAgIGV4aXQoMikKKyAgICBlbmQKKworICAgIHBhdGggPSBwci5zdHIKKyAg
ICB0cmFja2VyLnJlZ2lzdGVyX3BhdGgocGF0aCwgbWRbOnNsb3RdLnRvX2kpCisKKyAgICBzbG90
ID0gdHJhY2tlci5zbG90X2Zvcl9wYXRoKHBhdGgpCisgICAgQG91dGYucHV0cygiXHQuZmlsZVx0
I3tzbG90fSAje21kWzpyZXN0XX0iKQorICBlbmQKK2VuZAorCisjIEZpcnN0LCBtYWtlIHN1cmUg
b3VyIHRlc3RzIHN0aWxsIHBhc3MuIFRoaXMgb25seSB0YWtlcyBhIGZyYWN0aW9uIG9mCisjIG91
ciBydW50aW1lIGFuZCBlbnN1cmVzIHRoZSB0ZXN0cyB3aWxsIGdldCBydW4gYnkgYW55b25lIHRy
eWluZyBvdXQKKyMgY2hhbmdlcyB0byB0aGlzIGZpbGUuCitzZWxmdGVzdAorCitpZiBBUkdWLnNp
emUgIT0gMgorICAkc3RkZXJyLnB1dHMoIlVzYWdlOiAjeyQwfSBpbnB1dCBvdXRwdXQiKQorICBl
eGl0KDIpCitlbmQKKworaW5wYXRoLCBvdXRwYXRoID0gQVJHVi5jb2xsZWN0IHsgfG58IFBhdGhu
YW1lLm5ldyhuKSB9CisKK2lmIG5vdCBpbnBhdGguZmlsZT8KKyAgJHN0ZGVyci5wdXRzKCJOb3Qg
YSByZWd1bGFyIGZpbGU6IGAje2lucGF0aH1gIikKKyAgZXhpdCgyKQorZW5kCisKK2lmIGlucGF0
aC5leHRuYW1lLnVwY2FzZSAhPSAiLlMiCisgICRzdGRlcnIucHV0cygid2FybmluZzogZmlsZSBg
I3tpbnBhdGh9YCBkb2Vzbid0IGhhdmUgYSBgLnNgIG9yIGAuU2AgZXh0ZW5zaW9uLiBHb2luZyBv
biBhbnl3YXkuLi4iKQorZW5kCisKK0ZpbGUub3BlbihpbnBhdGgsICJyIikgeyB8aW5mfAorICBG
aWxlLm9wZW4ob3V0cGF0aCwgInciKSB7IHxvdXRmfAorICAgIEZpbGVDb25mbGljdFJlc29sdmVy
Lm5ldyhpbmYsIG91dGYpLnJ1bgorICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggYzdiNjM4YmM0MDExYzljZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZTZkZWIwMTQyNTIw
NDA4ZjhjNzgxMDBhYTY4NjVkYTVkZjg3ZDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtNjc1LDggKzY3NSw2IEBAIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHAKIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAKIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcAogbGxpbnQvTExJbnRU
aHVua3MuY3BwCi0vLyBGSVhNRTogV2UgY2FuJ3QgYnVuZGxlIHRoaXMgZmlsZSBkdWUgdG8gYSBj
bGFuZyBidWcuCi1sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBAbm8tdW5pZnkKIAogcGFy
c2VyL0xleGVyLmNwcAogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGY4YWZj
N2EwNzBkNzM1MzgxM2E5ZmIzM2UyZmYyMzUyYzY5ZWJhNzYuLmM5YWFmYzE1ZTg3MDdiYmE5ODky
MTQzMjM1NDczY2YwNzJlNGI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTUzNyw4ICs1MzcsMTkgQEAgSlNWYWx1
ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wY29kZUlELCB2b2lkKiBleGVjdXRhYmxl
QWRkcmVzcywgVk0qIHZtLAogI2RlZmluZSBPRkZMSU5FX0FTTV9PUENPREVfREVCVUdfTEFCRUwo
bGFiZWwpCiAjZW5kaWYKIAorLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4gR0RCIHdoZXJl
LCBpZiB0aGUgY29tcGlsYXRpb24gdW5pdAorLy8gZG9lc24ndCBoYXZlIGFueSBhZGRyZXNzIHJh
bmdlIGluZm9ybWF0aW9uLCBpdHMgbGluZSB0YWJsZSB3b24ndAorLy8gZXZlbiBiZSBjb25zdWx0
ZWQuIEVtaXQge2JlZm9yZSxhZnRlcn1fbGxpbnRfYXNtIHNvIHRoYXQgdGhlIGNvZGUKKy8vIGVt
aXR0ZWQgaW4gdGhlIHRvcCBsZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudCBpcyB3aXRoaW4gZnVu
Y3Rpb25zCisvLyB2aXNpYmxlIHRvIHRoZSBjb21waWxlci4gVGhpcyB3YXksIEdEQiBjYW4gcmVz
b2x2ZSBhIFBDIGluIHRoZQorLy8gbGxpbnQgYXNtIGNvZGUgdG8gdGhpcyBjb21waWxhdGlvbiB1
bml0IGFuZCB0aGUgc3VjY2Vzc2Z1bGx5IGxvb2sKKy8vIHVwIHRoZSBsaW5lIG51bWJlciBpbmZv
cm1hdGlvbi4KK0RFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSKGJlZm9yZV9sbGludF9hc20pCisK
IC8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlu
cyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKIC8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNv
bXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCiAjaW5jbHVkZSAiTExJbnRBc3Nl
bWJseS5oIgogCitERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUihhZnRlcl9sbGludF9hc20pCisK
ICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vY29uZmlnLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vY29uZmlnLnJiCmluZGV4IDQ5NTQzZmNkMWIyZmExNmU2NTg4YjY4MzI4OWFjMDQ3NzI3Yjdm
MGUuLjJmMzEyM2U1ZmEwNDM1M2RhMGEzNzJmNDU5ZWQzNzhhZGY4MzI5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKQEAgLTg5LDYgKzg5LDEwIEBAIGRl
ZiBzaG91bGRFbmFibGVEZWJ1Z0Fubm90YXRpb25zKCkKICAgICAgICAgICAgICAgICBlbmQKICAg
ICAgICAgICAgIGVuZAogICAgICAgICBlbmQKKyAgICBlbHNpZiBFTlZbIkNNQUtFX0NYWF9DT01Q
SUxFUl9JRCJdID09ICdHTlUnIGFuZAorICAgICAgICAgRU5WWyJHQ0NfT0ZGTElORUFTTV9TT1VS
Q0VfTUFQIl0gPT0gJ09OJworICAgICAgIyBBbGwgR0NDIHZlcnNpb25zIHRoYXQgY2FuIGJ1aWxk
IEpTQyBzdXBwb3J0IGRlYnVnIGFubm90YXRpb25zCisgICAgICByZXR1cm4gdHJ1ZQogICAgIGVu
ZAogCiAgICAgZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IDQzNzRjYjNhZjIzYzg5YmI1MzQ5NDY5ZGM4
OGVmYzY0NDYxNGE0N2MuLjBmYjMzMjAyN2VkOWVmNWY2NDJkYWQ2ZWQ4OTU2NTVkNmIwMzFmYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ29tcGlsZXIuaApAQCAtMzgyLDYgKzM4MiwxNyBAQAogI2RlZmluZSBXQVJOX1VOVVNFRF9S
RVRVUk4KICNlbmRpZgogCisvKiBERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUiAqLworCisjaWYg
IWRlZmluZWQoREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIpICYmIENPTVBJTEVSKEdDQykKKyNk
ZWZpbmUgREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIobmFtZSkgXAorICAgIF9fYXR0cmlidXRl
X18oKF9fbm9fcmVvcmRlcl9fKSkgdm9pZCBuYW1lKHZvaWQpIHsgX19hc21fXygiIik7IH0KKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIpCisjZGVmaW5l
IERFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSKG5hbWUpCisjZW5kaWYKKwogI2lmICFkZWZpbmVk
KF9faGFzX2luY2x1ZGUpICYmIENPTVBJTEVSKE1TVkMpCiAjZGVmaW5lIF9faGFzX2luY2x1ZGUo
cGF0aCkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmluZGV4IGE1NzRlZjhjMjIy
YmEwNzIwZDIyYTFmZDVkNWM4MTUzYTRkY2Y3MjEuLmVhMTM2MjQ4M2U3ODBlNDE1Y2M4NTQ4Y2M2
ZjkxNGIyYTg4Y2Q4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCkBAIC0xMTIsNiArMTEy
LDE1IEBAIGlmIChERUJVR19GSVNTSU9OKQogICAgIHNldChDTUFLRV9TSEFSRURfTElOS0VSX0ZM
QUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC1XbCwtLWdkYi1pbmRleCIpCiBlbmRpZiAo
KQogCitzZXQoR0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxUIE9GRikKK2lmIChDTUFL
RV9CVUlMRF9UWVBFIFNUUkVRVUFMICJEZWJ1ZyIgT1IgQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVB
TCAiUmVsV2l0aERlYkluZm8iKQorICAgIHNldChHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RF
RkFVTFQgT04pCitlbmRpZiAoKQorCitvcHRpb24oR0NDX09GRkxJTkVBU01fU09VUkNFX01BUAor
ICAiUHJvZHVjZSBkZWJ1ZyBsaW5lIGluZm9ybWF0aW9uIGZvciBvZmZsaW5lYXNtLWdlbmVyYXRl
ZCBjb2RlIgorICAke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVH0pCisKICMgRW5h
YmxlIHRoZSB1c2FnZSBvZiBPcGVuTVAuCiAjICAtIEF0IHRoaXMgbW9tZW50LCBPcGVuTVAgaXMg
b25seSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uCiAjICAgIHRvIG5hdGl2
ZSB0aHJlYWRzIGZvciB0aGUgcGFyYWxsZWxpemF0aW9uIG9mIHRoZSBTVkcgZmlsdGVycy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395790</attachid>
            <date>2020-04-08 04:21:59 -0700</date>
            <delta_ts>2020-04-08 06:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200408112158.patch</filename>
            <type>text/plain</type>
            <size>29536</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi43NTQxZWI3NDNmMDk0NWNi
NDkyZDFmNjgxNjAyZWU3ZjM4ZGZiNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
aGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVidWcK
KyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0YXRp
b25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZpbGUg
ZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAgICAg
IHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGlsYXRp
b24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lmaWNh
bGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQtaW4g
YXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMsIGJ1
dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQg
YXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cg
dXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5nbGUg
c291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciBp
dC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcgd2l0
aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBkZWJ1
ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJbmZv
IGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4KKwor
ICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBmb3Ig
YSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRoZSBh
ZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmlsZS4g
SW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZlIHRv
IGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uOGY5MGQ5ZjY0NTRk
ODk2YjIwMDQ2Yjg3YThiZjNiYjViMzVlNTNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjIwLDYgKzIyMCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBF
TkRTICR7R0VORVJBVE9SfSBieXRlY29kZS9CeXRlY29kZUxpc3QucmIKICAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdG9yL21haW4ucmIg
LS1ieXRlY29kZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVj
b2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gLS1ieXRlY29kZV9zdHJ1Y3RzX2ggJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZVN0cnVjdHMuaCAtLWJ5dGVjb2Rl
X2luZGljZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2Rl
SW5kaWNlcy5oICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
LS13YXNtX2pzb24gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3dhc20vd2FzbS5qc29uIC0td2FzbV9s
bGludF9nZW5lcmF0b3JfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1dh
c21MTEludEdlbmVyYXRvcklubGluZXMuaCAtLWluaXRfd2FzbV9sbGludCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFzbSAtLWJ5dGVjb2RlX2R1bXBlciAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2RlRHVtcGVyR2VuZXJh
dGVkLmNwcAogICAgIFZFUkJBVElNKQorYWRkX2N1c3RvbV90YXJnZXQoQnl0ZWNvZGVzIERFUEVO
RFMgIiR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQnl0ZWNvZGVzLmgiKQog
CiAKIGlmIChXVEZfT1NfTUFDX09TX1gpCkBAIC0zMjMsNyArMzI0LDcgQEAgYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
LyR7TExJbnRPdXRwdXR9CiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYgogICAgIERFUEVORFMgTExJbnRPZmZzZXRzRXh0cmFjdG9yICR7
TExJTlRfQVNNfSAke09GRkxJTkVfQVNNfSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5pdFdhc20uYXNtCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9B
U01fQVJHU30KKyAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52IENNQUtFX0NYWF9D
T01QSUxFUl9JRD0ke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0gR0NDX09GRkxJTkVBU01fU09VUkNF
X01BUD0ke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVB9ICR7UlVCWV9FWEVDVVRBQkxFfSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIgLUkke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gJDxUQVJHRVRfRklMRTpMTEludE9mZnNldHNFeHRyYWN0b3I+ICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0gJHtPRkZMSU5F
X0FTTV9BUkdTfQogICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSB0b3VjaF9ub2NyZWF0
ZSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9CiAg
ICAgV09SS0lOR19ESVJFQ1RPUlkgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fQogICAgIFZFUkJBVElNKQpAQCAtMzQ4LDEwICszNDksMTcgQEAgaWYgKE1TVkMgQU5EIE5PVCBF
TkFCTEVfQ19MT09QKQogICAgICAgICBDT01NQU5EICR7TUFTTV9FWEVDVVRBQkxFfSAke0xMSU5U
X01BU01fRkxBR1N9ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2
ZWxJbnRlcnByZXRlcldpbi5vYmogJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9Mb3dMZXZlbEludGVycHJldGVyV2luLmFzbQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0
KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRlcnByZXRlcldpbi5vYmopCisgICAgYWRkX2xpYnJhcnko
TG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1QgbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHApCiBlbHNlICgpCi0gICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwotICAg
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xMSW50QXNzZW1ibHku
aAotICAgICkKKyAgICAjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9ydCBmb3IgdXNp
bmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisgICAgIyBpbmxpbmUgYXNtIChpLmUuIHRoZXJlJ3Mg
bm8gd2F5IHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgYC5maWxlYAorICAgICMgZGlyZWN0aXZl
cyBnZW5lcmF0ZWQgYnkgdGhlIEMgY29kZSBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCksIHdlCisg
ICAgIyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0
cyBhc3NlbWJsZWQgaW50bworICAgICMgYW4gb2JqZWN0IGZpbGUuIFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIGZvciBMb3dMZXZlbEludGVycHJldGVyLmNwcAorICAgICMgYW5kIGNtYWtlIGRvZXNu
J3QgYWxsb3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICMg
c2luZ2xlIHNvdXJjZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdl
dCBmb3IgaXQuCisgICAgYWRkX2xpYnJhcnkoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1Qg
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKyAgICAgICAgJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSkKIGVuZGlmICgpCiAKICMgV2ViQXNz
ZW1ibHkgZ2VuZXJhdG9yCkBAIC0xMzYyLDYgKzEzNzAsMzEgQEAgdGFyZ2V0X2luY2x1ZGVfZGly
ZWN0b3JpZXMoTExJbnRPZmZzZXRzRXh0cmFjdG9yIFNZU1RFTSBQUklWQVRFICR7SmF2YVNjcmlw
dENvcmUKIAogYWRkX3N1YmRpcmVjdG9yeShzaGVsbCkKIAordGFyZ2V0X2luY2x1ZGVfZGlyZWN0
b3JpZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgIFBSSVZBVEUgIiQ8VEFSR0VUX1BST1BF
UlRZOkphdmFTY3JpcHRDb3JlLElOQ0xVREVfRElSRUNUT1JJRVM+IikKK2FkZF9kZXBlbmRlbmNp
ZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBXVEZfQ29weUhlYWRlcnMpCithZGRfZGVwZW5kZW5j
aWVzKExvd0xldmVsSW50ZXJwcmV0ZXJMaWIgQnl0ZWNvZGVzKQorCitpZiAoQ01BS0VfQ09NUElM
RVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQKQorICAgIG1lc3NhZ2Uo
U1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisgICAgc2V0KExvd0xldmVs
SW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTX0RJ
Un0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3BlcnR5KFBST1BfUlVMRV9M
QVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyTGliIFJVTEVfTEFVTkNIX0NPTVBJTEUp
CisgICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAgICAgc2V0KExvd0xldmVs
SW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRlcl9MQVVOQ0hFUn0gJHtQ
Uk9QX1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQorICAgIHNldF9wcm9wZXJ0
eShUQVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgICAgICBQUk9QRVJUWSBSVUxFX0xB
VU5DSF9DT01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVJ9IikKKworICAgICMg
UGFzcyBpbiB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLCBz
byB0aGF0CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBpZGVudGlmeSB0aGUgc291
cmNlIGZpbGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCJsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAgICAgICBDT01QSUxFX0RF
RklOSVRJT05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAi
KQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAkPFRBUkdF
VF9PQkpFQ1RTOkxvd0xldmVsSW50ZXJwcmV0ZXJMaWI+KQorCiBXRUJLSVRfQ09NUFVURV9TT1VS
Q0VTKEphdmFTY3JpcHRDb3JlKQogV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke0phdmFTY3JpcHRD
b3JlX1NPVVJDRVN9KQogV0VCS0lUX0ZSQU1FV09SSyhKYXZhU2NyaXB0Q29yZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBh
MzEyZWU0YTc4MTQ5ZmM5ZTllZTEzNDM4MWFjNGY2Y2QwMGJmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3MtYXNtCkBAIC0wLDAgKzEs
MTkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBXcmFw
cGVyIGZvciBhIC5jcHAgLT4gLm8gY29tcGlsYXRpb24gY29tbWFuZC4gSXQKKyMgMS4gY29udmVy
dHMgdGhlIGNvbW1hbmQgdG8gZ2VuZXJhdGUgYSBgLnMnIGZpbGUKKyMgMi4gcnVucyB0aGUgQVNN
IHBvc3Rwcm9jZXNzb3Igb24gaXQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIGAuc2AgZmlsZQorIyAz
LiBhc3NlbWJsZXMgdGhlIGAuc2AgZmlsZSB0byBhIGAub2AgZmlsZQorCiskYXNtX3N1ZmZpeF9w
cmUgPSAiLnByZS5zIgorJGFzbV9zdWZmaXggPSAiLnMiCiskcG9zdHByb2Nlc3NvciA9ICIje0Zp
bGUuZGlybmFtZSgkMCl9L3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJiIgorCisKKyRpbnRl
cm1lZGlhdGVfcGF0aHMgPSBbXQorCisjIFdlIG5lZWQgdG8gd29yayB3aXRoIGluZGljZXMgYSBs
b3QgYW5kIHVuZm9ydHVuYXRlbHkgJ2dldG9wdGxvbmcnIGluCisjIHRoZSBzdGFuZGFyZCBsaWJy
YXJ5IGRvZXNuJ3QgZXhwb3NlIG9wdGluZCwgc28gd2UncmUgZ29pbmcgd2l0aAorIyBhcnJheSBz
ZWFyY2hlcyBmb3Igc2ltcGxpY2l0eS4KK2RlZiBpbmRleF9ub2ZhaWwoYXJ5LCBmLCBlcnJtc2cp
CisgIGlkeCA9IGFyeS5pbmRleCB7IHxlbHwKKyAgICBmLmNhbGwoZWwpCisgIH0KKyAgaWYgaWR4
Lm5pbD8KKyAgICAkc3RkZXJyLnB1dHMoZXJybXNnKQorICAgIGV4aXQoMykKKyAgZW5kCisgIGlk
eAorZW5kCisKKyMgRmluZCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgZmlsZSBmb3IgdGhpcyBjb21w
aWxhdGlvbiBjb21tYW5kLAorIyByZW1vdmluZyBpdCBmcm9tIHRoZSBhcmdzLiBOb3RlIHRoYXQg
dGhlIHBhdGggKEEpIGFzIGl0IGFwcGVhcnMgaGVyZQorIyAoY29taW5nIGZyb20gYSBjbWFrZSBy
dWxlKSBpcyBsaWtlbHkgdG8gYmUgZGlmZmVyZW50IHRvIHRoZQorIyBhbm9ueW1vdXMgYXJndW1l
bnQgKEIpIHRvIHRoZSBjb21waWxhdGlvbiBjb21tYW5kLiBIb3dldmVyLCBBIHdpbGwKKyMgYmUg
YSBzdWZmaXggb2YgQi4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlmIHRoZSBhcmd1bWVudCBp
cyBub3QgdGhlcmUuIFRoaXMgaGFzIGFscmVhZHkKKyMgYmVlbiBjaGVja2VkIGJ5IGBjeHgtd3Jh
cHBlcmAsIG90aGVyd2lzZSB3ZSB3b3VsZG4ndCBiZSBydW5uaW5nLgorZGVmIGV4dHJhY3RfaW5w
dXQhKGFyZ3MpCisgIHByZWZpeCA9ICctRFBPU1RQUk9DRVNTX0FTTT0nCisKKyAgaWR4ID0gaW5k
ZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICBhcmcuc3RhcnRfd2l0aD8ocHJl
Zml4KQorICB9LCAiTm8gYC1EUE9TVFBST0NFU1NfQVNNYCBhcmd1bWVudGAiKQorCisgIHBhdGgg
PSBhcmdzW2lkeF1bcHJlZml4LnNpemUuLi0xXQorICBpZiBwYXRoLnNpemUgPT0gMAorICAgICRz
dGRlcnIucHV0cygiRW1wdHkgcGF0aCBpbiAtRFBPU1RQUk9DRVNTX0FTTT0iKQorICAgIGV4aXQo
MykKKyAgZW5kCisgICMgV2Ugb25seSBuZWVkIHRoaXMgdG8gYmUgZGVmaW5lZCBmb3IgdGhlIHBy
ZXByb2Nlc3NvciAobm90IGFueQorICAjIHdyYXBwZXIpIGZyb20gbm93IG9uLgorICBhcmdzW2lk
eF0gPSAiLURQT1NUUFJPQ0VTU19BU00iCisgIHJldHVybiBwYXRoCitlbmQKKworIyBHZXQgdGhl
IGluZGV4IG9mIHRoZSBmaXJzdCBhcmd1bWVudCBlbmRpbmcgaW4gdGhpcyBzdWZmaXguCisjCisj
IEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXNuJ3QgdGhlcmUuIFdlJ3JlIG9u
bHkgZXZlcgorIyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgd2Uga25vdyBhcmUgYmVpbmcgcGFzc2Vk
IGluIGJ5IHRoZSBidWlsZAorIyBzeXN0ZW0uCitkZWYgZ2V0X2FyZ19pZHhfc3VmZml4KGFyZ3Ms
IHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAgICAg
ICAgICAgICAgYXJnLmVuZF93aXRoPyh3YW50ZWQpCisgICAgICAgICAgICAgICB9LCAiTm8gYXJn
dW1lbnQgZW5kcyB3aXRoICN7d2FudGVkfSIpCitlbmQKKworIyBHZXQgaW5kZXggb2YgYSBnaXZl
biBhcmd1bWVudC4gRGllIGlmIGl0J3Mgbm90IHRoZXJlLgorZGVmIGdldF9hcmdfaWR4KGFyZ3Ms
IHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICAgICAg
ICAgICAgICAgYXJnID09IHdhbnRlZAorICAgICAgICAgICAgICAgfSwgIk5vIGAje3dhbnRlZH1g
IGFyZ3VtZW50IikKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgYC1vYCBhbmQgdmVyaWZ5IHRo
YXQgYW4gYXJndW1lbnQgZm9sbG93cy4KKyMgQm90aCBhcmUgZ3VhcmFudGVlZCB0byBleGlzdCAo
ZnJvbSBvdXIgYnVpbGQgc3lzdGVtKS4KK2RlZiBnZXRfb19pZHgoYXJncykKKyAgaSA9IGdldF9h
cmdfaWR4KGFyZ3MsICctbycpCisgIGlmIChpICsgMSkgPj0gYXJncy5zaXplCisgICAgJHN0ZGVy
ci5wdXRzKCJObyBhcmd1bWVudCB0byBgLW9gIikKKyAgICBleGl0KDMpCisgIGVuZAorICBpCitl
bmQKKworIyBSdW4gY29tbWFuZCBhbmQgZGllIGlmIGl0IGZhaWxzLCBwcm9wYWdhdGluZyB0aGUg
ZXhpdCBjb2RlLgorZGVmIHJ1bl9jbWQoY21kKQorICBwaWQgPSBQcm9jZXNzLnNwYXduKCpjbWQp
CisgIFByb2Nlc3Mud2FpdHBpZChwaWQpCisgIHJldCA9ICQ/CisgIGlmIG5vdCByZXQuc3VjY2Vz
cz8KKyAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHJ1bm5pbmcgY21kOiAje3JldH0iKQorICAgIGV4
aXQocmV0LmV4aXRzdGF0dXMpCisgIGVuZAorZW5kCisKKyMgQ29udmVydAorIyAgICBjeHggLW8g
YmxhaC5vIC1jIGJsYWguY3BwCisjIHRvCisjICAgIGN4eCAtbyBibGFoLnMgLVMgYmxhaC5jcHAK
K2RlZiBidWlsZF9jeHhfY21kKGFyZ3MpCisgIGNfaWR4ID0gZ2V0X2FyZ19pZHgoYXJncywgJy1j
JykKKyAgb19pZHggPSBnZXRfb19pZHgoYXJncykKKworICBjeHhfYXJncyA9IGFyZ3MuY2xvbmUK
KworICBjeHhfYXJnc1tjX2lkeF0gPSAnLVMnCisgIG9fcGF0aCA9IGN4eF9hcmdzW29faWR4ICsg
MV0KKyAgY3h4X2FyZ3Nbb19pZHggKyAxXSA9IG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZm
aXgpCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgY3h4X2FyZ3Nbb19pZHggKyAxXQorICBpZiBj
eHhfYXJnc1tvX2lkeCArIDFdID09IG9fcGF0aAorICAgICRzdGRlcnIucHV0cygiT3V0cHV0IGZp
bGUgbmFtZSBub3QgYW4gb2JqZWN0IGZpbGU6IGAje29fcGF0aH1gIikKKyAgICBleGl0KDMpCisg
IGVuZAorICBjeHhfYXJncworZW5kCisKKyMgRG8KKyMgICAgIG12IGJsYWguUyBibGFoLnByZS5T
CisjIFRoZSByZWFzb24gd2UgZG8gYSByZW5hbWUgaW5zdGVhZCBvZiBkaXJlY3RseSBnZW5lcmF0
aW5nIHRoZSAucHJlLnMKKyMgZmlsZSB3aGVuIGNvbXBpbGluZyBpcyBzbyB0aGF0IHRoZSBjb3Jy
ZXNwb25kaW5nIC5kd28gZmlsZSB3aWxsIGhhdmUKKyMgdGhlIGNvcnJlY3QgbmFtZSBlbWJlZGRl
ZC4KK2RlZiByZW5hbWVfc19maWxlKGFyZ3MpCisgIG9fcGF0aCA9IGFyZ3NbZ2V0X29faWR4KGFy
Z3MpICsgMV0KKyAgRmlsZS5yZW5hbWUob19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCks
CisgICAgICAgICAgICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9zdWZmaXhfcHJlKSkKK2Vu
ZAorCisjIEJ1aWxkCisjICAgICBwb3N0cHJvY2Vzc29yIGJsYWgucHJlLlMgYmxhaC5TCitkZWYg
YnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykKKyAgb19wYXRoID0gYXJnc1tnZXRfb19pZHgo
YXJncykgKyAxXQorCisgIHBwX2FyZ3MgPSBbCisgICAgJHBvc3Rwcm9jZXNzb3IsCisgICAgb19w
YXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpLCAjIGlucHV0CisgICAgb19wYXRoLnN1
YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkgIyBvdXRwdXQKKyAgXQorICAkaW50ZXJtZWRpYXRlX3Bh
dGhzIDw8IHBwX2FyZ3NbLTJdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgcHBfYXJnc1stMV0K
KyAgcHBfYXJncworZW5kCisKKyMgQnVpbGQKKyMgICAgIGN4eCAtbyBibGFoLm8gLWMgYmxhaC5T
CitkZWYgYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkKKyAgaV9pZHggPSBnZXRfYXJnX2lkeF9z
dWZmaXgoYXJncywgaV9wYXRoKQorICBvX3BhdGggPSBhcmdzW2dldF9vX2lkeChhcmdzKSArIDFd
CisKKyAgYXNfYXJncyA9IGFyZ3MuY2xvbmUKKyAgaV9wYXRoID0gYXNfYXJnc1tpX2lkeF0KKyAg
YXNfYXJnc1tpX2lkeF0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21fc3VmZml4KQorICBhc19h
cmdzCitlbmQKKworYXJncyA9IEFSR1YudG9fYQoraV9wYXRoID0gZXh0cmFjdF9pbnB1dCEoYXJn
cykKKworYmVnaW4KKyAgcnVuX2NtZChidWlsZF9jeHhfY21kKGFyZ3MpKQorICByZW5hbWVfc19m
aWxlKGFyZ3MpCisgIHJ1bl9jbWQoYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykpCisgIHJ1
bl9jbWQoYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkpCitlbnN1cmUKKyAgJGludGVybWVkaWF0
ZV9wYXRocy5lYWNoIHsgfHB8CisgICAgaWYgRmlsZS5leGlzdD8ocCkKKyAgICAgIEZpbGUuZGVs
ZXRlKHApCisgICAgZW5kCisgIH0KK2VuZAorCitleGl0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3RzLnJi
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIxODMyZDhkMDFmMjljYWFhMzZhOWQ2YzBiMTQ5NjFkN2E0OGI3ZGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFz
bS1maWxlLWNvbmZsaWN0cy5yYgpAQCAtMCwwICsxLDM5OSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVi
eQorCisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUmVzb2x2ZSBjb25mbGljdHMgaW4gYC5maWxlYCBk
aXJlY3RpdmVzIGluIGFzc2VtYmxlciBmaWxlcy4gVGhvc2UKKyMgbWF5IHJlc3VsdCBmcm9tIGlu
bGluZSBhc20gc3RhdGVtZW50cyB3aGljaCB0aGVtc2VsdmVzIGhhdmUgYC5maWxlYAorIyBkaXJl
Y3RpdmVzLiBBcyB0aGUgaW5saW5lIGFzbSBoYXMgbm8gaWRlYSB3aGF0IHRoZSBuZXh0IGZyZWUg
ZmlsZQorIyBudW1iZXIgaXMsIGl0J2xsIGdlbmVyYWxseSBoYXZlIGl0cyBvd24gbnVtYmVyaW5n
LiBUbyBnZXQgdGhpbmdzIHRvCisjIHdvcmsgd2UgaGF2ZSB0bworIyAxLiByZW1hcCBjb25mbGlj
dGluZyBmaWxlIG51bWJlcnMKKyMgMi4gY2hhbmdlIGAubG9jYCBkaXJlY3RpdmVzIHRvIHJlZmVy
ZW5jZSB0aGUgYXBwcm9wcmlhdGUgZmlsZSBudW1iZXIuCisjCisjIFRvIGJlIGFibGUgdG8gZG8g
dGhhdCwgd2UgbmVlZCBzb21lIGNvbmNlcHQgb2YgInNjb3BlIiwgaS5lLiB3aGljaAorIyBzZXQg
b2YgZmlsZXMgYSBnaXZlbiBgLmxvY2AgZGlyZWN0aXZlIHJlZmVycyB0by4gV2UgZ2V0IHRoYXQg
YnkKKyMgdHJhY2tpbmcgdGhlICNBUFAvI05PQVBQIGRpcmVjdGl2ZXMgdGhhdCB0aGUgY29tcGls
ZXIgZW1pdHMgd2hlbiBpdAorIyBzd2l0Y2ggdG8vZnJvbSBpbmxpbmUgYXNtLgorIworIyBJbiBl
ZmZlY3QsIHdlIGNvbnZlcnQKKyMgICAgIC5maWxlIDEgImZvbyIKKyMgICAgICNBUFAKKyMgICAg
IC5maWxlIDEgImJhciIKKyMgICAgIC5maWxlIDIgImZvbyIKKyMgICAgIC5sb2MgMSwgWAorIyAg
ICAgI05PQVBQCisjICAgICAubG9jIDEsIFkKKyMgdG8KKyMgICAgIC5maWxlIDEgImZvbyIKKyMg
ICAgICNBUFAKKyMgICAgIC5maWxlIDIgImJhciIKKyMgICAgIC5maWxlIDEgImZvbyIKKyMgICAg
IC5sb2MgMiwgWAorIyAgICAgI05PQVBQCisjICAgICAubG9jIDEsIFkKKworcmVxdWlyZSAncGF0
aG5hbWUnCityZXF1aXJlICdzdHJpbmdpbycKK3JlcXVpcmUgJ3N0cnNjYW4nCisKK1BhcnNlUmVz
dWx0U3VjY2VzcyA9IFN0cnVjdC5uZXcoOnN0cikKK1BhcnNlUmVzdWx0RXJyb3IgPSBTdHJ1Y3Qu
bmV3KDplcnJvcikKKworIyBQYXJzZXMgdGhlIHNpbmdsZSBzdHJpbmcgbGl0ZXJhbCBmb2xsb3dp
bmcgYSAuZmlsZSBhc3NlbWJsZXIgZGlyZWN0aXZlCitjbGFzcyBGaWxlRGlyZWN0aXZlQXJnU2Nh
bm5lcgorICBkZWYgaW5pdGlhbGl6ZShzKQorICAgIEBzID0gU3RyaW5nU2Nhbm5lci5uZXcocykK
KyAgZW5kCisgIGRlZiBwYXJzZQorICAgIEBzLnNraXAoL1xzKi8pCisKKyAgICAjIFdlIHJlcXVp
cmUgYXQgbGVhc3Qgb25lIHN0cmluZyBsaXRlcmFsCisgICAgcmV0ID0gcGFyc2Vfc3RyaW5nX2xp
dGVyYWwKKyAgICBpZiByZXQucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgcmV0dXJuIHJldAor
ICAgIGVuZAorCisgICAgQHMuc2tpcCgvXHMqLykKKyAgICBpZiBub3QgQHMuZW9zPworICAgICAg
cmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KCJFeHBlY3RlZCBlbmQgb2YgbGluZSBhZnRlciAj
e3JldC5zdHJ9IikKKyAgICBlbmQKKyAgICByZXR1cm4gUGFyc2VSZXN1bHRTdWNjZXNzLm5ldyhy
ZXQuc3RyKQorICBlbmQKKyAgZGVmIHBhcnNlX3N0cmluZ19saXRlcmFsCisgICAgaWYgQHMuc2Nh
bigvIi8pLm5pbD8KKyAgICAgIGVyciA9ICJFeHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCBhdCBgI3tA
cy5zdHJpbmd9YCAocG9zICN7QHMucG9zfSkiCisgICAgICByZXR1cm4gUGFyc2VSZXN1bHRFcnJv
ci5uZXcoZXJyKQorICAgIGVuZAorICAgIHBhcnNlX3VudGlsX2VuZF9vZl9zdHJpbmdfbGl0ZXJh
bAorICBlbmQKKyAgZGVmIHBhcnNlX3VudGlsX2VuZF9vZl9zdHJpbmdfbGl0ZXJhbAorICAgIHN0
YXJ0X3BvcyA9IEBzLnBvcworICAgIHdoaWxlIHRydWUKKyAgICAgICMgU2VhcmNoIGZvciBvdXIg
c3BlY2lhbCBjaGFyYWN0ZXJzCisgICAgICBAcy5za2lwKC9bXiJcXF0rLykKKyAgICAgIGlmIEBz
LnNjYW4oL1xcLykKKyAgICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAgICAgICAgICMgV2hlbiB3
ZSBzZWUgJ1xcJywgY29uc3VtZSBib3RoIGNoYXJhY3RlcnMgc28gdGhhdCB0aGUKKyAgICAgICAg
ICAjIHNlY29uZCAnXCcgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyBhbiBlc2NhcGUgY2hhci4KKyAg
ICAgICAgICBuZXh0CisgICAgICAgIGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAgICAgICMgRm9y
ICdcIicsIGNvbnN1bWUgYm90aCBjaGFyYWN0ZXJzIHNvIHRoYXQgdGhlICciJyB3aWxsIG5vdAor
ICAgICAgICAgICMgdGVybWluYXRlIHRoZSBzdHJpbmcuCisgICAgICAgICAgbmV4dAorICAgICAg
ICBlbmQKKyAgICAgICAgbmV4dAorICAgICAgZWxzaWYgQHMuc2NhbigvIi8pCisgICAgICAgICMg
JyInIHdpdGhvdXQgYSBwcmVjZWVkaW5nICdcJzsgdGVybWluYXRlIHRoZSBsaXRlcmFsLgorICAg
ICAgICAjIFdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgJyInLCBzbyB0aGUgbGl0ZXJhbCBlbmRzIGF0
IC0yCisgICAgICAgICMgY2hhcmFjdGVycy4KKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0U3Vj
Y2Vzcy5uZXcoQHMuc3RyaW5nW3N0YXJ0X3Bvcy4uKEBzLnBvcyAtIDIpXSkKKyAgICAgIGVsc2lm
IEBzLmVvcz8KKyAgICAgICAgZXJyID0gIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCAoc3Rh
cnRpbmcgYXQgcG9zICN7c3RhcnRfcG9zfSBpbiAje0BzLnN0cmluZ30iCisgICAgICAgIHJldHVy
biBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgICBlbmQKKyAgICAgIHJhaXNlICJJbnRl
cm5hbCBlcnJvciAoI3tAcy5pbnNwZWN0fSkiCisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiB0
ZXN0KG91dGYsIHN0ciwgcmVzKQorICBwciA9IEZpbGVEaXJlY3RpdmVBcmdTY2FubmVyLm5ldyhz
dHIpLnBhcnNlCisgIGlmIHJlcy5pc19hPyhBcnJheSkKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6
ZXJyb3IpCisgICAgICBvdXRmLnB1dHMoIlBhcnNlIHJlc3VsdCBpcyBgI3twci5lcnJvcn1gIGJ1
dCBleHBlY3RlZCAje3Jlc30iKQorICAgICAgcmV0dXJuIGZhbHNlCisgICAgZW5kCisgICAgaWYg
cHIuc3RyICE9IHJlc1swXQorICAgICAgb3V0Zi5wdXRzKCJQYXJzZWQgcGF0aCBgI3twci5zdHJ9
YCBidXQgZXhwZWN0ZWQgYCN7cmVzWzBdfWAiKQorICAgICAgcmV0dXJuIGZhbHNlCisgICAgZW5k
CisgICAgcmV0dXJuIHRydWUKKyAgZWxzaWYgcmVzLmlzX2E/KFN0cmluZykKKyAgICBpZiBwci5y
ZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICBpZiBub3QgcHIuZXJyb3IuZG93bmNhc2UuaW5jbHVk
ZT8ocmVzLmRvd25jYXNlKQorICAgICAgICBlcnIgPSAiRXJyb3IgbWVzc2FnZSBgI3twci5lcnJv
cn1gIGRvZXMgbm90IGluY2x1ZGUgZXhwZWN0ZWQgc3Vic3RyaW5nIGAje3Jlc31gIgorICAgICAg
ICBvdXRmLnB1dHMoZXJyKQorICAgICAgICByZXR1cm4gZmFsc2UKKyAgICAgIGVuZAorICAgICAg
cmV0dXJuIHRydWUKKyAgICBlbmQKKyAgICBvdXRmLnB1dHMoIkV4cGVjdGVkIGVycm9yICgje3Jl
c30pIGJ1dCBnb3Qgc3VjY2Vzc2Z1bCBwYXJzZSAje3ByLnN0cn0iKQorICAgIHJldHVybiBmYWxz
ZQorICBlbHNlCisgICAgcmFpc2UgIkludGVybmFsIGVycm9yICN7cmVzLmNsYXNzfSIKKyAgZW5k
CitlbmQKKworZGVmIHNlbGZ0ZXN0CisgIG5yX3N1Y2NlZWRlZCA9IDAKKyAgdGVzdHMgPSBbCisg
ICAgIyBzaW1wbGUgc3RyaW5nCisgICAgWyciZm9vL2JhciInLCBbImZvby9iYXIiXV0sCisKKyAg
ICBbJyJmb28nLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAgICBbJyJmb29c
IicsICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAgICMgImZvb1wiCisgICAg
WyJcImZvb1xcXCIiLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAgICAjICJm
b29cXCIKKyAgICBbIlwiZm9vXFxcXFwiIiwgWyJmb29ceDVjXHg1YyJdXSwKKworICAgICMgQ2Fu
IGVzY2FwZSAnIicKKyAgICBbJyJmb29cImJhciInLCBbJ2Zvb1wiYmFyJ11dLAorCisgICAgIyBD
YW4gcGFyc2UgcmVsYXRpdmUKKyAgICBbJyJmb28vYmFyIicsIFsnZm9vL2JhciddXSwKKworICAg
ICMgQ2FuIHBhcnNlIGFic29sdXRlCisgICAgWyciL2JhciInLCBbJy9iYXInXV0sCisKKyAgICAj
IENhbiBwYXJzZSBhYnNvbHV0ZSB3aXRoIHR3byBjb21wb25lbnRzCisgICAgWyciL2Jhci9iYXoi
JywgWycvYmFyL2JheiddXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJheSB0b2tlbgorICAgIFsn
ImZvbyIgYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAgICAjIENhbiBkZXRlY3Qg
c3RyYXkgdG9rZW4gd2l0aG91dCB3aGl0ZXNwYWNlCisgICAgWyciZm9vImJhcicsICJFeHBlY3Rl
ZCBlbmQgb2YgbGluZSJdLAorCisgICAgIyBXaWxsIG5vdCBhY2NlcHQgY2xhbmctc3R5bGUgLmZp
bGUgZGlyZWN0aXZlcworICAgIFsnIndvcmtpbmdfZGlyZWN0b3J5IiAicGF0aCInLCAiRXhwZWN0
ZWQgZW5kIG9mIGxpbmUiXQorICBdCisgIG91dGYgPSBTdHJpbmdJTy5uZXcoIiIpCisgIHRlc3Rz
LmVhY2ggeyB8c3RyLCByZXN8CisgICAgaWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgICAgIG5y
X3N1Y2NlZWRlZCArPSAxCisgICAgZW5kCisgIH0KKyAgaWYgbnJfc3VjY2VlZGVkICE9IHRlc3Rz
LnNpemUKKyAgICAkc3RkZXJyLnB1dHMob3V0Zi5zdHJpbmcpCisgICAgJHN0ZGVyci5wdXRzKCJT
b21lIHNlbGYgdGVzdHMgZmFpbGVkICN7bnJfc3VjY2VlZGVkfS8je3Rlc3RzLnNpemV9IikKKyAg
ICBleGl0KDMpCisgIGVuZAorZW5kCisKKyMgS2VlcCB0cmFjayBvZiB3aGljaCBmaWxlbm8gaXMg
YXNzaWduZWQgdG8gd2hpY2ggZmlsZSBwYXRoLiBXZSBjYWxsCisjIHRoZSBmaWxlbm8gYSAnc2xv
dCcuCitjbGFzcyBGaWxlU2xvdFRyYWNrZXIKKyAgQEBuZXh0X2ZyZWUgPSAxICAgIyBOZXh0IGZy
ZWUgZ2xvYmFsIHNsb3QKKyAgQEBwYXRocyA9IHt9ICMgTWFwcyBwYXRoIC0+IGdsb2JhbCBzbG90
CisgIGRlZiBpbml0aWFsaXplKHBhcmVudCkKKyAgICBAcGFyZW50ID0gcGFyZW50CisgICAgIyBU
aGlzIG1hcHMgZnJvbSBvdXIgb3duIGxvY2FsIHNsb3RzIChpLmUuIHdpdGhpbiBhbiBBUFAgc2Vj
dGlvbikKKyAgICAjIHRvIGEgZ2xvYmFsIHNsb3QuCisgICAgQHNsb3RfbWFwID0ge30KKyAgZW5k
CisgICMgV2UgbWFrZSBzdXJlIHRoYXQgLmZpbGUgZGlyZWN0aXZlcyB0aGF0IHNwZWNpZnkgdGhl
IHNhbWUgcGF0aCBhcmUKKyAgIyBkZWR1cCdkLCBpLmUuIGlmIHdlIHNlZQorICAjICAgICAuZmls
ZSBOICIvcGF0aC90by9pbmNsdWRlLmgiCisgICMgICAgIC4uLgorICAjICAgICAuZmlsZSBNICIv
cGF0aC90by9pbmNsdWRlLmgiCisgICMgdGhlbiB0aGUgImxvY2FsIiBOLCBNIHNsb3RzIHdpbGwg
YmUgbWFwcGVkIHRvIHRoZSBzYW1lICJnbG9iYWwiIHNsb3QuCisgIGRlZiByZWdpc3Rlcl9wYXRo
KHBhdGgsIHNsb3QpCisgICAgY3Vycl9zbG90ID0gQEBwYXRoc1twYXRoXQorICAgIGlmIGN1cnJf
c2xvdC5uaWw/CisgICAgICAjIFdlIGhhdmVuJ3Qgc2VlbiB0aGlzIGZpbGUgYmVmb3JlCisgICAg
ICBpZiBzbG90IDw9IEBAbmV4dF9mcmVlCisgICAgICAgICMgRGVzaXJlZCBmaWxlIHNsb3QgZWl0
aGVyIGNsYXNoZXMgd2l0aCBhbiBleGlzdGluZyBvbmUsIG9yIGlzCisgICAgICAgICMgdGhlIG5l
eHQgb25lIHRvIGJlIGFsbG9jYXRlZC4gSW4gZWl0aGVyIGNhc2UsIGFzc2lnbiB0aGUKKyAgICAg
ICAgIyBuZXh0IGZyZWUgc2xvdC4KKyAgICAgICAgYXNzaWduX25leHRfc2xvdChwYXRoKQorICAg
ICAgZWxzZQorICAgICAgICAjIERvbid0IGFsbG93IHNsb3QgZ2Fwcy4gVGVjaG5pY2FsbHkgd2Ug
Y291bGQgaGFuZGxlIHRoZW0sIGJ1dAorICAgICAgICAjIHRoZXkgc2hvdWxkIG5ldmVyIGhhcHBl
bjsgYmFpbCBub3cgcmF0aGVyIHRoYW4gcGFwZXJpbmcgb3ZlcgorICAgICAgICAjIGFuIGVhcmxp
ZXIgZXJyb3IuCisgICAgICAgICRzdGRlcnIucHV0cygiRmlsZSB3YW50cyBzbG90ICN7c2xvdH0g
YnV0IG9ubHkgc2VlbiAje0BAbmV4dF9mcmVlfSBzbyBmYXIiKQorICAgICAgICBleGl0KDIpCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICAjIFdlJ3ZlIGFscmVhZHkgYXNzaWduZWQgYSBzbG90
IGZvciB0aGlzIGZpbGUuCisgICAgZW5kCisgICAgQHNsb3RfbWFwW3Nsb3RdID0gQEBwYXRoc1tw
YXRoXQorICAgIGlmIEBzbG90X21hcFtzbG90XS5uaWw/CisgICAgICByYWlzZSAiRGlkbid0IG1h
cCBsb2NhbCBzbG90ICN7c2xvdH0iCisgICAgZW5kCisgIGVuZAorICAjIFJldHVybiBnbG9iYWwg
c2xvdCBmb3IgcGF0aAorICBkZWYgc2xvdF9mb3JfcGF0aChwYXRoKQorICAgIHJldHVybiBAQHBh
dGhzW3BhdGhdCisgIGVuZAorICAjIFJldHVybiBnbG9iYWwgc2xvdCB0aGF0IHdpbGwgcmVwbGFj
ZSB0aGUgbG9jYWwgc2xvdAorICBkZWYgcmVtYXBfc2xvdChzbG90KQorICAgIHJldCA9IG5pbAor
ICAgIGlmIEBzbG90X21hcC5zaXplID4gMAorICAgICAgIyBJZiB0aGUgY3VycmVudCBOT19BUFAg
c2VnbWVudCBoYXMgZGVmaW5lZCBhIC5maWxlLCBvbmx5IGxvb2sKKyAgICAgICMgaW4gdGhlIGN1
cnJlbnQgRmlsZVNsb3RUcmFja2VyLiBUaGlzIGlzIHRoZSBjYXNlIGZvciBhCisgICAgICAjIHRv
cC1sZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudC4KKyAgICAgIHJldCA9IEBzbG90X21hcFtzbG90
XQorICAgIGVsc2lmIG5vdCBAcGFyZW50Lm5pbD8KKyAgICAgICMgSWYgdGhlIGN1cnJlbnQgTk9f
QVBQIHNlZ21lbnQgaGFzIG5vdCBkZWZpbmVkIGEgLmZpbGUsIGNsZWFybHkKKyAgICAgICMgYWxs
IC5sb2MgZGlyZWN0aXZlcyByZWZlciB0byBmaWxlcyBkZWZpbmVkIGluIHRoZSBBUFAKKyAgICAg
ICMgcGFydC4gVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLXRvcC1sZXZlbCBpbmxpbmUgYXNtCisg
ICAgICAjIHN0YXRlbWVudHMuCisgICAgICByZXQgPSBAcGFyZW50LnJlbWFwX3Nsb3Qoc2xvdCkK
KyAgICBlbmQKKyAgICBpZiByZXQubmlsPworICAgICAgcmFpc2UgIk5vIGdsb2JhbCBzbG90IGZv
ciAje3Nsb3R9IgorICAgIGVuZAorICAgIHJldAorICBlbmQKKyAgcHJpdmF0ZQorICBkZWYgYXNz
aWduX25leHRfc2xvdChwYXRoKQorICAgIEBAcGF0aHNbcGF0aF0gPSBAQG5leHRfZnJlZQorICAg
IEBAbmV4dF9mcmVlICs9IDEKKyAgZW5kCitlbmQKKworIyBSZXR1cm4gc2VxdWVudGlhbCBsaW5l
cywgd2hpbGUga2VlcGluZyB0cmFjayBvZiB3aGV0aGVyIHdlJ3JlIGluIGFuCisjICNBUFAgb3Ig
I05PQVBQIHNlY3Rpb24uCitjbGFzcyBBc21SZWFkZXIKKyAgYXR0cl9yZWFkZXIgOmluX2FwcAor
ICBhdHRyX2FjY2Vzc29yIDphcHBfdG9fbm9hcHAsIDpub2FwcF90b19hcHAKKyAgZGVmIGluaXRp
YWxpemUoZikKKyAgICBAZiA9IGYKKyAgICBAZi5yZXdpbmQKKyAgICBAbGluZW5yID0gMAorICAg
IEBpbl9hcHAgPSBmYWxzZQorICAgIEBsYXN0X3N3aXRjaCA9ICJzdGFydCBvZiBmaWxlIiAjIEZv
ciBlcnJvciBtZXNzYWdlcworICBlbmQKKyAgZGVmIG5leHRfbGluZQorICAgIHdoaWxlIHRydWUK
KyAgICAgIGwgPSBAZi5nZXRzCisgICAgICBpZiBsLm5pbD8KKyAgICAgICAgcmV0dXJuIGwKKyAg
ICAgIGVuZAorICAgICAgQGxpbmVuciArPSAxCisgICAgICBpZiAvXiNccypBUFBccyovLm1hdGNo
KGwpCisgICAgICAgIGlmIEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAiI0FQUCBvbiBsaW5lICN7
QGxpbmVucn0gYnV0IGFscmVhZHkgaW4gI0FQUCAoI3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAg
ZW5kCisgICAgICAgIEBpbl9hcHAgPSB0cnVlCisgICAgICAgIEBsYXN0X3N3aXRjaCA9IEBsaW5l
bnIKKyAgICAgICAgaWYgQG5vYXBwX3RvX2FwcAorICAgICAgICAgIEBub2FwcF90b19hcHAuY2Fs
bCgpCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgICBpZiAvXiNccypOT19BUFBccyovLm1h
dGNoKGwpCisgICAgICAgIGlmIG5vdCBAaW5fYXBwCisgICAgICAgICAgcmFpc2UgIiNOT0FQUCBv
biBsaW5lICN7QGxpbmVucn0gYnV0IHdhcyBub3QgaW4gI0FQUCAobGFzdCBzd2ljaCBhdCAje0Bs
YXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2FwcCA9IGZhbHNlCisgICAg
ICAgIEBsYXN0X3N3aXRjaCA9IEBsaW5lbnIKKyAgICAgICAgaWYgQGFwcF90b19ub2FwcAorICAg
ICAgICAgIEBhcHBfdG9fbm9hcHAuY2FsbCgpCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAg
ICByZXR1cm4gbAorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBGaWxlQ29uZmxpY3RSZXNv
bHZlcgorICBAQGZpbGVfcmUgPSAvXlxzKlsuXWZpbGVccysoPzxzbG90PlxkKylccysoPzxyZXN0
Pi4qKSQvCisgIEBAbG9jX3JlID0gL14oPzx3aGl0ZTE+XHMqKVsuXWxvYyg/PHdoaXRlMj5ccysp
KD88c2xvdD5cZCspKD88cmVzdD5ccytcZCsuKikkLworICBkZWYgaW5pdGlhbGl6ZShpbmYsIG91
dGYpCisgICAgQG91dGYgPSBvdXRmCisgICAgQHRyYWNrZXJzID0gW0ZpbGVTbG90VHJhY2tlci5u
ZXcobmlsKV0KKyAgICBAYXNtX3JlYWRlciA9IEFzbVJlYWRlci5uZXcoaW5mKQorICAgICMgV2hl
biB3ZSBlbnRlciBhbiAjQVBQIHNlY3Rpb24gKGkuZS4gYXNtIGVtaXR0ZWQgZnJvbSBhbiBleHBh
bmRlZAorICAgICMgaW5saW5lIGFzbSBzdGF0ZW1lbnQpLCBjcmVhdGUgYSBuZXcgZmlsZSB0cmFj
a2VyLCBpbiBlZmZlY3QKKyAgICAjIHByb2Nlc3NpbmcgdGhlIC5maWxlIGFuZCAubG9jIGRpcmVj
dGl2ZXMgaW4gYSBuZXcgIm5hbWVzcGFjZSIKKyAgICAjIChhcyBmYXIgYXMgdGhlIGZpbGUgbnVt
YmVycyBhcmUgY29uY2VybmVkKS4gVGhpcyBpcyBhbiBhcnJheSwKKyAgICAjIGJ1dCBpbiBwcmFj
dGljZSB0aGUgc2l6ZSB3aWxsIGVpdGhlciBiZSAxIChOT0FQUCkgb3IgMiAoQVBQKS4KKyAgICBA
YXNtX3JlYWRlci5hcHBfdG9fbm9hcHAgPSBQcm9jLm5ldyB7IHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhY2tlcnMucG9wCisgICAgfQorICAgIEBhc21f
cmVhZGVyLm5vYXBwX3RvX2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEB0cmFja2Vycy5wdXNoKEZpbGVTbG90VHJhY2tlci5uZXco
QHRyYWNrZXJzWy0xXSkpCisgICAgfQorICBlbmQKKyAgZGVmIHJ1bgorICAgIHdoaWxlIHRydWUK
KyAgICAgIGwgPSBAYXNtX3JlYWRlci5uZXh0X2xpbmUKKyAgICAgIGJyZWFrIHVubGVzcyBsCisK
KyAgICAgIG1kID0gQEBmaWxlX3JlLm1hdGNoKGwpCisgICAgICBpZiBtZAorICAgICAgICBmaWxl
X2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAgICBtZCA9IEBAbG9j
X3JlLm1hdGNoKGwpCisgICAgICBpZiBtZAorICAgICAgICBsb2NfZGlyZWN0aXZlKG1kKQorICAg
ICAgICBuZXh0CisgICAgICBlbmQKKyAgICAgIEBvdXRmLndyaXRlKGwpCisgICAgICBuZXh0Cisg
ICAgZW5kCisgIGVuZAorICBkZWYgbG9jX2RpcmVjdGl2ZShtZCkKKyAgICB0cmFja2VyID0gQHRy
YWNrZXJzLmxhc3QKKyAgICBzbG90ID0gdHJhY2tlci5yZW1hcF9zbG90KG1kWzpzbG90XS50b19p
KQorICAgIEBvdXRmLnB1dHMoIiN7bWRbOndoaXRlMV19LmxvYyN7bWRbOndoaXRlMl19I3tzbG90
fSN7bWRbOnJlc3RdfSIpCisgIGVuZAorICBkZWYgZmlsZV9kaXJlY3RpdmUobWQpCisgICAgdHJh
Y2tlciA9IEB0cmFja2Vycy5sYXN0CisKKyAgICBwciA9IEZpbGVEaXJlY3RpdmVBcmdTY2FubmVy
Lm5ldyhtZFs6cmVzdF0pLnBhcnNlCisgICAgaWYgcHIucmVzcG9uZF90bz8oOmVycm9yKQorICAg
ICAgJHN0ZGVyci5wdXRzKCJFcnJvciBwYXJzaW5nIHBhdGggYXJndW1lbnQgdG8gLmZpbGUgZGly
ZWN0aXZlOiAje3ByLmVycm9yfSIpCisgICAgICBleGl0KDIpCisgICAgZW5kCisKKyAgICBwYXRo
ID0gcHIuc3RyCisgICAgdHJhY2tlci5yZWdpc3Rlcl9wYXRoKHBhdGgsIG1kWzpzbG90XS50b19p
KQorCisgICAgc2xvdCA9IHRyYWNrZXIuc2xvdF9mb3JfcGF0aChwYXRoKQorICAgIEBvdXRmLnB1
dHMoIlx0LmZpbGVcdCN7c2xvdH0gI3ttZFs6cmVzdF19IikKKyAgZW5kCitlbmQKKworIyBGaXJz
dCwgbWFrZSBzdXJlIG91ciB0ZXN0cyBzdGlsbCBwYXNzLiBUaGlzIG9ubHkgdGFrZXMgYSBmcmFj
dGlvbiBvZgorIyBvdXIgcnVudGltZSBhbmQgZW5zdXJlcyB0aGUgdGVzdHMgd2lsbCBnZXQgcnVu
IGJ5IGFueW9uZSB0cnlpbmcgb3V0CisjIGNoYW5nZXMgdG8gdGhpcyBmaWxlLgorc2VsZnRlc3QK
KworaWYgQVJHVi5zaXplICE9IDIKKyAgJHN0ZGVyci5wdXRzKCJVc2FnZTogI3skMH0gaW5wdXQg
b3V0cHV0IikKKyAgZXhpdCgyKQorZW5kCisKK2lucGF0aCwgb3V0cGF0aCA9IEFSR1YuY29sbGVj
dCB7IHxufCBQYXRobmFtZS5uZXcobikgfQorCitpZiBub3QgaW5wYXRoLmZpbGU/CisgICRzdGRl
cnIucHV0cygiTm90IGEgcmVndWxhciBmaWxlOiBgI3tpbnBhdGh9YCIpCisgIGV4aXQoMikKK2Vu
ZAorCitpZiBpbnBhdGguZXh0bmFtZS51cGNhc2UgIT0gIi5TIgorICAkc3RkZXJyLnB1dHMoIndh
cm5pbmc6IGZpbGUgYCN7aW5wYXRofWAgZG9lc24ndCBoYXZlIGEgYC5zYCBvciBgLlNgIGV4dGVu
c2lvbi4gR29pbmcgb24gYW55d2F5Li4uIikKK2VuZAorCitGaWxlLm9wZW4oaW5wYXRoLCAiciIp
IHsgfGluZnwKKyAgRmlsZS5vcGVuKG91dHBhdGgsICJ3IikgeyB8b3V0ZnwKKyAgICBGaWxlQ29u
ZmxpY3RSZXNvbHZlci5uZXcoaW5mLCBvdXRmKS5ydW4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGM3YjYzOGJjNDAxMWM5Y2Q0NGUxNjI5OTdlMDkzYzhlMDRlNDIwYTIu
LmU2ZGViMDE0MjUyMDQwOGY4Yzc4MTAwYWE2ODY1ZGE1ZGY4N2QzNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTY3NSw4ICs2NzUsNiBAQCBsbGludC9MTEludEVudHJ5cG9pbnQu
Y3BwCiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCiBsbGludC9MTEludFNsb3dQYXRocy5jcHAK
IGxsaW50L0xMSW50VGh1bmtzLmNwcAotLy8gRklYTUU6IFdlIGNhbid0IGJ1bmRsZSB0aGlzIGZp
bGUgZHVlIHRvIGEgY2xhbmcgYnVnLgotbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgQG5v
LXVuaWZ5CiAKIHBhcnNlci9MZXhlci5jcHAKIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAppbmRleCBmOGFmYzdhMDcwZDczNTM4MTNhOWZiMzNlMmZmMjM1MmM2OWViYTc2Li5jOWFhZmMx
NWU4NzA3YmJhOTg5MjE0MzIzNTQ3M2NmMDcyZTRiODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCkBAIC01MzcsOCArNTM3
LDE5IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGNvZGVJRCwgdm9p
ZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RF
X0RFQlVHX0xBQkVMKGxhYmVsKQogI2VuZGlmCiAKKy8vIFRoaXMgd29ya3MgYXJvdW5kIGEgYnVn
IGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8vIGRvZXNuJ3QgaGF2ZSBh
bnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFibGUgd29uJ3QKKy8vIGV2
ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50X2FzbSBzbyB0aGF0IHRo
ZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQg
aXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29tcGlsZXIuIFRoaXMgd2F5
LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFzbSBjb2RlIHRvIHRoaXMg
Y29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29rCisvLyB1cCB0aGUgbGlu
ZSBudW1iZXIgaW5mb3JtYXRpb24uCitERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUihiZWZvcmVf
bGxpbnRfYXNtKQorCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbSwg
d2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBjb2RlCiAvLyBmb3IgdGhlIGludGVy
cHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLgogI2luY2x1
ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIoYWZ0ZXJf
bGxpbnRfYXNtKQorCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFiMmZhMTZlNjU4OGI2ODMy
ODlhYzA0NzcyN2I3ZjBlLi4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1OWVkMzc4YWRmODMyOWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmlnLnJiCkBAIC04OSw2
ICs4OSwxMCBAQCBkZWYgc2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9ucygpCiAgICAgICAgICAg
ICAgICAgZW5kCiAgICAgICAgICAgICBlbmQKICAgICAgICAgZW5kCisgICAgZWxzaWYgRU5WWyJD
TUFLRV9DWFhfQ09NUElMRVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAgICAgIEVOVlsiR0NDX09G
RkxJTkVBU01fU09VUkNFX01BUCJdID09ICdPTicKKyAgICAgICMgQWxsIEdDQyB2ZXJzaW9ucyB0
aGF0IGNhbiBidWlsZCBKU0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9ucworICAgICAgcmV0dXJu
IHRydWUKICAgICBlbmQKIAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCA0Mzc0Y2IzYWYyM2M4
OWJiNTM0OTQ2OWRjODhlZmM2NDQ2MTRhNDdjLi4wZmIzMzIwMjdlZDllZjVmNjQyZGFkNmVkODk1
NjU1ZDZiMDMxZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIsMTcgQEAKICNkZWZpbmUg
V0FSTl9VTlVTRURfUkVUVVJOCiAjZW5kaWYKIAorLyogREVCVUdHRVJfQU5OT1RBVElPTl9NQVJL
RVIgKi8KKworI2lmICFkZWZpbmVkKERFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSKSAmJiBDT01Q
SUxFUihHQ0MpCisjZGVmaW5lIERFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSKG5hbWUpIFwKKyAg
ICBfX2F0dHJpYnV0ZV9fKChfX25vX3Jlb3JkZXJfXykpIHZvaWQgbmFtZSh2b2lkKSB7IF9fYXNt
X18oIiIpOyB9CisjZW5kaWYKKworI2lmICFkZWZpbmVkKERFQlVHR0VSX0FOTk9UQVRJT05fTUFS
S0VSKQorI2RlZmluZSBERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUihuYW1lKQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBf
X2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQppbmRl
eCBhNTc0ZWY4YzIyMmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIxLi5lYTEzNjI0ODNlNzgw
ZTQxNWNjODU0OGNjNmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0NvbW1vbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQpA
QCAtMTEyLDYgKzExMiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAgICBzZXQoQ01BS0VfU0hB
UkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtV2wsLS1nZGItaW5k
ZXgiKQogZW5kaWYgKCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVBfREVGQVVMVCBP
RkYpCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciIE9SIENNQUtFX0JVSUxE
X1RZUEUgU1RSRVFVQUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQoR0NDX09GRkxJTkVBU01f
U09VUkNFX01BUF9ERUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9uKEdDQ19PRkZMSU5FQVNN
X1NPVVJDRV9NQVAKKyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1hdGlvbiBmb3Igb2ZmbGlu
ZWFzbS1nZW5lcmF0ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RFRkFV
TFR9KQorCiAjIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAgLSBBdCB0aGlzIG1vbWVu
dCwgT3Blbk1QIGlzIG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbgog
IyAgICB0byBuYXRpdmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXphdGlvbiBvZiB0aGUgU1ZH
IGZpbHRlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395796</attachid>
            <date>2020-04-08 06:04:49 -0700</date>
            <delta_ts>2020-04-08 08:21:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200408130446.patch</filename>
            <type>text/plain</type>
            <size>29494</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi43NTQxZWI3NDNmMDk0NWNi
NDkyZDFmNjgxNjAyZWU3ZjM4ZGZiNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
aGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVidWcK
KyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0YXRp
b25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZpbGUg
ZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAgICAg
IHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGlsYXRp
b24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lmaWNh
bGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQtaW4g
YXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMsIGJ1
dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQg
YXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cg
dXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5nbGUg
c291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciBp
dC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcgd2l0
aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBkZWJ1
ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJbmZv
IGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4KKwor
ICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBmb3Ig
YSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRoZSBh
ZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmlsZS4g
SW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZlIHRv
IGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uZjYzMTc0ZDk0ZWE3
NWZiM2Y4MTIzMDMzYmEwN2M4NTdiOWNlMDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjIwLDYgKzIyMCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBF
TkRTICR7R0VORVJBVE9SfSBieXRlY29kZS9CeXRlY29kZUxpc3QucmIKICAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdG9yL21haW4ucmIg
LS1ieXRlY29kZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVj
b2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gLS1ieXRlY29kZV9zdHJ1Y3RzX2ggJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZVN0cnVjdHMuaCAtLWJ5dGVjb2Rl
X2luZGljZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2Rl
SW5kaWNlcy5oICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
LS13YXNtX2pzb24gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3dhc20vd2FzbS5qc29uIC0td2FzbV9s
bGludF9nZW5lcmF0b3JfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1dh
c21MTEludEdlbmVyYXRvcklubGluZXMuaCAtLWluaXRfd2FzbV9sbGludCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFzbSAtLWJ5dGVjb2RlX2R1bXBlciAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2RlRHVtcGVyR2VuZXJh
dGVkLmNwcAogICAgIFZFUkJBVElNKQorYWRkX2N1c3RvbV90YXJnZXQoQnl0ZWNvZGVzIERFUEVO
RFMgIiR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQnl0ZWNvZGVzLmgiKQog
CiAKIGlmIChXVEZfT1NfTUFDX09TX1gpCkBAIC0zMjMsNyArMzI0LDcgQEAgYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
LyR7TExJbnRPdXRwdXR9CiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYgogICAgIERFUEVORFMgTExJbnRPZmZzZXRzRXh0cmFjdG9yICR7
TExJTlRfQVNNfSAke09GRkxJTkVfQVNNfSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5pdFdhc20uYXNtCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9B
U01fQVJHU30KKyAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52IENNQUtFX0NYWF9D
T01QSUxFUl9JRD0ke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0gR0NDX09GRkxJTkVBU01fU09VUkNF
X01BUD0ke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVB9ICR7UlVCWV9FWEVDVVRBQkxFfSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIgLUkke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gJDxUQVJHRVRfRklMRTpMTEludE9mZnNldHNFeHRyYWN0b3I+ICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0gJHtPRkZMSU5F
X0FTTV9BUkdTfQogICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSB0b3VjaF9ub2NyZWF0
ZSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9CiAg
ICAgV09SS0lOR19ESVJFQ1RPUlkgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fQogICAgIFZFUkJBVElNKQpAQCAtMzQ4LDEwICszNDksMTcgQEAgaWYgKE1TVkMgQU5EIE5PVCBF
TkFCTEVfQ19MT09QKQogICAgICAgICBDT01NQU5EICR7TUFTTV9FWEVDVVRBQkxFfSAke0xMSU5U
X01BU01fRkxBR1N9ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2
ZWxJbnRlcnByZXRlcldpbi5vYmogJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9Mb3dMZXZlbEludGVycHJldGVyV2luLmFzbQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0
KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRlcnByZXRlcldpbi5vYmopCisgICAgYWRkX2xpYnJhcnko
TG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1QgbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHApCiBlbHNlICgpCi0gICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwotICAg
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xMSW50QXNzZW1ibHku
aAotICAgICkKKyAgICAjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9ydCBmb3IgdXNp
bmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisgICAgIyBpbmxpbmUgYXNtIChpLmUuIHRoZXJlJ3Mg
bm8gd2F5IHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgYC5maWxlYAorICAgICMgZGlyZWN0aXZl
cyBnZW5lcmF0ZWQgYnkgdGhlIEMgY29kZSBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCksIHdlCisg
ICAgIyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0
cyBhc3NlbWJsZWQgaW50bworICAgICMgYW4gb2JqZWN0IGZpbGUuIFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIGZvciBMb3dMZXZlbEludGVycHJldGVyLmNwcAorICAgICMgYW5kIGNtYWtlIGRvZXNu
J3QgYWxsb3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICMg
c2luZ2xlIHNvdXJjZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdl
dCBmb3IgaXQuCisgICAgYWRkX2xpYnJhcnkoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1Qg
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKyAgICAgICAgJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSkKIGVuZGlmICgpCiAKICMgV2ViQXNz
ZW1ibHkgZ2VuZXJhdG9yCkBAIC0xMzYyLDYgKzEzNzAsMzAgQEAgdGFyZ2V0X2luY2x1ZGVfZGly
ZWN0b3JpZXMoTExJbnRPZmZzZXRzRXh0cmFjdG9yIFNZU1RFTSBQUklWQVRFICR7SmF2YVNjcmlw
dENvcmUKIAogYWRkX3N1YmRpcmVjdG9yeShzaGVsbCkKIAordGFyZ2V0X2luY2x1ZGVfZGlyZWN0
b3JpZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgIFBSSVZBVEUgIiQ8VEFSR0VUX1BST1BF
UlRZOkphdmFTY3JpcHRDb3JlLElOQ0xVREVfRElSRUNUT1JJRVM+IikKK2FkZF9kZXBlbmRlbmNp
ZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBXVEZfQ29weUhlYWRlcnMgQnl0ZWNvZGVzKQorCitp
ZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQ
KQorICAgIG1lc3NhZ2UoU1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisg
ICAgc2V0KExvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19TT1VSQ0VTX0RJUn0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3Bl
cnR5KFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyTGliIFJVTEVf
TEFVTkNIX0NPTVBJTEUpCisgICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAg
ICAgc2V0KExvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUn0gJHtQUk9QX1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQor
ICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgICAgICBQ
Uk9QRVJUWSBSVUxFX0xBVU5DSF9DT01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNI
RVJ9IikKKworICAgICMgUGFzcyBpbiB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNz
b3IgZGlyZWN0aXZlLCBzbyB0aGF0CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBp
ZGVudGlmeSB0aGUgc291cmNlIGZpbGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVz
KCJsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAg
ICAgICBDT01QSUxFX0RFRklOSVRJT05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAiKQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
U09VUkNFUyAkPFRBUkdFVF9PQkpFQ1RTOkxvd0xldmVsSW50ZXJwcmV0ZXJMaWI+KQorCiBXRUJL
SVRfQ09NUFVURV9TT1VSQ0VTKEphdmFTY3JpcHRDb3JlKQogV0VCS0lUX1dSQVBfU09VUkNFTElT
VCgke0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQogV0VCS0lUX0ZSQU1FV09SSyhKYXZhU2NyaXB0
Q29yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9j
ZXNzLWFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZjBhMzEyZWU0YTc4MTQ5ZmM5ZTllZTEzNDM4MWFjNGY2Y2QwMGJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3Mt
YXNtCkBAIC0wLDAgKzEsMTkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIyBXcmFwcGVyIGZvciBhIC5jcHAgLT4gLm8gY29tcGlsYXRpb24gY29tbWFuZC4g
SXQKKyMgMS4gY29udmVydHMgdGhlIGNvbW1hbmQgdG8gZ2VuZXJhdGUgYSBgLnMnIGZpbGUKKyMg
Mi4gcnVucyB0aGUgQVNNIHBvc3Rwcm9jZXNzb3Igb24gaXQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFs
IGAuc2AgZmlsZQorIyAzLiBhc3NlbWJsZXMgdGhlIGAuc2AgZmlsZSB0byBhIGAub2AgZmlsZQor
CiskYXNtX3N1ZmZpeF9wcmUgPSAiLnByZS5zIgorJGFzbV9zdWZmaXggPSAiLnMiCiskcG9zdHBy
b2Nlc3NvciA9ICIje0ZpbGUuZGlybmFtZSgkMCl9L3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3Rz
LnJiIgorCisKKyRpbnRlcm1lZGlhdGVfcGF0aHMgPSBbXQorCisjIFdlIG5lZWQgdG8gd29yayB3
aXRoIGluZGljZXMgYSBsb3QgYW5kIHVuZm9ydHVuYXRlbHkgJ2dldG9wdGxvbmcnIGluCisjIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgZXhwb3NlIG9wdGluZCwgc28gd2UncmUgZ29pbmcg
d2l0aAorIyBhcnJheSBzZWFyY2hlcyBmb3Igc2ltcGxpY2l0eS4KK2RlZiBpbmRleF9ub2ZhaWwo
YXJ5LCBmLCBlcnJtc2cpCisgIGlkeCA9IGFyeS5pbmRleCB7IHxlbHwKKyAgICBmLmNhbGwoZWwp
CisgIH0KKyAgaWYgaWR4Lm5pbD8KKyAgICAkc3RkZXJyLnB1dHMoZXJybXNnKQorICAgIGV4aXQo
MykKKyAgZW5kCisgIGlkeAorZW5kCisKKyMgRmluZCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgZmls
ZSBmb3IgdGhpcyBjb21waWxhdGlvbiBjb21tYW5kLAorIyByZW1vdmluZyBpdCBmcm9tIHRoZSBh
cmdzLiBOb3RlIHRoYXQgdGhlIHBhdGggKEEpIGFzIGl0IGFwcGVhcnMgaGVyZQorIyAoY29taW5n
IGZyb20gYSBjbWFrZSBydWxlKSBpcyBsaWtlbHkgdG8gYmUgZGlmZmVyZW50IHRvIHRoZQorIyBh
bm9ueW1vdXMgYXJndW1lbnQgKEIpIHRvIHRoZSBjb21waWxhdGlvbiBjb21tYW5kLiBIb3dldmVy
LCBBIHdpbGwKKyMgYmUgYSBzdWZmaXggb2YgQi4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlm
IHRoZSBhcmd1bWVudCBpcyBub3QgdGhlcmUuIFRoaXMgaGFzIGFscmVhZHkKKyMgYmVlbiBjaGVj
a2VkIGJ5IGBjeHgtd3JhcHBlcmAsIG90aGVyd2lzZSB3ZSB3b3VsZG4ndCBiZSBydW5uaW5nLgor
ZGVmIGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisgIHByZWZpeCA9ICctRFBPU1RQUk9DRVNTX0FTTT0n
CisKKyAgaWR4ID0gaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICBhcmcu
c3RhcnRfd2l0aD8ocHJlZml4KQorICB9LCAiTm8gYC1EUE9TVFBST0NFU1NfQVNNYCBhcmd1bWVu
dGAiKQorCisgIHBhdGggPSBhcmdzW2lkeF1bcHJlZml4LnNpemUuLi0xXQorICBpZiBwYXRoLnNp
emUgPT0gMAorICAgICRzdGRlcnIucHV0cygiRW1wdHkgcGF0aCBpbiAtRFBPU1RQUk9DRVNTX0FT
TT0iKQorICAgIGV4aXQoMykKKyAgZW5kCisgICMgV2Ugb25seSBuZWVkIHRoaXMgdG8gYmUgZGVm
aW5lZCBmb3IgdGhlIHByZXByb2Nlc3NvciAobm90IGFueQorICAjIHdyYXBwZXIpIGZyb20gbm93
IG9uLgorICBhcmdzW2lkeF0gPSAiLURQT1NUUFJPQ0VTU19BU00iCisgIHJldHVybiBwYXRoCitl
bmQKKworIyBHZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhcmd1bWVudCBlbmRpbmcgaW4gdGhp
cyBzdWZmaXguCisjCisjIEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXNuJ3Qg
dGhlcmUuIFdlJ3JlIG9ubHkgZXZlcgorIyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgd2Uga25vdyBh
cmUgYmVpbmcgcGFzc2VkIGluIGJ5IHRoZSBidWlsZAorIyBzeXN0ZW0uCitkZWYgZ2V0X2FyZ19p
ZHhfc3VmZml4KGFyZ3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsg
fGFyZ3wKKyAgICAgICAgICAgICAgICAgYXJnLmVuZF93aXRoPyh3YW50ZWQpCisgICAgICAgICAg
ICAgICB9LCAiTm8gYXJndW1lbnQgZW5kcyB3aXRoICN7d2FudGVkfSIpCitlbmQKKworIyBHZXQg
aW5kZXggb2YgYSBnaXZlbiBhcmd1bWVudC4gRGllIGlmIGl0J3Mgbm90IHRoZXJlLgorZGVmIGdl
dF9hcmdfaWR4KGFyZ3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsg
fGFyZ3wKKyAgICAgICAgICAgICAgICAgYXJnID09IHdhbnRlZAorICAgICAgICAgICAgICAgfSwg
Ik5vIGAje3dhbnRlZH1gIGFyZ3VtZW50IikKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgYC1v
YCBhbmQgdmVyaWZ5IHRoYXQgYW4gYXJndW1lbnQgZm9sbG93cy4KKyMgQm90aCBhcmUgZ3VhcmFu
dGVlZCB0byBleGlzdCAoZnJvbSBvdXIgYnVpbGQgc3lzdGVtKS4KK2RlZiBnZXRfb19pZHgoYXJn
cykKKyAgaSA9IGdldF9hcmdfaWR4KGFyZ3MsICctbycpCisgIGlmIChpICsgMSkgPj0gYXJncy5z
aXplCisgICAgJHN0ZGVyci5wdXRzKCJObyBhcmd1bWVudCB0byBgLW9gIikKKyAgICBleGl0KDMp
CisgIGVuZAorICBpCitlbmQKKworIyBSdW4gY29tbWFuZCBhbmQgZGllIGlmIGl0IGZhaWxzLCBw
cm9wYWdhdGluZyB0aGUgZXhpdCBjb2RlLgorZGVmIHJ1bl9jbWQoY21kKQorICBwaWQgPSBQcm9j
ZXNzLnNwYXduKCpjbWQpCisgIFByb2Nlc3Mud2FpdHBpZChwaWQpCisgIHJldCA9ICQ/CisgIGlm
IG5vdCByZXQuc3VjY2Vzcz8KKyAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHJ1bm5pbmcgY21kOiAj
e3JldH0iKQorICAgIGV4aXQocmV0LmV4aXRzdGF0dXMpCisgIGVuZAorZW5kCisKKyMgQ29udmVy
dAorIyAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguY3BwCisjIHRvCisjICAgIGN4eCAtbyBibGFo
LnMgLVMgYmxhaC5jcHAKK2RlZiBidWlsZF9jeHhfY21kKGFyZ3MpCisgIGNfaWR4ID0gZ2V0X2Fy
Z19pZHgoYXJncywgJy1jJykKKyAgb19pZHggPSBnZXRfb19pZHgoYXJncykKKworICBjeHhfYXJn
cyA9IGFyZ3MuY2xvbmUKKworICBjeHhfYXJnc1tjX2lkeF0gPSAnLVMnCisgIG9fcGF0aCA9IGN4
eF9hcmdzW29faWR4ICsgMV0KKyAgY3h4X2FyZ3Nbb19pZHggKyAxXSA9IG9fcGF0aC5zdWIoL1su
XW8kLywgJGFzbV9zdWZmaXgpCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgY3h4X2FyZ3Nbb19p
ZHggKyAxXQorICBpZiBjeHhfYXJnc1tvX2lkeCArIDFdID09IG9fcGF0aAorICAgICRzdGRlcnIu
cHV0cygiT3V0cHV0IGZpbGUgbmFtZSBub3QgYW4gb2JqZWN0IGZpbGU6IGAje29fcGF0aH1gIikK
KyAgICBleGl0KDMpCisgIGVuZAorICBjeHhfYXJncworZW5kCisKKyMgRG8KKyMgICAgIG12IGJs
YWguUyBibGFoLnByZS5TCisjIFRoZSByZWFzb24gd2UgZG8gYSByZW5hbWUgaW5zdGVhZCBvZiBk
aXJlY3RseSBnZW5lcmF0aW5nIHRoZSAucHJlLnMKKyMgZmlsZSB3aGVuIGNvbXBpbGluZyBpcyBz
byB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIC5kd28gZmlsZSB3aWxsIGhhdmUKKyMgdGhlIGNvcnJl
Y3QgbmFtZSBlbWJlZGRlZC4KK2RlZiByZW5hbWVfc19maWxlKGFyZ3MpCisgIG9fcGF0aCA9IGFy
Z3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKyAgRmlsZS5yZW5hbWUob19wYXRoLnN1YigvWy5dbyQv
LCAkYXNtX3N1ZmZpeCksCisgICAgICAgICAgICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9z
dWZmaXhfcHJlKSkKK2VuZAorCisjIEJ1aWxkCisjICAgICBwb3N0cHJvY2Vzc29yIGJsYWgucHJl
LlMgYmxhaC5TCitkZWYgYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykKKyAgb19wYXRoID0g
YXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIHBwX2FyZ3MgPSBbCisgICAgJHBvc3Rwcm9j
ZXNzb3IsCisgICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpLCAjIGlucHV0
CisgICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkgIyBvdXRwdXQKKyAgXQorICAk
aW50ZXJtZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTJdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMg
PDwgcHBfYXJnc1stMV0KKyAgcHBfYXJncworZW5kCisKKyMgQnVpbGQKKyMgICAgIGN4eCAtbyBi
bGFoLm8gLWMgYmxhaC5TCitkZWYgYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkKKyAgaV9pZHgg
PSBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgaV9wYXRoKQorICBvX3BhdGggPSBhcmdzW2dldF9v
X2lkeChhcmdzKSArIDFdCisKKyAgYXNfYXJncyA9IGFyZ3MuY2xvbmUKKyAgaV9wYXRoID0gYXNf
YXJnc1tpX2lkeF0KKyAgYXNfYXJnc1tpX2lkeF0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21f
c3VmZml4KQorICBhc19hcmdzCitlbmQKKworYXJncyA9IEFSR1YudG9fYQoraV9wYXRoID0gZXh0
cmFjdF9pbnB1dCEoYXJncykKKworYmVnaW4KKyAgcnVuX2NtZChidWlsZF9jeHhfY21kKGFyZ3Mp
KQorICByZW5hbWVfc19maWxlKGFyZ3MpCisgIHJ1bl9jbWQoYnVpbGRfcG9zdHByb2Nlc3Nvcl9j
bWQoYXJncykpCisgIHJ1bl9jbWQoYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkpCitlbnN1cmUK
KyAgJGludGVybWVkaWF0ZV9wYXRocy5lYWNoIHsgfHB8CisgICAgaWYgRmlsZS5leGlzdD8ocCkK
KyAgICAgIEZpbGUuZGVsZXRlKHApCisgICAgZW5kCisgIH0KK2VuZAorCitleGl0KDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNv
bmZsaWN0cy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Jlc29sdmUtYXNtLWZp
bGUtY29uZmxpY3RzLnJiCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxODMyZDhkMDFmMjljYWFhMzZhOWQ2YzBiMTQ5
NjFkN2E0OGI3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0cy5yYgpAQCAtMCwwICsxLDM5OSBAQAorIyEv
dXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy4gTC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUmVzb2x2ZSBjb25mbGlj
dHMgaW4gYC5maWxlYCBkaXJlY3RpdmVzIGluIGFzc2VtYmxlciBmaWxlcy4gVGhvc2UKKyMgbWF5
IHJlc3VsdCBmcm9tIGlubGluZSBhc20gc3RhdGVtZW50cyB3aGljaCB0aGVtc2VsdmVzIGhhdmUg
YC5maWxlYAorIyBkaXJlY3RpdmVzLiBBcyB0aGUgaW5saW5lIGFzbSBoYXMgbm8gaWRlYSB3aGF0
IHRoZSBuZXh0IGZyZWUgZmlsZQorIyBudW1iZXIgaXMsIGl0J2xsIGdlbmVyYWxseSBoYXZlIGl0
cyBvd24gbnVtYmVyaW5nLiBUbyBnZXQgdGhpbmdzIHRvCisjIHdvcmsgd2UgaGF2ZSB0bworIyAx
LiByZW1hcCBjb25mbGljdGluZyBmaWxlIG51bWJlcnMKKyMgMi4gY2hhbmdlIGAubG9jYCBkaXJl
Y3RpdmVzIHRvIHJlZmVyZW5jZSB0aGUgYXBwcm9wcmlhdGUgZmlsZSBudW1iZXIuCisjCisjIFRv
IGJlIGFibGUgdG8gZG8gdGhhdCwgd2UgbmVlZCBzb21lIGNvbmNlcHQgb2YgInNjb3BlIiwgaS5l
LiB3aGljaAorIyBzZXQgb2YgZmlsZXMgYSBnaXZlbiBgLmxvY2AgZGlyZWN0aXZlIHJlZmVycyB0
by4gV2UgZ2V0IHRoYXQgYnkKKyMgdHJhY2tpbmcgdGhlICNBUFAvI05PQVBQIGRpcmVjdGl2ZXMg
dGhhdCB0aGUgY29tcGlsZXIgZW1pdHMgd2hlbiBpdAorIyBzd2l0Y2ggdG8vZnJvbSBpbmxpbmUg
YXNtLgorIworIyBJbiBlZmZlY3QsIHdlIGNvbnZlcnQKKyMgICAgIC5maWxlIDEgImZvbyIKKyMg
ICAgICNBUFAKKyMgICAgIC5maWxlIDEgImJhciIKKyMgICAgIC5maWxlIDIgImZvbyIKKyMgICAg
IC5sb2MgMSwgWAorIyAgICAgI05PQVBQCisjICAgICAubG9jIDEsIFkKKyMgdG8KKyMgICAgIC5m
aWxlIDEgImZvbyIKKyMgICAgICNBUFAKKyMgICAgIC5maWxlIDIgImJhciIKKyMgICAgIC5maWxl
IDEgImZvbyIKKyMgICAgIC5sb2MgMiwgWAorIyAgICAgI05PQVBQCisjICAgICAubG9jIDEsIFkK
KworcmVxdWlyZSAncGF0aG5hbWUnCityZXF1aXJlICdzdHJpbmdpbycKK3JlcXVpcmUgJ3N0cnNj
YW4nCisKK1BhcnNlUmVzdWx0U3VjY2VzcyA9IFN0cnVjdC5uZXcoOnN0cikKK1BhcnNlUmVzdWx0
RXJyb3IgPSBTdHJ1Y3QubmV3KDplcnJvcikKKworIyBQYXJzZXMgdGhlIHNpbmdsZSBzdHJpbmcg
bGl0ZXJhbCBmb2xsb3dpbmcgYSAuZmlsZSBhc3NlbWJsZXIgZGlyZWN0aXZlCitjbGFzcyBGaWxl
RGlyZWN0aXZlQXJnU2Nhbm5lcgorICBkZWYgaW5pdGlhbGl6ZShzKQorICAgIEBzID0gU3RyaW5n
U2Nhbm5lci5uZXcocykKKyAgZW5kCisgIGRlZiBwYXJzZQorICAgIEBzLnNraXAoL1xzKi8pCisK
KyAgICAjIFdlIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHN0cmluZyBsaXRlcmFsCisgICAgcmV0ID0g
cGFyc2Vfc3RyaW5nX2xpdGVyYWwKKyAgICBpZiByZXQucmVzcG9uZF90bz8oOmVycm9yKQorICAg
ICAgcmV0dXJuIHJldAorICAgIGVuZAorCisgICAgQHMuc2tpcCgvXHMqLykKKyAgICBpZiBub3Qg
QHMuZW9zPworICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0RXJyb3IubmV3KCJFeHBlY3RlZCBlbmQg
b2YgbGluZSBhZnRlciAje3JldC5zdHJ9IikKKyAgICBlbmQKKyAgICByZXR1cm4gUGFyc2VSZXN1
bHRTdWNjZXNzLm5ldyhyZXQuc3RyKQorICBlbmQKKyAgZGVmIHBhcnNlX3N0cmluZ19saXRlcmFs
CisgICAgaWYgQHMuc2NhbigvIi8pLm5pbD8KKyAgICAgIGVyciA9ICJFeHBlY3RlZCBzdHJpbmcg
bGl0ZXJhbCBhdCBgI3tAcy5zdHJpbmd9YCAocG9zICN7QHMucG9zfSkiCisgICAgICByZXR1cm4g
UGFyc2VSZXN1bHRFcnJvci5uZXcoZXJyKQorICAgIGVuZAorICAgIHBhcnNlX3VudGlsX2VuZF9v
Zl9zdHJpbmdfbGl0ZXJhbAorICBlbmQKKyAgZGVmIHBhcnNlX3VudGlsX2VuZF9vZl9zdHJpbmdf
bGl0ZXJhbAorICAgIHN0YXJ0X3BvcyA9IEBzLnBvcworICAgIHdoaWxlIHRydWUKKyAgICAgICMg
U2VhcmNoIGZvciBvdXIgc3BlY2lhbCBjaGFyYWN0ZXJzCisgICAgICBAcy5za2lwKC9bXiJcXF0r
LykKKyAgICAgIGlmIEBzLnNjYW4oL1xcLykKKyAgICAgICAgaWYgQHMuc2NhbigvXFwvKQorICAg
ICAgICAgICMgV2hlbiB3ZSBzZWUgJ1xcJywgY29uc3VtZSBib3RoIGNoYXJhY3RlcnMgc28gdGhh
dCB0aGUKKyAgICAgICAgICAjIHNlY29uZCAnXCcgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyBhbiBl
c2NhcGUgY2hhci4KKyAgICAgICAgICBuZXh0CisgICAgICAgIGVsc2lmIEBzLnNjYW4oLyIvKQor
ICAgICAgICAgICMgRm9yICdcIicsIGNvbnN1bWUgYm90aCBjaGFyYWN0ZXJzIHNvIHRoYXQgdGhl
ICciJyB3aWxsIG5vdAorICAgICAgICAgICMgdGVybWluYXRlIHRoZSBzdHJpbmcuCisgICAgICAg
ICAgbmV4dAorICAgICAgICBlbmQKKyAgICAgICAgbmV4dAorICAgICAgZWxzaWYgQHMuc2Nhbigv
Ii8pCisgICAgICAgICMgJyInIHdpdGhvdXQgYSBwcmVjZWVkaW5nICdcJzsgdGVybWluYXRlIHRo
ZSBsaXRlcmFsLgorICAgICAgICAjIFdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgJyInLCBzbyB0aGUg
bGl0ZXJhbCBlbmRzIGF0IC0yCisgICAgICAgICMgY2hhcmFjdGVycy4KKyAgICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0U3VjY2Vzcy5uZXcoQHMuc3RyaW5nW3N0YXJ0X3Bvcy4uKEBzLnBvcyAtIDIp
XSkKKyAgICAgIGVsc2lmIEBzLmVvcz8KKyAgICAgICAgZXJyID0gIlVudGVybWluYXRlZCBzdHJp
bmcgbGl0ZXJhbCAoc3RhcnRpbmcgYXQgcG9zICN7c3RhcnRfcG9zfSBpbiAje0BzLnN0cmluZ30i
CisgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldyhlcnIpCisgICAgICBlbmQKKyAg
ICAgIHJhaXNlICJJbnRlcm5hbCBlcnJvciAoI3tAcy5pbnNwZWN0fSkiCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2RlZiB0ZXN0KG91dGYsIHN0ciwgcmVzKQorICBwciA9IEZpbGVEaXJlY3RpdmVB
cmdTY2FubmVyLm5ldyhzdHIpLnBhcnNlCisgIGlmIHJlcy5pc19hPyhBcnJheSkKKyAgICBpZiBw
ci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICBvdXRmLnB1dHMoIlBhcnNlIHJlc3VsdCBpcyBg
I3twci5lcnJvcn1gIGJ1dCBleHBlY3RlZCAje3Jlc30iKQorICAgICAgcmV0dXJuIGZhbHNlCisg
ICAgZW5kCisgICAgaWYgcHIuc3RyICE9IHJlc1swXQorICAgICAgb3V0Zi5wdXRzKCJQYXJzZWQg
cGF0aCBgI3twci5zdHJ9YCBidXQgZXhwZWN0ZWQgYCN7cmVzWzBdfWAiKQorICAgICAgcmV0dXJu
IGZhbHNlCisgICAgZW5kCisgICAgcmV0dXJuIHRydWUKKyAgZWxzaWYgcmVzLmlzX2E/KFN0cmlu
ZykKKyAgICBpZiBwci5yZXNwb25kX3RvPyg6ZXJyb3IpCisgICAgICBpZiBub3QgcHIuZXJyb3Iu
ZG93bmNhc2UuaW5jbHVkZT8ocmVzLmRvd25jYXNlKQorICAgICAgICBlcnIgPSAiRXJyb3IgbWVz
c2FnZSBgI3twci5lcnJvcn1gIGRvZXMgbm90IGluY2x1ZGUgZXhwZWN0ZWQgc3Vic3RyaW5nIGAj
e3Jlc31gIgorICAgICAgICBvdXRmLnB1dHMoZXJyKQorICAgICAgICByZXR1cm4gZmFsc2UKKyAg
ICAgIGVuZAorICAgICAgcmV0dXJuIHRydWUKKyAgICBlbmQKKyAgICBvdXRmLnB1dHMoIkV4cGVj
dGVkIGVycm9yICgje3Jlc30pIGJ1dCBnb3Qgc3VjY2Vzc2Z1bCBwYXJzZSAje3ByLnN0cn0iKQor
ICAgIHJldHVybiBmYWxzZQorICBlbHNlCisgICAgcmFpc2UgIkludGVybmFsIGVycm9yICN7cmVz
LmNsYXNzfSIKKyAgZW5kCitlbmQKKworZGVmIHNlbGZ0ZXN0CisgIG5yX3N1Y2NlZWRlZCA9IDAK
KyAgdGVzdHMgPSBbCisgICAgIyBzaW1wbGUgc3RyaW5nCisgICAgWyciZm9vL2JhciInLCBbImZv
by9iYXIiXV0sCisKKyAgICBbJyJmb28nLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0s
CisKKyAgICBbJyJmb29cIicsICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiXSwKKworICAg
ICMgImZvb1wiCisgICAgWyJcImZvb1xcXCIiLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFs
Il0sCisKKyAgICAjICJmb29cXCIKKyAgICBbIlwiZm9vXFxcXFwiIiwgWyJmb29ceDVjXHg1YyJd
XSwKKworICAgICMgQ2FuIGVzY2FwZSAnIicKKyAgICBbJyJmb29cImJhciInLCBbJ2Zvb1wiYmFy
J11dLAorCisgICAgIyBDYW4gcGFyc2UgcmVsYXRpdmUKKyAgICBbJyJmb28vYmFyIicsIFsnZm9v
L2JhciddXSwKKworICAgICMgQ2FuIHBhcnNlIGFic29sdXRlCisgICAgWyciL2JhciInLCBbJy9i
YXInXV0sCisKKyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZSB3aXRoIHR3byBjb21wb25lbnRzCisg
ICAgWyciL2Jhci9iYXoiJywgWycvYmFyL2JheiddXSwKKworICAgICMgQ2FuIGRldGVjdCBzdHJh
eSB0b2tlbgorICAgIFsnImZvbyIgYmFyJywgIkV4cGVjdGVkIGVuZCBvZiBsaW5lIl0sCisKKyAg
ICAjIENhbiBkZXRlY3Qgc3RyYXkgdG9rZW4gd2l0aG91dCB3aGl0ZXNwYWNlCisgICAgWyciZm9v
ImJhcicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdLAorCisgICAgIyBXaWxsIG5vdCBhY2NlcHQg
Y2xhbmctc3R5bGUgLmZpbGUgZGlyZWN0aXZlcworICAgIFsnIndvcmtpbmdfZGlyZWN0b3J5IiAi
cGF0aCInLCAiRXhwZWN0ZWQgZW5kIG9mIGxpbmUiXQorICBdCisgIG91dGYgPSBTdHJpbmdJTy5u
ZXcoIiIpCisgIHRlc3RzLmVhY2ggeyB8c3RyLCByZXN8CisgICAgaWYgdGVzdChvdXRmLCBzdHIs
IHJlcykKKyAgICAgIG5yX3N1Y2NlZWRlZCArPSAxCisgICAgZW5kCisgIH0KKyAgaWYgbnJfc3Vj
Y2VlZGVkICE9IHRlc3RzLnNpemUKKyAgICAkc3RkZXJyLnB1dHMob3V0Zi5zdHJpbmcpCisgICAg
JHN0ZGVyci5wdXRzKCJTb21lIHNlbGYgdGVzdHMgZmFpbGVkICN7bnJfc3VjY2VlZGVkfS8je3Rl
c3RzLnNpemV9IikKKyAgICBleGl0KDMpCisgIGVuZAorZW5kCisKKyMgS2VlcCB0cmFjayBvZiB3
aGljaCBmaWxlbm8gaXMgYXNzaWduZWQgdG8gd2hpY2ggZmlsZSBwYXRoLiBXZSBjYWxsCisjIHRo
ZSBmaWxlbm8gYSAnc2xvdCcuCitjbGFzcyBGaWxlU2xvdFRyYWNrZXIKKyAgQEBuZXh0X2ZyZWUg
PSAxICAgIyBOZXh0IGZyZWUgZ2xvYmFsIHNsb3QKKyAgQEBwYXRocyA9IHt9ICMgTWFwcyBwYXRo
IC0+IGdsb2JhbCBzbG90CisgIGRlZiBpbml0aWFsaXplKHBhcmVudCkKKyAgICBAcGFyZW50ID0g
cGFyZW50CisgICAgIyBUaGlzIG1hcHMgZnJvbSBvdXIgb3duIGxvY2FsIHNsb3RzIChpLmUuIHdp
dGhpbiBhbiBBUFAgc2VjdGlvbikKKyAgICAjIHRvIGEgZ2xvYmFsIHNsb3QuCisgICAgQHNsb3Rf
bWFwID0ge30KKyAgZW5kCisgICMgV2UgbWFrZSBzdXJlIHRoYXQgLmZpbGUgZGlyZWN0aXZlcyB0
aGF0IHNwZWNpZnkgdGhlIHNhbWUgcGF0aCBhcmUKKyAgIyBkZWR1cCdkLCBpLmUuIGlmIHdlIHNl
ZQorICAjICAgICAuZmlsZSBOICIvcGF0aC90by9pbmNsdWRlLmgiCisgICMgICAgIC4uLgorICAj
ICAgICAuZmlsZSBNICIvcGF0aC90by9pbmNsdWRlLmgiCisgICMgdGhlbiB0aGUgImxvY2FsIiBO
LCBNIHNsb3RzIHdpbGwgYmUgbWFwcGVkIHRvIHRoZSBzYW1lICJnbG9iYWwiIHNsb3QuCisgIGRl
ZiByZWdpc3Rlcl9wYXRoKHBhdGgsIHNsb3QpCisgICAgY3Vycl9zbG90ID0gQEBwYXRoc1twYXRo
XQorICAgIGlmIGN1cnJfc2xvdC5uaWw/CisgICAgICAjIFdlIGhhdmVuJ3Qgc2VlbiB0aGlzIGZp
bGUgYmVmb3JlCisgICAgICBpZiBzbG90IDw9IEBAbmV4dF9mcmVlCisgICAgICAgICMgRGVzaXJl
ZCBmaWxlIHNsb3QgZWl0aGVyIGNsYXNoZXMgd2l0aCBhbiBleGlzdGluZyBvbmUsIG9yIGlzCisg
ICAgICAgICMgdGhlIG5leHQgb25lIHRvIGJlIGFsbG9jYXRlZC4gSW4gZWl0aGVyIGNhc2UsIGFz
c2lnbiB0aGUKKyAgICAgICAgIyBuZXh0IGZyZWUgc2xvdC4KKyAgICAgICAgYXNzaWduX25leHRf
c2xvdChwYXRoKQorICAgICAgZWxzZQorICAgICAgICAjIERvbid0IGFsbG93IHNsb3QgZ2Fwcy4g
VGVjaG5pY2FsbHkgd2UgY291bGQgaGFuZGxlIHRoZW0sIGJ1dAorICAgICAgICAjIHRoZXkgc2hv
dWxkIG5ldmVyIGhhcHBlbjsgYmFpbCBub3cgcmF0aGVyIHRoYW4gcGFwZXJpbmcgb3ZlcgorICAg
ICAgICAjIGFuIGVhcmxpZXIgZXJyb3IuCisgICAgICAgICRzdGRlcnIucHV0cygiRmlsZSB3YW50
cyBzbG90ICN7c2xvdH0gYnV0IG9ubHkgc2VlbiAje0BAbmV4dF9mcmVlfSBzbyBmYXIiKQorICAg
ICAgICBleGl0KDIpCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAjIFdlJ3ZlIGFscmVhZHkg
YXNzaWduZWQgYSBzbG90IGZvciB0aGlzIGZpbGUuCisgICAgZW5kCisgICAgQHNsb3RfbWFwW3Ns
b3RdID0gQEBwYXRoc1twYXRoXQorICAgIGlmIEBzbG90X21hcFtzbG90XS5uaWw/CisgICAgICBy
YWlzZSAiRGlkbid0IG1hcCBsb2NhbCBzbG90ICN7c2xvdH0iCisgICAgZW5kCisgIGVuZAorICAj
IFJldHVybiBnbG9iYWwgc2xvdCBmb3IgcGF0aAorICBkZWYgc2xvdF9mb3JfcGF0aChwYXRoKQor
ICAgIHJldHVybiBAQHBhdGhzW3BhdGhdCisgIGVuZAorICAjIFJldHVybiBnbG9iYWwgc2xvdCB0
aGF0IHdpbGwgcmVwbGFjZSB0aGUgbG9jYWwgc2xvdAorICBkZWYgcmVtYXBfc2xvdChzbG90KQor
ICAgIHJldCA9IG5pbAorICAgIGlmIEBzbG90X21hcC5zaXplID4gMAorICAgICAgIyBJZiB0aGUg
Y3VycmVudCBOT19BUFAgc2VnbWVudCBoYXMgZGVmaW5lZCBhIC5maWxlLCBvbmx5IGxvb2sKKyAg
ICAgICMgaW4gdGhlIGN1cnJlbnQgRmlsZVNsb3RUcmFja2VyLiBUaGlzIGlzIHRoZSBjYXNlIGZv
ciBhCisgICAgICAjIHRvcC1sZXZlbCBpbmxpbmUgYXNtIHN0YXRlbWVudC4KKyAgICAgIHJldCA9
IEBzbG90X21hcFtzbG90XQorICAgIGVsc2lmIG5vdCBAcGFyZW50Lm5pbD8KKyAgICAgICMgSWYg
dGhlIGN1cnJlbnQgTk9fQVBQIHNlZ21lbnQgaGFzIG5vdCBkZWZpbmVkIGEgLmZpbGUsIGNsZWFy
bHkKKyAgICAgICMgYWxsIC5sb2MgZGlyZWN0aXZlcyByZWZlciB0byBmaWxlcyBkZWZpbmVkIGlu
IHRoZSBBUFAKKyAgICAgICMgcGFydC4gVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLXRvcC1sZXZl
bCBpbmxpbmUgYXNtCisgICAgICAjIHN0YXRlbWVudHMuCisgICAgICByZXQgPSBAcGFyZW50LnJl
bWFwX3Nsb3Qoc2xvdCkKKyAgICBlbmQKKyAgICBpZiByZXQubmlsPworICAgICAgcmFpc2UgIk5v
IGdsb2JhbCBzbG90IGZvciAje3Nsb3R9IgorICAgIGVuZAorICAgIHJldAorICBlbmQKKyAgcHJp
dmF0ZQorICBkZWYgYXNzaWduX25leHRfc2xvdChwYXRoKQorICAgIEBAcGF0aHNbcGF0aF0gPSBA
QG5leHRfZnJlZQorICAgIEBAbmV4dF9mcmVlICs9IDEKKyAgZW5kCitlbmQKKworIyBSZXR1cm4g
c2VxdWVudGlhbCBsaW5lcywgd2hpbGUga2VlcGluZyB0cmFjayBvZiB3aGV0aGVyIHdlJ3JlIGlu
IGFuCisjICNBUFAgb3IgI05PQVBQIHNlY3Rpb24uCitjbGFzcyBBc21SZWFkZXIKKyAgYXR0cl9y
ZWFkZXIgOmluX2FwcAorICBhdHRyX2FjY2Vzc29yIDphcHBfdG9fbm9hcHAsIDpub2FwcF90b19h
cHAKKyAgZGVmIGluaXRpYWxpemUoZikKKyAgICBAZiA9IGYKKyAgICBAZi5yZXdpbmQKKyAgICBA
bGluZW5yID0gMAorICAgIEBpbl9hcHAgPSBmYWxzZQorICAgIEBsYXN0X3N3aXRjaCA9ICJzdGFy
dCBvZiBmaWxlIiAjIEZvciBlcnJvciBtZXNzYWdlcworICBlbmQKKyAgZGVmIG5leHRfbGluZQor
ICAgIHdoaWxlIHRydWUKKyAgICAgIGwgPSBAZi5nZXRzCisgICAgICBpZiBsLm5pbD8KKyAgICAg
ICAgcmV0dXJuIGwKKyAgICAgIGVuZAorICAgICAgQGxpbmVuciArPSAxCisgICAgICBpZiAvXiNc
cypBUFBccyovLm1hdGNoKGwpCisgICAgICAgIGlmIEBpbl9hcHAKKyAgICAgICAgICByYWlzZSAi
I0FQUCBvbiBsaW5lICN7QGxpbmVucn0gYnV0IGFscmVhZHkgaW4gI0FQUCAoI3tAbGFzdF9zd2l0
Y2h9KSIKKyAgICAgICAgZW5kCisgICAgICAgIEBpbl9hcHAgPSB0cnVlCisgICAgICAgIEBsYXN0
X3N3aXRjaCA9IEBsaW5lbnIKKyAgICAgICAgaWYgQG5vYXBwX3RvX2FwcAorICAgICAgICAgIEBu
b2FwcF90b19hcHAuY2FsbCgpCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgICBpZiAvXiNc
cypOT19BUFBccyovLm1hdGNoKGwpCisgICAgICAgIGlmIG5vdCBAaW5fYXBwCisgICAgICAgICAg
cmFpc2UgIiNOT0FQUCBvbiBsaW5lICN7QGxpbmVucn0gYnV0IHdhcyBub3QgaW4gI0FQUCAobGFz
dCBzd2ljaCBhdCAje0BsYXN0X3N3aXRjaH0pIgorICAgICAgICBlbmQKKyAgICAgICAgQGluX2Fw
cCA9IGZhbHNlCisgICAgICAgIEBsYXN0X3N3aXRjaCA9IEBsaW5lbnIKKyAgICAgICAgaWYgQGFw
cF90b19ub2FwcAorICAgICAgICAgIEBhcHBfdG9fbm9hcHAuY2FsbCgpCisgICAgICAgIGVuZAor
ICAgICAgZW5kCisgICAgICByZXR1cm4gbAorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBG
aWxlQ29uZmxpY3RSZXNvbHZlcgorICBAQGZpbGVfcmUgPSAvXlxzKlsuXWZpbGVccysoPzxzbG90
PlxkKylccysoPzxyZXN0Pi4qKSQvCisgIEBAbG9jX3JlID0gL14oPzx3aGl0ZTE+XHMqKVsuXWxv
Yyg/PHdoaXRlMj5ccyspKD88c2xvdD5cZCspKD88cmVzdD5ccytcZCsuKikkLworICBkZWYgaW5p
dGlhbGl6ZShpbmYsIG91dGYpCisgICAgQG91dGYgPSBvdXRmCisgICAgQHRyYWNrZXJzID0gW0Zp
bGVTbG90VHJhY2tlci5uZXcobmlsKV0KKyAgICBAYXNtX3JlYWRlciA9IEFzbVJlYWRlci5uZXco
aW5mKQorICAgICMgV2hlbiB3ZSBlbnRlciBhbiAjQVBQIHNlY3Rpb24gKGkuZS4gYXNtIGVtaXR0
ZWQgZnJvbSBhbiBleHBhbmRlZAorICAgICMgaW5saW5lIGFzbSBzdGF0ZW1lbnQpLCBjcmVhdGUg
YSBuZXcgZmlsZSB0cmFja2VyLCBpbiBlZmZlY3QKKyAgICAjIHByb2Nlc3NpbmcgdGhlIC5maWxl
IGFuZCAubG9jIGRpcmVjdGl2ZXMgaW4gYSBuZXcgIm5hbWVzcGFjZSIKKyAgICAjIChhcyBmYXIg
YXMgdGhlIGZpbGUgbnVtYmVycyBhcmUgY29uY2VybmVkKS4gVGhpcyBpcyBhbiBhcnJheSwKKyAg
ICAjIGJ1dCBpbiBwcmFjdGljZSB0aGUgc2l6ZSB3aWxsIGVpdGhlciBiZSAxIChOT0FQUCkgb3Ig
MiAoQVBQKS4KKyAgICBAYXNtX3JlYWRlci5hcHBfdG9fbm9hcHAgPSBQcm9jLm5ldyB7IHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhY2tlcnMucG9wCisg
ICAgfQorICAgIEBhc21fcmVhZGVyLm5vYXBwX3RvX2FwcCA9IFByb2MubmV3IHsgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0cmFja2Vycy5wdXNoKEZpbGVT
bG90VHJhY2tlci5uZXcoQHRyYWNrZXJzWy0xXSkpCisgICAgfQorICBlbmQKKyAgZGVmIHJ1bgor
ICAgIHdoaWxlIHRydWUKKyAgICAgIGwgPSBAYXNtX3JlYWRlci5uZXh0X2xpbmUKKyAgICAgIGJy
ZWFrIHVubGVzcyBsCisKKyAgICAgIG1kID0gQEBmaWxlX3JlLm1hdGNoKGwpCisgICAgICBpZiBt
ZAorICAgICAgICBmaWxlX2RpcmVjdGl2ZShtZCkKKyAgICAgICAgbmV4dAorICAgICAgZW5kCisg
ICAgICBtZCA9IEBAbG9jX3JlLm1hdGNoKGwpCisgICAgICBpZiBtZAorICAgICAgICBsb2NfZGly
ZWN0aXZlKG1kKQorICAgICAgICBuZXh0CisgICAgICBlbmQKKyAgICAgIEBvdXRmLndyaXRlKGwp
CisgICAgICBuZXh0CisgICAgZW5kCisgIGVuZAorICBkZWYgbG9jX2RpcmVjdGl2ZShtZCkKKyAg
ICB0cmFja2VyID0gQHRyYWNrZXJzLmxhc3QKKyAgICBzbG90ID0gdHJhY2tlci5yZW1hcF9zbG90
KG1kWzpzbG90XS50b19pKQorICAgIEBvdXRmLnB1dHMoIiN7bWRbOndoaXRlMV19LmxvYyN7bWRb
OndoaXRlMl19I3tzbG90fSN7bWRbOnJlc3RdfSIpCisgIGVuZAorICBkZWYgZmlsZV9kaXJlY3Rp
dmUobWQpCisgICAgdHJhY2tlciA9IEB0cmFja2Vycy5sYXN0CisKKyAgICBwciA9IEZpbGVEaXJl
Y3RpdmVBcmdTY2FubmVyLm5ldyhtZFs6cmVzdF0pLnBhcnNlCisgICAgaWYgcHIucmVzcG9uZF90
bz8oOmVycm9yKQorICAgICAgJHN0ZGVyci5wdXRzKCJFcnJvciBwYXJzaW5nIHBhdGggYXJndW1l
bnQgdG8gLmZpbGUgZGlyZWN0aXZlOiAje3ByLmVycm9yfSIpCisgICAgICBleGl0KDIpCisgICAg
ZW5kCisKKyAgICBwYXRoID0gcHIuc3RyCisgICAgdHJhY2tlci5yZWdpc3Rlcl9wYXRoKHBhdGgs
IG1kWzpzbG90XS50b19pKQorCisgICAgc2xvdCA9IHRyYWNrZXIuc2xvdF9mb3JfcGF0aChwYXRo
KQorICAgIEBvdXRmLnB1dHMoIlx0LmZpbGVcdCN7c2xvdH0gI3ttZFs6cmVzdF19IikKKyAgZW5k
CitlbmQKKworIyBGaXJzdCwgbWFrZSBzdXJlIG91ciB0ZXN0cyBzdGlsbCBwYXNzLiBUaGlzIG9u
bHkgdGFrZXMgYSBmcmFjdGlvbiBvZgorIyBvdXIgcnVudGltZSBhbmQgZW5zdXJlcyB0aGUgdGVz
dHMgd2lsbCBnZXQgcnVuIGJ5IGFueW9uZSB0cnlpbmcgb3V0CisjIGNoYW5nZXMgdG8gdGhpcyBm
aWxlLgorc2VsZnRlc3QKKworaWYgQVJHVi5zaXplICE9IDIKKyAgJHN0ZGVyci5wdXRzKCJVc2Fn
ZTogI3skMH0gaW5wdXQgb3V0cHV0IikKKyAgZXhpdCgyKQorZW5kCisKK2lucGF0aCwgb3V0cGF0
aCA9IEFSR1YuY29sbGVjdCB7IHxufCBQYXRobmFtZS5uZXcobikgfQorCitpZiBub3QgaW5wYXRo
LmZpbGU/CisgICRzdGRlcnIucHV0cygiTm90IGEgcmVndWxhciBmaWxlOiBgI3tpbnBhdGh9YCIp
CisgIGV4aXQoMikKK2VuZAorCitpZiBpbnBhdGguZXh0bmFtZS51cGNhc2UgIT0gIi5TIgorICAk
c3RkZXJyLnB1dHMoIndhcm5pbmc6IGZpbGUgYCN7aW5wYXRofWAgZG9lc24ndCBoYXZlIGEgYC5z
YCBvciBgLlNgIGV4dGVuc2lvbi4gR29pbmcgb24gYW55d2F5Li4uIikKK2VuZAorCitGaWxlLm9w
ZW4oaW5wYXRoLCAiciIpIHsgfGluZnwKKyAgRmlsZS5vcGVuKG91dHBhdGgsICJ3IikgeyB8b3V0
ZnwKKyAgICBGaWxlQ29uZmxpY3RSZXNvbHZlci5uZXcoaW5mLCBvdXRmKS5ydW4KKyAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM3YjYzOGJjNDAxMWM5Y2Q0NGUxNjI5OTdl
MDkzYzhlMDRlNDIwYTIuLmU2ZGViMDE0MjUyMDQwOGY4Yzc4MTAwYWE2ODY1ZGE1ZGY4N2QzNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTY3NSw4ICs2NzUsNiBAQCBsbGludC9M
TEludEVudHJ5cG9pbnQuY3BwCiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHAKIGxsaW50L0xMSW50VGh1bmtzLmNwcAotLy8gRklYTUU6IFdlIGNhbid0
IGJ1bmRsZSB0aGlzIGZpbGUgZHVlIHRvIGEgY2xhbmcgYnVnLgotbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAgQG5vLXVuaWZ5CiAKIHBhcnNlci9MZXhlci5jcHAKIHBhcnNlci9Nb2R1bGVB
bmFseXplci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAppbmRleCBmOGFmYzdhMDcwZDczNTM4MTNhOWZiMzNlMmZmMjM1MmM2
OWViYTc2Li5jOWFhZmMxNWU4NzA3YmJhOTg5MjE0MzIzNTQ3M2NmMDcyZTRiODY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
CkBAIC01MzcsOCArNTM3LDE5IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50
cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKICNkZWZpbmUgT0ZG
TElORV9BU01fT1BDT0RFX0RFQlVHX0xBQkVMKGxhYmVsKQogI2VuZGlmCiAKKy8vIFRoaXMgd29y
a3MgYXJvdW5kIGEgYnVnIGluIEdEQiB3aGVyZSwgaWYgdGhlIGNvbXBpbGF0aW9uIHVuaXQKKy8v
IGRvZXNuJ3QgaGF2ZSBhbnkgYWRkcmVzcyByYW5nZSBpbmZvcm1hdGlvbiwgaXRzIGxpbmUgdGFi
bGUgd29uJ3QKKy8vIGV2ZW4gYmUgY29uc3VsdGVkLiBFbWl0IHtiZWZvcmUsYWZ0ZXJ9X2xsaW50
X2FzbSBzbyB0aGF0IHRoZSBjb2RlCisvLyBlbWl0dGVkIGluIHRoZSB0b3AgbGV2ZWwgaW5saW5l
IGFzbSBzdGF0ZW1lbnQgaXMgd2l0aGluIGZ1bmN0aW9ucworLy8gdmlzaWJsZSB0byB0aGUgY29t
cGlsZXIuIFRoaXMgd2F5LCBHREIgY2FuIHJlc29sdmUgYSBQQyBpbiB0aGUKKy8vIGxsaW50IGFz
bSBjb2RlIHRvIHRoaXMgY29tcGlsYXRpb24gdW5pdCBhbmQgdGhlIHN1Y2Nlc3NmdWxseSBsb29r
CisvLyB1cCB0aGUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uCitERUJVR0dFUl9BTk5PVEFUSU9O
X01BUktFUihiZWZvcmVfbGxpbnRfYXNtKQorCiAvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQg
Ynkgb2ZmbGluZWFzbSwgd2hpY2ggY29udGFpbnMgYWxsIG9mIHRoZSBhc3NlbWJseSBjb2RlCiAv
LyBmb3IgdGhlIGludGVycHJldGVyLCBhcyBjb21waWxlZCBmcm9tIExvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtLgogI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKIAorREVCVUdHRVJfQU5OT1RBVElP
Tl9NQVJLRVIoYWZ0ZXJfbGxpbnRfYXNtKQorCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgppbmRleCA0OTU0M2ZjZDFi
MmZhMTZlNjU4OGI2ODMyODlhYzA0NzcyN2I3ZjBlLi4yZjMxMjNlNWZhMDQzNTNkYTBhMzcyZjQ1
OWVkMzc4YWRmODMyOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jb25maWcucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29u
ZmlnLnJiCkBAIC04OSw2ICs4OSwxMCBAQCBkZWYgc2hvdWxkRW5hYmxlRGVidWdBbm5vdGF0aW9u
cygpCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICBlbmQKICAgICAgICAgZW5kCisg
ICAgZWxzaWYgRU5WWyJDTUFLRV9DWFhfQ09NUElMRVJfSUQiXSA9PSAnR05VJyBhbmQKKyAgICAg
ICAgIEVOVlsiR0NDX09GRkxJTkVBU01fU09VUkNFX01BUCJdID09ICdPTicKKyAgICAgICMgQWxs
IEdDQyB2ZXJzaW9ucyB0aGF0IGNhbiBidWlsZCBKU0Mgc3VwcG9ydCBkZWJ1ZyBhbm5vdGF0aW9u
cworICAgICAgcmV0dXJuIHRydWUKICAgICBlbmQKIAogICAgIGZhbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRl
eCA0Mzc0Y2IzYWYyM2M4OWJiNTM0OTQ2OWRjODhlZmM2NDQ2MTRhNDdjLi4wZmIzMzIwMjdlZDll
ZjVmNjQyZGFkNmVkODk1NjU1ZDZiMDMxZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTM4Miw2ICszODIs
MTcgQEAKICNkZWZpbmUgV0FSTl9VTlVTRURfUkVUVVJOCiAjZW5kaWYKIAorLyogREVCVUdHRVJf
QU5OT1RBVElPTl9NQVJLRVIgKi8KKworI2lmICFkZWZpbmVkKERFQlVHR0VSX0FOTk9UQVRJT05f
TUFSS0VSKSAmJiBDT01QSUxFUihHQ0MpCisjZGVmaW5lIERFQlVHR0VSX0FOTk9UQVRJT05fTUFS
S0VSKG5hbWUpIFwKKyAgICBfX2F0dHJpYnV0ZV9fKChfX25vX3Jlb3JkZXJfXykpIHZvaWQgbmFt
ZSh2b2lkKSB7IF9fYXNtX18oIiIpOyB9CisjZW5kaWYKKworI2lmICFkZWZpbmVkKERFQlVHR0VS
X0FOTk9UQVRJT05fTUFSS0VSKQorI2RlZmluZSBERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUihu
YW1lKQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBDT01QSUxFUihN
U1ZDKQogI2RlZmluZSBfX2hhc19pbmNsdWRlKHBhdGgpIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0Nv
bW1vbi5jbWFrZQppbmRleCBhNTc0ZWY4YzIyMmJhMDcyMGQyMmExZmQ1ZDVjODE1M2E0ZGNmNzIx
Li5lYTEzNjI0ODNlNzgwZTQxNWNjODU0OGNjNmY5MTRiMmE4OGNkOGNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0NvbW1vbi5jbWFrZQpAQCAtMTEyLDYgKzExMiwxNSBAQCBpZiAoREVCVUdfRklTU0lPTikKICAg
ICBzZXQoQ01BS0VfU0hBUkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdT
fSAtV2wsLS1nZGItaW5kZXgiKQogZW5kaWYgKCkKIAorc2V0KEdDQ19PRkZMSU5FQVNNX1NPVVJD
RV9NQVBfREVGQVVMVCBPRkYpCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWci
IE9SIENNQUtFX0JVSUxEX1RZUEUgU1RSRVFVQUwgIlJlbFdpdGhEZWJJbmZvIikKKyAgICBzZXQo
R0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9ERUZBVUxUIE9OKQorZW5kaWYgKCkKKworb3B0aW9u
KEdDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVAKKyAgIlByb2R1Y2UgZGVidWcgbGluZSBpbmZvcm1h
dGlvbiBmb3Igb2ZmbGluZWFzbS1nZW5lcmF0ZWQgY29kZSIKKyAgJHtHQ0NfT0ZGTElORUFTTV9T
T1VSQ0VfTUFQX0RFRkFVTFR9KQorCiAjIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgT3Blbk1QLgogIyAg
LSBBdCB0aGlzIG1vbWVudCwgT3Blbk1QIGlzIG9ubHkgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBp
bXBsZW1lbnRhdGlvbgogIyAgICB0byBuYXRpdmUgdGhyZWFkcyBmb3IgdGhlIHBhcmFsbGVsaXph
dGlvbiBvZiB0aGUgU1ZHIGZpbHRlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395811</attachid>
            <date>2020-04-08 08:21:40 -0700</date>
            <delta_ts>2020-04-09 05:45:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200408152138.patch</filename>
            <type>text/plain</type>
            <size>29483</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDFkN2M3NTg0MmNjNzJhMDMwYzQzNGNiMzM1NTY4ODBiMWU5NDVhLi43NTQxZWI3NDNmMDk0NWNi
NDkyZDFmNjgxNjAyZWU3ZjM4ZGZiNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0wMy0zMSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBFbmFibGUgb2ZmbGluZWFzbSBkZWJ1ZyBhbm5vdGF0aW9u
cyBmb3IgR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDcxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBU
aGlzIHNpbXBseSByZXVzZXMgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBnZW5lcmF0ZXMgZGVidWcK
KyAgICAgICAgYW5ub3RhdGlvbnMsIGFkZGluZyB0d28gd29ya2Fyb3VuZHMgZm9yIGxpbWl0YXRp
b25zIGluIEdDQyBhbmQKKyAgICAgICAgR0RCLgorCisgICAgICAgIEZpcnN0LCB0aGUgLmZpbGUg
ZGlyZWN0aXZlcyB0aGF0IG9mZmxpbmVhc20gaW5zZXJ0cyBpbiBpbmxpbmUgYXNtCisgICAgICAg
IHVzZSBmaWxlIHNsb3RzIHRoYXQgY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiB0aGUgY29tcGlsYXRp
b24gdW5pdAorICAgICAgICB0aGF0IGluY2x1ZGVzIExMSW50QXNzZW1ibHkuaCAoc3BlY2lmaWNh
bGx5LAorICAgICAgICBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuIENsYW5nJ3MgYnVpbHQtaW4g
YXNzZW1ibGVyIHdpbGwKKyAgICAgICAgdHJhbnNwYXJlbnRseSBmaXggdGhhdCBmb3IgdXMsIGJ1
dCBmb3IgR0NDIHdlIG5lZWQgdG8KKyAgICAgICAgcG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQg
YXNzZW1ibGVyLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGNtYWtlIGRvZXNuJ3QgYWxsb3cg
dXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICAgICBzaW5nbGUg
c291cmNlIGZpbGUsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdGFyZ2V0IGZvciBp
dC4gIFRoaXMKKyAgICAgICAgd3JhcHBpbmcgb25seSBoYXBwZW5zIHdoZW4gYnVpbGRpbmcgd2l0
aCBHQ0MgYW5kIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5CisgICAgICAgIHJlcXVlc3RlZCBkZWJ1
ZyBpbmZvcm1hdGlvbiwgZWl0aGVyIGJ5IHNlbGVjdGluZyBhIERlYnVnL1JlbFdpdGhEZWJJbmZv
IGJ1aWxkCisgICAgICAgIG9yIHNldHRpbmcgR0NDX09GRkxJTkVBU01fU09VUkNFX01BUC4KKwor
ICAgICAgICBTZWNvbmQsIEdEQiB3aWxsIG9ubHkgbG9vayBhdCB0aGUgbGluZSB0YWJsZSBmb3Ig
YSBjb21waWxhdGlvbiB1bml0IGlmCisgICAgICAgIGl0IGNhbiBmaXJzdCByZXNvbHZlIHRoZSBh
ZGRyZXNzIHRvIG9uZSBvZiB0aGUga25vd24gc3ltYm9scyBpbiB0aGUKKyAgICAgICAgZmlsZS4g
SW50cm9kdWNlIG1hcmtlciBzeW1ib2xzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDMtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZW5hbWUga2VlcEFsaXZlIHRv
IGVuc3VyZVN0aWxsQWxpdmVIZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uZjYzMTc0ZDk0ZWE3
NWZiM2Y4MTIzMDMzYmEwN2M4NTdiOWNlMDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjIwLDYgKzIyMCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBF
TkRTICR7R0VORVJBVE9SfSBieXRlY29kZS9CeXRlY29kZUxpc3QucmIKICAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdG9yL21haW4ucmIg
LS1ieXRlY29kZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVj
b2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gLS1ieXRlY29kZV9zdHJ1Y3RzX2ggJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9CeXRlY29kZVN0cnVjdHMuaCAtLWJ5dGVjb2Rl
X2luZGljZXNfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2Rl
SW5kaWNlcy5oICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
LS13YXNtX2pzb24gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3dhc20vd2FzbS5qc29uIC0td2FzbV9s
bGludF9nZW5lcmF0b3JfaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1dh
c21MTEludEdlbmVyYXRvcklubGluZXMuaCAtLWluaXRfd2FzbV9sbGludCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luaXRXYXNtLmFzbSAtLWJ5dGVjb2RlX2R1bXBlciAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0J5dGVjb2RlRHVtcGVyR2VuZXJh
dGVkLmNwcAogICAgIFZFUkJBVElNKQorYWRkX2N1c3RvbV90YXJnZXQoQnl0ZWNvZGVzIERFUEVO
RFMgIiR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQnl0ZWNvZGVzLmgiKQog
CiAKIGlmIChXVEZfT1NfTUFDX09TX1gpCkBAIC0zMjMsNyArMzI0LDcgQEAgYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
LyR7TExJbnRPdXRwdXR9CiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2FzbS5yYgogICAgIERFUEVORFMgTExJbnRPZmZzZXRzRXh0cmFjdG9yICR7
TExJTlRfQVNNfSAke09GRkxJTkVfQVNNfSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5pdFdhc20uYXNtCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vYXNtLnJiIC1JJHtKYXZhU2NyaXB0Q29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtICQ8VEFSR0VUX0ZJTEU6TExJbnRPZmZzZXRzRXh0cmFjdG9yPiAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9ICR7T0ZGTElORV9B
U01fQVJHU30KKyAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52IENNQUtFX0NYWF9D
T01QSUxFUl9JRD0ke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0gR0NDX09GRkxJTkVBU01fU09VUkNF
X01BUD0ke0dDQ19PRkZMSU5FQVNNX1NPVVJDRV9NQVB9ICR7UlVCWV9FWEVDVVRBQkxFfSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9hc20ucmIgLUkke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9LyAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gJDxUQVJHRVRfRklMRTpMTEludE9mZnNldHNFeHRyYWN0b3I+ICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtMTEludE91dHB1dH0gJHtPRkZMSU5F
X0FTTV9BUkdTfQogICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSB0b3VjaF9ub2NyZWF0
ZSAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9LyR7TExJbnRPdXRwdXR9CiAg
ICAgV09SS0lOR19ESVJFQ1RPUlkgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fQogICAgIFZFUkJBVElNKQpAQCAtMzQ4LDEwICszNDksMTcgQEAgaWYgKE1TVkMgQU5EIE5PVCBF
TkFCTEVfQ19MT09QKQogICAgICAgICBDT01NQU5EICR7TUFTTV9FWEVDVVRBQkxFfSAke0xMSU5U
X01BU01fRkxBR1N9ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTG93TGV2
ZWxJbnRlcnByZXRlcldpbi5vYmogJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9Mb3dMZXZlbEludGVycHJldGVyV2luLmFzbQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0
KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vTG93TGV2ZWxJbnRlcnByZXRlcldpbi5vYmopCisgICAgYWRkX2xpYnJhcnko
TG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1QgbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHApCiBlbHNlICgpCi0gICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwotICAg
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0xMSW50QXNzZW1ibHku
aAotICAgICkKKyAgICAjIEFzIHRoZXJlJ3MgcG9vciB0b29sY2hhaW4gc3VwcG9ydCBmb3IgdXNp
bmcgYC5maWxlYCBkaXJlY3RpdmVzIGluCisgICAgIyBpbmxpbmUgYXNtIChpLmUuIHRoZXJlJ3Mg
bm8gd2F5IHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0aGUgYC5maWxlYAorICAgICMgZGlyZWN0aXZl
cyBnZW5lcmF0ZWQgYnkgdGhlIEMgY29kZSBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCksIHdlCisg
ICAgIyBpbnRyb2R1Y2UgYSBwb3N0cHJvY2Vzc2luZyBwYXNzIGZvciB0aGUgYXNtIHRoYXQgZ2V0
cyBhc3NlbWJsZWQgaW50bworICAgICMgYW4gb2JqZWN0IGZpbGUuIFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIGZvciBMb3dMZXZlbEludGVycHJldGVyLmNwcAorICAgICMgYW5kIGNtYWtlIGRvZXNu
J3QgYWxsb3cgdXMgdG8gaW50cm9kdWNlIGEgY29tcGlsZXIgd3JhcHBlciBmb3IgYQorICAgICMg
c2luZ2xlIHNvdXJjZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIHRhcmdl
dCBmb3IgaXQuCisgICAgYWRkX2xpYnJhcnkoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBPQkpFQ1Qg
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKKyAgICAgICAgJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS8ke0xMSW50T3V0cHV0fSkKIGVuZGlmICgpCiAKICMgV2ViQXNz
ZW1ibHkgZ2VuZXJhdG9yCkBAIC0xMzYyLDYgKzEzNzAsMzAgQEAgdGFyZ2V0X2luY2x1ZGVfZGly
ZWN0b3JpZXMoTExJbnRPZmZzZXRzRXh0cmFjdG9yIFNZU1RFTSBQUklWQVRFICR7SmF2YVNjcmlw
dENvcmUKIAogYWRkX3N1YmRpcmVjdG9yeShzaGVsbCkKIAordGFyZ2V0X2luY2x1ZGVfZGlyZWN0
b3JpZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgIFBSSVZBVEUgIiQ8VEFSR0VUX1BST1BF
UlRZOkphdmFTY3JpcHRDb3JlLElOQ0xVREVfRElSRUNUT1JJRVM+IikKK2FkZF9kZXBlbmRlbmNp
ZXMoTG93TGV2ZWxJbnRlcnByZXRlckxpYiBXVEZfQ29weUhlYWRlcnMgQnl0ZWNvZGVzKQorCitp
ZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQ
KQorICAgIG1lc3NhZ2UoU1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQorCisg
ICAgc2V0KExvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19TT1VSQ0VTX0RJUn0vcG9zdHByb2Nlc3MtYXNtIikKKyAgICBnZXRfdGFyZ2V0X3Byb3Bl
cnR5KFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSBMb3dMZXZlbEludGVycHJldGVyTGliIFJVTEVf
TEFVTkNIX0NPTVBJTEUpCisgICAgaWYgKFBST1BfUlVMRV9MQVVOQ0hfQ09NUElMRSkKKyAgICAg
ICAgc2V0KExvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNIRVIgIiR7TG93TGV2ZWxJbnRlcnByZXRl
cl9MQVVOQ0hFUn0gJHtQUk9QX1JVTEVfTEFVTkNIX0NPTVBJTEV9IikKKyAgICBlbmRpZiAoKQor
ICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgTG93TGV2ZWxJbnRlcnByZXRlckxpYgorICAgICAgICBQ
Uk9QRVJUWSBSVUxFX0xBVU5DSF9DT01QSUxFICIke0xvd0xldmVsSW50ZXJwcmV0ZXJfTEFVTkNI
RVJ9IikKKworICAgICMgUGFzcyBpbiB0aGUgZmlsZW5hbWUgYXMgYSBtYWdpYyBwcmVwcm9jZXNz
b3IgZGlyZWN0aXZlLCBzbyB0aGF0CisgICAgIyB0aGUgd3JhcHBlciBjYW4gYWNjdXJhdGVseSBp
ZGVudGlmeSB0aGUgc291cmNlIGZpbGUuCisgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVz
KCJsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIKKyAgICAgICAgUFJPUEVSVElFUworICAg
ICAgICBDT01QSUxFX0RFRklOSVRJT05TICJQT1NUUFJPQ0VTU19BU009bGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAiKQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
U09VUkNFUyAkPFRBUkdFVF9PQkpFQ1RTOkxvd0xldmVsSW50ZXJwcmV0ZXJMaWI+KQorCiBXRUJL
SVRfQ09NUFVURV9TT1VSQ0VTKEphdmFTY3JpcHRDb3JlKQogV0VCS0lUX1dSQVBfU09VUkNFTElT
VCgke0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQogV0VCS0lUX0ZSQU1FV09SSyhKYXZhU2NyaXB0
Q29yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9j
ZXNzLWFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Bvc3Rwcm9jZXNzLWFzbQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMjYxMmE0MjY2MDAzM2M0N2QxOTI0ZWVhNTU3YzU2NWIzNTE3ODU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcG9zdHByb2Nlc3Mt
YXNtCkBAIC0wLDAgKzEsMTkxIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLiBMLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIyBXcmFwcGVyIGZvciBhIC5jcHAgLT4gLm8gY29tcGlsYXRpb24gY29tbWFuZC4g
SXQKKyMgMS4gY29udmVydHMgdGhlIGNvbW1hbmQgdG8gZ2VuZXJhdGUgYSBgLnMnIGZpbGUKKyMg
Mi4gcnVucyB0aGUgQVNNIHBvc3Rwcm9jZXNzb3Igb24gaXQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFs
IGAuc2AgZmlsZQorIyAzLiBhc3NlbWJsZXMgdGhlIGAuc2AgZmlsZSB0byBhIGAub2AgZmlsZQor
CiskYXNtX3N1ZmZpeF9wcmUgPSAiLnByZS5zIgorJGFzbV9zdWZmaXggPSAiLnMiCiskcG9zdHBy
b2Nlc3NvciA9ICIje0ZpbGUuZGlybmFtZSgkMCl9L3Jlc29sdmUtYXNtLWZpbGUtY29uZmxpY3Rz
LnJiIgorCisKKyRpbnRlcm1lZGlhdGVfcGF0aHMgPSBbXQorCisjIFdlIG5lZWQgdG8gd29yayB3
aXRoIGluZGljZXMgYSBsb3QgYW5kIHVuZm9ydHVuYXRlbHkgJ2dldG9wdGxvbmcnIGluCisjIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgZXhwb3NlIG9wdGluZCwgc28gd2UncmUgZ29pbmcg
d2l0aAorIyBhcnJheSBzZWFyY2hlcyBmb3Igc2ltcGxpY2l0eS4KK2RlZiBpbmRleF9ub2ZhaWwo
YXJ5LCBmLCBlcnJtc2cpCisgIGlkeCA9IGFyeS5pbmRleCB7IHxlbHwKKyAgICBmLmNhbGwoZWwp
CisgIH0KKyAgaWYgaWR4Lm5pbD8KKyAgICAkc3RkZXJyLnB1dHMoZXJybXNnKQorICAgIGV4aXQo
MykKKyAgZW5kCisgIGlkeAorZW5kCisKKyMgRmluZCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgZmls
ZSBmb3IgdGhpcyBjb21waWxhdGlvbiBjb21tYW5kLAorIyByZW1vdmluZyBpdCBmcm9tIHRoZSBh
cmdzLiBOb3RlIHRoYXQgdGhlIHBhdGggKEEpIGFzIGl0IGFwcGVhcnMgaGVyZQorIyAoY29taW5n
IGZyb20gYSBjbWFrZSBydWxlKSBpcyBsaWtlbHkgdG8gYmUgZGlmZmVyZW50IHRvIHRoZQorIyBh
bm9ueW1vdXMgYXJndW1lbnQgKEIpIHRvIHRoZSBjb21waWxhdGlvbiBjb21tYW5kLiBIb3dldmVy
LCBBIHdpbGwKKyMgYmUgYSBzdWZmaXggb2YgQi4KKyMKKyMgRXhpdCB3aXRoIGFuIGVycm9yIGlm
IHRoZSBhcmd1bWVudCBpcyBub3QgdGhlcmUuIFRoaXMgaGFzIGFscmVhZHkKKyMgYmVlbiBjaGVj
a2VkIGJ5IGBjeHgtd3JhcHBlcmAsIG90aGVyd2lzZSB3ZSB3b3VsZG4ndCBiZSBydW5uaW5nLgor
ZGVmIGV4dHJhY3RfaW5wdXQhKGFyZ3MpCisgIHByZWZpeCA9ICctRFBPU1RQUk9DRVNTX0FTTT0n
CisKKyAgaWR4ID0gaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsgfGFyZ3wKKyAgICBhcmcu
c3RhcnRfd2l0aD8ocHJlZml4KQorICB9LCAiTm8gYC1EUE9TVFBST0NFU1NfQVNNYCBhcmd1bWVu
dGAiKQorCisgIHBhdGggPSBhcmdzW2lkeF1bcHJlZml4LnNpemUuLi0xXQorICBpZiBwYXRoLnNp
emUgPT0gMAorICAgICRzdGRlcnIucHV0cygiRW1wdHkgcGF0aCBpbiAtRFBPU1RQUk9DRVNTX0FT
TT0iKQorICAgIGV4aXQoMykKKyAgZW5kCisgICMgV2Ugb25seSBuZWVkIHRoaXMgdG8gYmUgZGVm
aW5lZCBmb3IgdGhlIHByZXByb2Nlc3NvciAobm90IGFueQorICAjIHdyYXBwZXIpIGZyb20gbm93
IG9uLgorICBhcmdzW2lkeF0gPSAiLURQT1NUUFJPQ0VTU19BU00iCisgIHJldHVybiBwYXRoCitl
bmQKKworIyBHZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhcmd1bWVudCBlbmRpbmcgaW4gdGhp
cyBzdWZmaXguCisjCisjIEV4aXQgd2l0aCBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnQgaXNuJ3Qg
dGhlcmUuIFdlJ3JlIG9ubHkgZXZlcgorIyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgd2Uga25vdyBh
cmUgYmVpbmcgcGFzc2VkIGluIGJ5IHRoZSBidWlsZAorIyBzeXN0ZW0uCitkZWYgZ2V0X2FyZ19p
ZHhfc3VmZml4KGFyZ3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsg
fGFyZ3wKKyAgICAgICAgICAgICAgICAgYXJnLmVuZF93aXRoPyh3YW50ZWQpCisgICAgICAgICAg
ICAgICB9LCAiTm8gYXJndW1lbnQgZW5kcyB3aXRoICN7d2FudGVkfSIpCitlbmQKKworIyBHZXQg
aW5kZXggb2YgYSBnaXZlbiBhcmd1bWVudC4gRGllIGlmIGl0J3Mgbm90IHRoZXJlLgorZGVmIGdl
dF9hcmdfaWR4KGFyZ3MsIHdhbnRlZCkKKyAgaW5kZXhfbm9mYWlsKGFyZ3MsIFByb2MubmV3IHsg
fGFyZ3wKKyAgICAgICAgICAgICAgICAgYXJnID09IHdhbnRlZAorICAgICAgICAgICAgICAgfSwg
Ik5vIGAje3dhbnRlZH1gIGFyZ3VtZW50IikKK2VuZAorCisjIEdldCB0aGUgaW5kZXggb2YgYC1v
YCBhbmQgdmVyaWZ5IHRoYXQgYW4gYXJndW1lbnQgZm9sbG93cy4KKyMgQm90aCBhcmUgZ3VhcmFu
dGVlZCB0byBleGlzdCAoZnJvbSBvdXIgYnVpbGQgc3lzdGVtKS4KK2RlZiBnZXRfb19pZHgoYXJn
cykKKyAgaSA9IGdldF9hcmdfaWR4KGFyZ3MsICctbycpCisgIGlmIChpICsgMSkgPj0gYXJncy5z
aXplCisgICAgJHN0ZGVyci5wdXRzKCJObyBhcmd1bWVudCB0byBgLW9gIikKKyAgICBleGl0KDMp
CisgIGVuZAorICBpCitlbmQKKworIyBSdW4gY29tbWFuZCBhbmQgZGllIGlmIGl0IGZhaWxzLCBw
cm9wYWdhdGluZyB0aGUgZXhpdCBjb2RlLgorZGVmIHJ1bl9jbWQoY21kKQorICBwaWQgPSBQcm9j
ZXNzLnNwYXduKCpjbWQpCisgIFByb2Nlc3Mud2FpdHBpZChwaWQpCisgIHJldCA9ICQ/CisgIGlm
IG5vdCByZXQuc3VjY2Vzcz8KKyAgICAkc3RkZXJyLnB1dHMoIkVycm9yIHJ1bm5pbmcgY21kOiAj
e3JldH0iKQorICAgIGV4aXQocmV0LmV4aXRzdGF0dXMpCisgIGVuZAorZW5kCisKKyMgQ29udmVy
dAorIyAgICBjeHggLW8gYmxhaC5vIC1jIGJsYWguY3BwCisjIHRvCisjICAgIGN4eCAtbyBibGFo
LnMgLVMgYmxhaC5jcHAKK2RlZiBidWlsZF9jeHhfY21kKGFyZ3MpCisgIGNfaWR4ID0gZ2V0X2Fy
Z19pZHgoYXJncywgJy1jJykKKyAgb19pZHggPSBnZXRfb19pZHgoYXJncykKKworICBjeHhfYXJn
cyA9IGFyZ3MuY2xvbmUKKworICBjeHhfYXJnc1tjX2lkeF0gPSAnLVMnCisgIG9fcGF0aCA9IGN4
eF9hcmdzW29faWR4ICsgMV0KKyAgY3h4X2FyZ3Nbb19pZHggKyAxXSA9IG9fcGF0aC5zdWIoL1su
XW8kLywgJGFzbV9zdWZmaXgpCisgICRpbnRlcm1lZGlhdGVfcGF0aHMgPDwgY3h4X2FyZ3Nbb19p
ZHggKyAxXQorICBpZiBjeHhfYXJnc1tvX2lkeCArIDFdID09IG9fcGF0aAorICAgICRzdGRlcnIu
cHV0cygiT3V0cHV0IGZpbGUgbmFtZSBub3QgYW4gb2JqZWN0IGZpbGU6IGAje29fcGF0aH1gIikK
KyAgICBleGl0KDMpCisgIGVuZAorICBjeHhfYXJncworZW5kCisKKyMgRG8KKyMgICAgIG12IGJs
YWguUyBibGFoLnByZS5TCisjIFRoZSByZWFzb24gd2UgZG8gYSByZW5hbWUgaW5zdGVhZCBvZiBk
aXJlY3RseSBnZW5lcmF0aW5nIHRoZSAucHJlLnMKKyMgZmlsZSB3aGVuIGNvbXBpbGluZyBpcyBz
byB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIC5kd28gZmlsZSB3aWxsIGhhdmUKKyMgdGhlIGNvcnJl
Y3QgbmFtZSBlbWJlZGRlZC4KK2RlZiByZW5hbWVfc19maWxlKGFyZ3MpCisgIG9fcGF0aCA9IGFy
Z3NbZ2V0X29faWR4KGFyZ3MpICsgMV0KKyAgRmlsZS5yZW5hbWUob19wYXRoLnN1YigvWy5dbyQv
LCAkYXNtX3N1ZmZpeCksCisgICAgICAgICAgICAgIG9fcGF0aC5zdWIoL1suXW8kLywgJGFzbV9z
dWZmaXhfcHJlKSkKK2VuZAorCisjIEJ1aWxkCisjICAgICBwb3N0cHJvY2Vzc29yIGJsYWgucHJl
LlMgYmxhaC5TCitkZWYgYnVpbGRfcG9zdHByb2Nlc3Nvcl9jbWQoYXJncykKKyAgb19wYXRoID0g
YXJnc1tnZXRfb19pZHgoYXJncykgKyAxXQorCisgIHBwX2FyZ3MgPSBbCisgICAgJHBvc3Rwcm9j
ZXNzb3IsCisgICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeF9wcmUpLCAjIGlucHV0
CisgICAgb19wYXRoLnN1YigvWy5dbyQvLCAkYXNtX3N1ZmZpeCkgIyBvdXRwdXQKKyAgXQorICAk
aW50ZXJtZWRpYXRlX3BhdGhzIDw8IHBwX2FyZ3NbLTJdCisgICRpbnRlcm1lZGlhdGVfcGF0aHMg
PDwgcHBfYXJnc1stMV0KKyAgcHBfYXJncworZW5kCisKKyMgQnVpbGQKKyMgICAgIGN4eCAtbyBi
bGFoLm8gLWMgYmxhaC5TCitkZWYgYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkKKyAgaV9pZHgg
PSBnZXRfYXJnX2lkeF9zdWZmaXgoYXJncywgaV9wYXRoKQorICBvX3BhdGggPSBhcmdzW2dldF9v
X2lkeChhcmdzKSArIDFdCisKKyAgYXNfYXJncyA9IGFyZ3MuY2xvbmUKKyAgaV9wYXRoID0gYXNf
YXJnc1tpX2lkeF0KKyAgYXNfYXJnc1tpX2lkeF0gPSBvX3BhdGguc3ViKC9bLl1vJC8sICRhc21f
c3VmZml4KQorICBhc19hcmdzCitlbmQKKworYXJncyA9IEFSR1YudG9fYQoraV9wYXRoID0gZXh0
cmFjdF9pbnB1dCEoYXJncykKKworYmVnaW4KKyAgcnVuX2NtZChidWlsZF9jeHhfY21kKGFyZ3Mp
KQorICByZW5hbWVfc19maWxlKGFyZ3MpCisgIHJ1bl9jbWQoYnVpbGRfcG9zdHByb2Nlc3Nvcl9j
bWQoYXJncykpCisgIHJ1bl9jbWQoYnVpbGRfYXNfY21kKGFyZ3MsIGlfcGF0aCkpCitlbnN1cmUK
KyAgJGludGVybWVkaWF0ZV9wYXRocy5lYWNoIHsgfHB8CisgICAgaWYgRmlsZS5leGlzdD8ocCkK
KyAgICAgIEZpbGUuZGVsZXRlKHApCisgICAgZW5kCisgIH0KK2VuZApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2ZS1hc20tZmlsZS1jb25mbGljdHMucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9yZXNvbHZlLWFzbS1maWxlLWNvbmZsaWN0
cy5yYgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMTgzMmQ4ZDAxZjI5Y2FhYTM2YTlkNmMwYjE0OTYxZDdhNDhiN2Rm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvcmVzb2x2
ZS1hc20tZmlsZS1jb25mbGljdHMucmIKQEAgLTAsMCArMSwzOTkgQEAKKyMhL3Vzci9iaW4vZW52
IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuIEwuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFJlc29sdmUgY29uZmxpY3RzIGluIGAuZmls
ZWAgZGlyZWN0aXZlcyBpbiBhc3NlbWJsZXIgZmlsZXMuIFRob3NlCisjIG1heSByZXN1bHQgZnJv
bSBpbmxpbmUgYXNtIHN0YXRlbWVudHMgd2hpY2ggdGhlbXNlbHZlcyBoYXZlIGAuZmlsZWAKKyMg
ZGlyZWN0aXZlcy4gQXMgdGhlIGlubGluZSBhc20gaGFzIG5vIGlkZWEgd2hhdCB0aGUgbmV4dCBm
cmVlIGZpbGUKKyMgbnVtYmVyIGlzLCBpdCdsbCBnZW5lcmFsbHkgaGF2ZSBpdHMgb3duIG51bWJl
cmluZy4gVG8gZ2V0IHRoaW5ncyB0bworIyB3b3JrIHdlIGhhdmUgdG8KKyMgMS4gcmVtYXAgY29u
ZmxpY3RpbmcgZmlsZSBudW1iZXJzCisjIDIuIGNoYW5nZSBgLmxvY2AgZGlyZWN0aXZlcyB0byBy
ZWZlcmVuY2UgdGhlIGFwcHJvcHJpYXRlIGZpbGUgbnVtYmVyLgorIworIyBUbyBiZSBhYmxlIHRv
IGRvIHRoYXQsIHdlIG5lZWQgc29tZSBjb25jZXB0IG9mICJzY29wZSIsIGkuZS4gd2hpY2gKKyMg
c2V0IG9mIGZpbGVzIGEgZ2l2ZW4gYC5sb2NgIGRpcmVjdGl2ZSByZWZlcnMgdG8uIFdlIGdldCB0
aGF0IGJ5CisjIHRyYWNraW5nIHRoZSAjQVBQLyNOT0FQUCBkaXJlY3RpdmVzIHRoYXQgdGhlIGNv
bXBpbGVyIGVtaXRzIHdoZW4gaXQKKyMgc3dpdGNoIHRvL2Zyb20gaW5saW5lIGFzbS4KKyMKKyMg
SW4gZWZmZWN0LCB3ZSBjb252ZXJ0CisjICAgICAuZmlsZSAxICJmb28iCisjICAgICAjQVBQCisj
ICAgICAuZmlsZSAxICJiYXIiCisjICAgICAuZmlsZSAyICJmb28iCisjICAgICAubG9jIDEsIFgK
KyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZCisjIHRvCisjICAgICAuZmlsZSAxICJmb28i
CisjICAgICAjQVBQCisjICAgICAuZmlsZSAyICJiYXIiCisjICAgICAuZmlsZSAxICJmb28iCisj
ICAgICAubG9jIDIsIFgKKyMgICAgICNOT0FQUAorIyAgICAgLmxvYyAxLCBZCisKK3JlcXVpcmUg
J3BhdGhuYW1lJworcmVxdWlyZSAnc3RyaW5naW8nCityZXF1aXJlICdzdHJzY2FuJworCitQYXJz
ZVJlc3VsdFN1Y2Nlc3MgPSBTdHJ1Y3QubmV3KDpzdHIpCitQYXJzZVJlc3VsdEVycm9yID0gU3Ry
dWN0Lm5ldyg6ZXJyb3IpCisKKyMgUGFyc2VzIHRoZSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwgZm9s
bG93aW5nIGEgLmZpbGUgYXNzZW1ibGVyIGRpcmVjdGl2ZQorY2xhc3MgRmlsZURpcmVjdGl2ZUFy
Z1NjYW5uZXIKKyAgZGVmIGluaXRpYWxpemUocykKKyAgICBAcyA9IFN0cmluZ1NjYW5uZXIubmV3
KHMpCisgIGVuZAorICBkZWYgcGFyc2UKKyAgICBAcy5za2lwKC9ccyovKQorCisgICAgIyBXZSBy
ZXF1aXJlIGF0IGxlYXN0IG9uZSBzdHJpbmcgbGl0ZXJhbAorICAgIHJldCA9IHBhcnNlX3N0cmlu
Z19saXRlcmFsCisgICAgaWYgcmV0LnJlc3BvbmRfdG8/KDplcnJvcikKKyAgICAgIHJldHVybiBy
ZXQKKyAgICBlbmQKKworICAgIEBzLnNraXAoL1xzKi8pCisgICAgaWYgbm90IEBzLmVvcz8KKyAg
ICAgIHJldHVybiBQYXJzZVJlc3VsdEVycm9yLm5ldygiRXhwZWN0ZWQgZW5kIG9mIGxpbmUgYWZ0
ZXIgI3tyZXQuc3RyfSIpCisgICAgZW5kCisgICAgcmV0dXJuIFBhcnNlUmVzdWx0U3VjY2Vzcy5u
ZXcocmV0LnN0cikKKyAgZW5kCisgIGRlZiBwYXJzZV9zdHJpbmdfbGl0ZXJhbAorICAgIGlmIEBz
LnNjYW4oLyIvKS5uaWw/CisgICAgICBlcnIgPSAiRXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgYXQg
YCN7QHMuc3RyaW5nfWAgKHBvcyAje0BzLnBvc30pIgorICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0
RXJyb3IubmV3KGVycikKKyAgICBlbmQKKyAgICBwYXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xp
dGVyYWwKKyAgZW5kCisgIGRlZiBwYXJzZV91bnRpbF9lbmRfb2Zfc3RyaW5nX2xpdGVyYWwKKyAg
ICBzdGFydF9wb3MgPSBAcy5wb3MKKyAgICB3aGlsZSB0cnVlCisgICAgICAjIFNlYXJjaCBmb3Ig
b3VyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAgQHMuc2tpcCgvW14iXFxdKy8pCisgICAgICBp
ZiBAcy5zY2FuKC9cXC8pCisgICAgICAgIGlmIEBzLnNjYW4oL1xcLykKKyAgICAgICAgICAjIFdo
ZW4gd2Ugc2VlICdcXCcsIGNvbnN1bWUgYm90aCBjaGFyYWN0ZXJzIHNvIHRoYXQgdGhlCisgICAg
ICAgICAgIyBzZWNvbmQgJ1wnIHdpbGwgbm90IGJlIHRyZWF0ZWQgYXMgYW4gZXNjYXBlIGNoYXIu
CisgICAgICAgICAgbmV4dAorICAgICAgICBlbHNpZiBAcy5zY2FuKC8iLykKKyAgICAgICAgICAj
IEZvciAnXCInLCBjb25zdW1lIGJvdGggY2hhcmFjdGVycyBzbyB0aGF0IHRoZSAnIicgd2lsbCBu
b3QKKyAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgc3RyaW5nLgorICAgICAgICAgIG5leHQKKyAg
ICAgICAgZW5kCisgICAgICAgIG5leHQKKyAgICAgIGVsc2lmIEBzLnNjYW4oLyIvKQorICAgICAg
ICAjICciJyB3aXRob3V0IGEgcHJlY2VlZGluZyAnXCc7IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4K
KyAgICAgICAgIyBXZSdyZSBhbHJlYWR5IHBhc3QgdGhlICciJywgc28gdGhlIGxpdGVyYWwgZW5k
cyBhdCAtMgorICAgICAgICAjIGNoYXJhY3RlcnMuCisgICAgICAgIHJldHVybiBQYXJzZVJlc3Vs
dFN1Y2Nlc3MubmV3KEBzLnN0cmluZ1tzdGFydF9wb3MuLihAcy5wb3MgLSAyKV0pCisgICAgICBl
bHNpZiBAcy5lb3M/CisgICAgICAgIGVyciA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwg
KHN0YXJ0aW5nIGF0IHBvcyAje3N0YXJ0X3Bvc30gaW4gI3tAcy5zdHJpbmd9IgorICAgICAgICBy
ZXR1cm4gUGFyc2VSZXN1bHRFcnJvci5uZXcoZXJyKQorICAgICAgZW5kCisgICAgICByYWlzZSAi
SW50ZXJuYWwgZXJyb3IgKCN7QHMuaW5zcGVjdH0pIgorICAgIGVuZAorICBlbmQKK2VuZAorCitk
ZWYgdGVzdChvdXRmLCBzdHIsIHJlcykKKyAgcHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nhbm5lci5u
ZXcoc3RyKS5wYXJzZQorICBpZiByZXMuaXNfYT8oQXJyYXkpCisgICAgaWYgcHIucmVzcG9uZF90
bz8oOmVycm9yKQorICAgICAgb3V0Zi5wdXRzKCJQYXJzZSByZXN1bHQgaXMgYCN7cHIuZXJyb3J9
YCBidXQgZXhwZWN0ZWQgI3tyZXN9IikKKyAgICAgIHJldHVybiBmYWxzZQorICAgIGVuZAorICAg
IGlmIHByLnN0ciAhPSByZXNbMF0KKyAgICAgIG91dGYucHV0cygiUGFyc2VkIHBhdGggYCN7cHIu
c3RyfWAgYnV0IGV4cGVjdGVkIGAje3Jlc1swXX1gIikKKyAgICAgIHJldHVybiBmYWxzZQorICAg
IGVuZAorICAgIHJldHVybiB0cnVlCisgIGVsc2lmIHJlcy5pc19hPyhTdHJpbmcpCisgICAgaWYg
cHIucmVzcG9uZF90bz8oOmVycm9yKQorICAgICAgaWYgbm90IHByLmVycm9yLmRvd25jYXNlLmlu
Y2x1ZGU/KHJlcy5kb3duY2FzZSkKKyAgICAgICAgZXJyID0gIkVycm9yIG1lc3NhZ2UgYCN7cHIu
ZXJyb3J9YCBkb2VzIG5vdCBpbmNsdWRlIGV4cGVjdGVkIHN1YnN0cmluZyBgI3tyZXN9YCIKKyAg
ICAgICAgb3V0Zi5wdXRzKGVycikKKyAgICAgICAgcmV0dXJuIGZhbHNlCisgICAgICBlbmQKKyAg
ICAgIHJldHVybiB0cnVlCisgICAgZW5kCisgICAgb3V0Zi5wdXRzKCJFeHBlY3RlZCBlcnJvciAo
I3tyZXN9KSBidXQgZ290IHN1Y2Nlc3NmdWwgcGFyc2UgI3twci5zdHJ9IikKKyAgICByZXR1cm4g
ZmFsc2UKKyAgZWxzZQorICAgIHJhaXNlICJJbnRlcm5hbCBlcnJvciAje3Jlcy5jbGFzc30iCisg
IGVuZAorZW5kCisKK2RlZiBzZWxmdGVzdAorICBucl9zdWNjZWVkZWQgPSAwCisgIHRlc3RzID0g
WworICAgICMgc2ltcGxlIHN0cmluZworICAgIFsnImZvby9iYXIiJywgWyJmb28vYmFyIl1dLAor
CisgICAgWyciZm9vJywgIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAgWyci
Zm9vXCInLCAiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIl0sCisKKyAgICAjICJmb29cIgor
ICAgIFsiXCJmb29cXFwiIiwgIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCJdLAorCisgICAg
IyAiZm9vXFwiCisgICAgWyJcImZvb1xcXFxcIiIsIFsiZm9vXHg1Y1x4NWMiXV0sCisKKyAgICAj
IENhbiBlc2NhcGUgJyInCisgICAgWyciZm9vXCJiYXIiJywgWydmb29cImJhciddXSwKKworICAg
ICMgQ2FuIHBhcnNlIHJlbGF0aXZlCisgICAgWyciZm9vL2JhciInLCBbJ2Zvby9iYXInXV0sCisK
KyAgICAjIENhbiBwYXJzZSBhYnNvbHV0ZQorICAgIFsnIi9iYXIiJywgWycvYmFyJ11dLAorCisg
ICAgIyBDYW4gcGFyc2UgYWJzb2x1dGUgd2l0aCB0d28gY29tcG9uZW50cworICAgIFsnIi9iYXIv
YmF6IicsIFsnL2Jhci9iYXonXV0sCisKKyAgICAjIENhbiBkZXRlY3Qgc3RyYXkgdG9rZW4KKyAg
ICBbJyJmb28iIGJhcicsICJFeHBlY3RlZCBlbmQgb2YgbGluZSJdLAorCisgICAgIyBDYW4gZGV0
ZWN0IHN0cmF5IHRva2VuIHdpdGhvdXQgd2hpdGVzcGFjZQorICAgIFsnImZvbyJiYXInLCAiRXhw
ZWN0ZWQgZW5kIG9mIGxpbmUiXSwKKworICAgICMgV2lsbCBub3QgYWNjZXB0IGNsYW5nLXN0eWxl
IC5maWxlIGRpcmVjdGl2ZXMKKyAgICBbJyJ3b3JraW5nX2RpcmVjdG9yeSIgInBhdGgiJywgIkV4
cGVjdGVkIGVuZCBvZiBsaW5lIl0KKyAgXQorICBvdXRmID0gU3RyaW5nSU8ubmV3KCIiKQorICB0
ZXN0cy5lYWNoIHsgfHN0ciwgcmVzfAorICAgIGlmIHRlc3Qob3V0Ziwgc3RyLCByZXMpCisgICAg
ICBucl9zdWNjZWVkZWQgKz0gMQorICAgIGVuZAorICB9CisgIGlmIG5yX3N1Y2NlZWRlZCAhPSB0
ZXN0cy5zaXplCisgICAgJHN0ZGVyci5wdXRzKG91dGYuc3RyaW5nKQorICAgICRzdGRlcnIucHV0
cygiU29tZSBzZWxmIHRlc3RzIGZhaWxlZCAje25yX3N1Y2NlZWRlZH0vI3t0ZXN0cy5zaXplfSIp
CisgICAgZXhpdCgzKQorICBlbmQKK2VuZAorCisjIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZmlsZW5v
IGlzIGFzc2lnbmVkIHRvIHdoaWNoIGZpbGUgcGF0aC4gV2UgY2FsbAorIyB0aGUgZmlsZW5vIGEg
J3Nsb3QnLgorY2xhc3MgRmlsZVNsb3RUcmFja2VyCisgIEBAbmV4dF9mcmVlID0gMSAgICMgTmV4
dCBmcmVlIGdsb2JhbCBzbG90CisgIEBAcGF0aHMgPSB7fSAjIE1hcHMgcGF0aCAtPiBnbG9iYWwg
c2xvdAorICBkZWYgaW5pdGlhbGl6ZShwYXJlbnQpCisgICAgQHBhcmVudCA9IHBhcmVudAorICAg
ICMgVGhpcyBtYXBzIGZyb20gb3VyIG93biBsb2NhbCBzbG90cyAoaS5lLiB3aXRoaW4gYW4gQVBQ
IHNlY3Rpb24pCisgICAgIyB0byBhIGdsb2JhbCBzbG90LgorICAgIEBzbG90X21hcCA9IHt9Cisg
IGVuZAorICAjIFdlIG1ha2Ugc3VyZSB0aGF0IC5maWxlIGRpcmVjdGl2ZXMgdGhhdCBzcGVjaWZ5
IHRoZSBzYW1lIHBhdGggYXJlCisgICMgZGVkdXAnZCwgaS5lLiBpZiB3ZSBzZWUKKyAgIyAgICAg
LmZpbGUgTiAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjICAgICAuLi4KKyAgIyAgICAgLmZpbGUg
TSAiL3BhdGgvdG8vaW5jbHVkZS5oIgorICAjIHRoZW4gdGhlICJsb2NhbCIgTiwgTSBzbG90cyB3
aWxsIGJlIG1hcHBlZCB0byB0aGUgc2FtZSAiZ2xvYmFsIiBzbG90LgorICBkZWYgcmVnaXN0ZXJf
cGF0aChwYXRoLCBzbG90KQorICAgIGN1cnJfc2xvdCA9IEBAcGF0aHNbcGF0aF0KKyAgICBpZiBj
dXJyX3Nsb3QubmlsPworICAgICAgIyBXZSBoYXZlbid0IHNlZW4gdGhpcyBmaWxlIGJlZm9yZQor
ICAgICAgaWYgc2xvdCA8PSBAQG5leHRfZnJlZQorICAgICAgICAjIERlc2lyZWQgZmlsZSBzbG90
IGVpdGhlciBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgb25lLCBvciBpcworICAgICAgICAjIHRo
ZSBuZXh0IG9uZSB0byBiZSBhbGxvY2F0ZWQuIEluIGVpdGhlciBjYXNlLCBhc3NpZ24gdGhlCisg
ICAgICAgICMgbmV4dCBmcmVlIHNsb3QuCisgICAgICAgIGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkK
KyAgICAgIGVsc2UKKyAgICAgICAgIyBEb24ndCBhbGxvdyBzbG90IGdhcHMuIFRlY2huaWNhbGx5
IHdlIGNvdWxkIGhhbmRsZSB0aGVtLCBidXQKKyAgICAgICAgIyB0aGV5IHNob3VsZCBuZXZlciBo
YXBwZW47IGJhaWwgbm93IHJhdGhlciB0aGFuIHBhcGVyaW5nIG92ZXIKKyAgICAgICAgIyBhbiBl
YXJsaWVyIGVycm9yLgorICAgICAgICAkc3RkZXJyLnB1dHMoIkZpbGUgd2FudHMgc2xvdCAje3Ns
b3R9IGJ1dCBvbmx5IHNlZW4gI3tAQG5leHRfZnJlZX0gc28gZmFyIikKKyAgICAgICAgZXhpdCgy
KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgIyBXZSd2ZSBhbHJlYWR5IGFzc2lnbmVkIGEg
c2xvdCBmb3IgdGhpcyBmaWxlLgorICAgIGVuZAorICAgIEBzbG90X21hcFtzbG90XSA9IEBAcGF0
aHNbcGF0aF0KKyAgICBpZiBAc2xvdF9tYXBbc2xvdF0ubmlsPworICAgICAgcmFpc2UgIkRpZG4n
dCBtYXAgbG9jYWwgc2xvdCAje3Nsb3R9IgorICAgIGVuZAorICBlbmQKKyAgIyBSZXR1cm4gZ2xv
YmFsIHNsb3QgZm9yIHBhdGgKKyAgZGVmIHNsb3RfZm9yX3BhdGgocGF0aCkKKyAgICByZXR1cm4g
QEBwYXRoc1twYXRoXQorICBlbmQKKyAgIyBSZXR1cm4gZ2xvYmFsIHNsb3QgdGhhdCB3aWxsIHJl
cGxhY2UgdGhlIGxvY2FsIHNsb3QKKyAgZGVmIHJlbWFwX3Nsb3Qoc2xvdCkKKyAgICByZXQgPSBu
aWwKKyAgICBpZiBAc2xvdF9tYXAuc2l6ZSA+IDAKKyAgICAgICMgSWYgdGhlIGN1cnJlbnQgTk9f
QVBQIHNlZ21lbnQgaGFzIGRlZmluZWQgYSAuZmlsZSwgb25seSBsb29rCisgICAgICAjIGluIHRo
ZSBjdXJyZW50IEZpbGVTbG90VHJhY2tlci4gVGhpcyBpcyB0aGUgY2FzZSBmb3IgYQorICAgICAg
IyB0b3AtbGV2ZWwgaW5saW5lIGFzbSBzdGF0ZW1lbnQuCisgICAgICByZXQgPSBAc2xvdF9tYXBb
c2xvdF0KKyAgICBlbHNpZiBub3QgQHBhcmVudC5uaWw/CisgICAgICAjIElmIHRoZSBjdXJyZW50
IE5PX0FQUCBzZWdtZW50IGhhcyBub3QgZGVmaW5lZCBhIC5maWxlLCBjbGVhcmx5CisgICAgICAj
IGFsbCAubG9jIGRpcmVjdGl2ZXMgcmVmZXIgdG8gZmlsZXMgZGVmaW5lZCBpbiB0aGUgQVBQCisg
ICAgICAjIHBhcnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi10b3AtbGV2ZWwgaW5saW5lIGFz
bQorICAgICAgIyBzdGF0ZW1lbnRzLgorICAgICAgcmV0ID0gQHBhcmVudC5yZW1hcF9zbG90KHNs
b3QpCisgICAgZW5kCisgICAgaWYgcmV0Lm5pbD8KKyAgICAgIHJhaXNlICJObyBnbG9iYWwgc2xv
dCBmb3IgI3tzbG90fSIKKyAgICBlbmQKKyAgICByZXQKKyAgZW5kCisgIHByaXZhdGUKKyAgZGVm
IGFzc2lnbl9uZXh0X3Nsb3QocGF0aCkKKyAgICBAQHBhdGhzW3BhdGhdID0gQEBuZXh0X2ZyZWUK
KyAgICBAQG5leHRfZnJlZSArPSAxCisgIGVuZAorZW5kCisKKyMgUmV0dXJuIHNlcXVlbnRpYWwg
bGluZXMsIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciB3ZSdyZSBpbiBhbgorIyAjQVBQ
IG9yICNOT0FQUCBzZWN0aW9uLgorY2xhc3MgQXNtUmVhZGVyCisgIGF0dHJfcmVhZGVyIDppbl9h
cHAKKyAgYXR0cl9hY2Nlc3NvciA6YXBwX3RvX25vYXBwLCA6bm9hcHBfdG9fYXBwCisgIGRlZiBp
bml0aWFsaXplKGYpCisgICAgQGYgPSBmCisgICAgQGYucmV3aW5kCisgICAgQGxpbmVuciA9IDAK
KyAgICBAaW5fYXBwID0gZmFsc2UKKyAgICBAbGFzdF9zd2l0Y2ggPSAic3RhcnQgb2YgZmlsZSIg
IyBGb3IgZXJyb3IgbWVzc2FnZXMKKyAgZW5kCisgIGRlZiBuZXh0X2xpbmUKKyAgICB3aGlsZSB0
cnVlCisgICAgICBsID0gQGYuZ2V0cworICAgICAgaWYgbC5uaWw/CisgICAgICAgIHJldHVybiBs
CisgICAgICBlbmQKKyAgICAgIEBsaW5lbnIgKz0gMQorICAgICAgaWYgL14jXHMqQVBQXHMqLy5t
YXRjaChsKQorICAgICAgICBpZiBAaW5fYXBwCisgICAgICAgICAgcmFpc2UgIiNBUFAgb24gbGlu
ZSAje0BsaW5lbnJ9IGJ1dCBhbHJlYWR5IGluICNBUFAgKCN7QGxhc3Rfc3dpdGNofSkiCisgICAg
ICAgIGVuZAorICAgICAgICBAaW5fYXBwID0gdHJ1ZQorICAgICAgICBAbGFzdF9zd2l0Y2ggPSBA
bGluZW5yCisgICAgICAgIGlmIEBub2FwcF90b19hcHAKKyAgICAgICAgICBAbm9hcHBfdG9fYXBw
LmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgICAgaWYgL14jXHMqTk9fQVBQXHMq
Ly5tYXRjaChsKQorICAgICAgICBpZiBub3QgQGluX2FwcAorICAgICAgICAgIHJhaXNlICIjTk9B
UFAgb24gbGluZSAje0BsaW5lbnJ9IGJ1dCB3YXMgbm90IGluICNBUFAgKGxhc3Qgc3dpY2ggYXQg
I3tAbGFzdF9zd2l0Y2h9KSIKKyAgICAgICAgZW5kCisgICAgICAgIEBpbl9hcHAgPSBmYWxzZQor
ICAgICAgICBAbGFzdF9zd2l0Y2ggPSBAbGluZW5yCisgICAgICAgIGlmIEBhcHBfdG9fbm9hcHAK
KyAgICAgICAgICBAYXBwX3RvX25vYXBwLmNhbGwoKQorICAgICAgICBlbmQKKyAgICAgIGVuZAor
ICAgICAgcmV0dXJuIGwKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgRmlsZUNvbmZsaWN0
UmVzb2x2ZXIKKyAgQEBmaWxlX3JlID0gL15ccypbLl1maWxlXHMrKD88c2xvdD5cZCspXHMrKD88
cmVzdD4uKikkLworICBAQGxvY19yZSA9IC9eKD88d2hpdGUxPlxzKilbLl1sb2MoPzx3aGl0ZTI+
XHMrKSg/PHNsb3Q+XGQrKSg/PHJlc3Q+XHMrXGQrLiopJC8KKyAgZGVmIGluaXRpYWxpemUoaW5m
LCBvdXRmKQorICAgIEBvdXRmID0gb3V0ZgorICAgIEB0cmFja2VycyA9IFtGaWxlU2xvdFRyYWNr
ZXIubmV3KG5pbCldCisgICAgQGFzbV9yZWFkZXIgPSBBc21SZWFkZXIubmV3KGluZikKKyAgICAj
IFdoZW4gd2UgZW50ZXIgYW4gI0FQUCBzZWN0aW9uIChpLmUuIGFzbSBlbWl0dGVkIGZyb20gYW4g
ZXhwYW5kZWQKKyAgICAjIGlubGluZSBhc20gc3RhdGVtZW50KSwgY3JlYXRlIGEgbmV3IGZpbGUg
dHJhY2tlciwgaW4gZWZmZWN0CisgICAgIyBwcm9jZXNzaW5nIHRoZSAuZmlsZSBhbmQgLmxvYyBk
aXJlY3RpdmVzIGluIGEgbmV3ICJuYW1lc3BhY2UiCisgICAgIyAoYXMgZmFyIGFzIHRoZSBmaWxl
IG51bWJlcnMgYXJlIGNvbmNlcm5lZCkuIFRoaXMgaXMgYW4gYXJyYXksCisgICAgIyBidXQgaW4g
cHJhY3RpY2UgdGhlIHNpemUgd2lsbCBlaXRoZXIgYmUgMSAoTk9BUFApIG9yIDIgKEFQUCkuCisg
ICAgQGFzbV9yZWFkZXIuYXBwX3RvX25vYXBwID0gUHJvYy5uZXcgeyB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHRyYWNrZXJzLnBvcAorICAgIH0KKyAgICBA
YXNtX3JlYWRlci5ub2FwcF90b19hcHAgPSBQcm9jLm5ldyB7IHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhY2tlcnMucHVzaChGaWxlU2xvdFRyYWNrZXIu
bmV3KEB0cmFja2Vyc1stMV0pKQorICAgIH0KKyAgZW5kCisgIGRlZiBydW4KKyAgICB3aGlsZSB0
cnVlCisgICAgICBsID0gQGFzbV9yZWFkZXIubmV4dF9saW5lCisgICAgICBicmVhayB1bmxlc3Mg
bAorCisgICAgICBtZCA9IEBAZmlsZV9yZS5tYXRjaChsKQorICAgICAgaWYgbWQKKyAgICAgICAg
ZmlsZV9kaXJlY3RpdmUobWQpCisgICAgICAgIG5leHQKKyAgICAgIGVuZAorICAgICAgbWQgPSBA
QGxvY19yZS5tYXRjaChsKQorICAgICAgaWYgbWQKKyAgICAgICAgbG9jX2RpcmVjdGl2ZShtZCkK
KyAgICAgICAgbmV4dAorICAgICAgZW5kCisgICAgICBAb3V0Zi53cml0ZShsKQorICAgICAgbmV4
dAorICAgIGVuZAorICBlbmQKKyAgZGVmIGxvY19kaXJlY3RpdmUobWQpCisgICAgdHJhY2tlciA9
IEB0cmFja2Vycy5sYXN0CisgICAgc2xvdCA9IHRyYWNrZXIucmVtYXBfc2xvdChtZFs6c2xvdF0u
dG9faSkKKyAgICBAb3V0Zi5wdXRzKCIje21kWzp3aGl0ZTFdfS5sb2Mje21kWzp3aGl0ZTJdfSN7
c2xvdH0je21kWzpyZXN0XX0iKQorICBlbmQKKyAgZGVmIGZpbGVfZGlyZWN0aXZlKG1kKQorICAg
IHRyYWNrZXIgPSBAdHJhY2tlcnMubGFzdAorCisgICAgcHIgPSBGaWxlRGlyZWN0aXZlQXJnU2Nh
bm5lci5uZXcobWRbOnJlc3RdKS5wYXJzZQorICAgIGlmIHByLnJlc3BvbmRfdG8/KDplcnJvcikK
KyAgICAgICRzdGRlcnIucHV0cygiRXJyb3IgcGFyc2luZyBwYXRoIGFyZ3VtZW50IHRvIC5maWxl
IGRpcmVjdGl2ZTogI3twci5lcnJvcn0iKQorICAgICAgZXhpdCgyKQorICAgIGVuZAorCisgICAg
cGF0aCA9IHByLnN0cgorICAgIHRyYWNrZXIucmVnaXN0ZXJfcGF0aChwYXRoLCBtZFs6c2xvdF0u
dG9faSkKKworICAgIHNsb3QgPSB0cmFja2VyLnNsb3RfZm9yX3BhdGgocGF0aCkKKyAgICBAb3V0
Zi5wdXRzKCJcdC5maWxlXHQje3Nsb3R9ICN7bWRbOnJlc3RdfSIpCisgIGVuZAorZW5kCisKKyMg
Rmlyc3QsIG1ha2Ugc3VyZSBvdXIgdGVzdHMgc3RpbGwgcGFzcy4gVGhpcyBvbmx5IHRha2VzIGEg
ZnJhY3Rpb24gb2YKKyMgb3VyIHJ1bnRpbWUgYW5kIGVuc3VyZXMgdGhlIHRlc3RzIHdpbGwgZ2V0
IHJ1biBieSBhbnlvbmUgdHJ5aW5nIG91dAorIyBjaGFuZ2VzIHRvIHRoaXMgZmlsZS4KK3NlbGZ0
ZXN0CisKK2lmIEFSR1Yuc2l6ZSAhPSAyCisgICRzdGRlcnIucHV0cygiVXNhZ2U6ICN7JDB9IGlu
cHV0IG91dHB1dCIpCisgIGV4aXQoMikKK2VuZAorCitpbnBhdGgsIG91dHBhdGggPSBBUkdWLmNv
bGxlY3QgeyB8bnwgUGF0aG5hbWUubmV3KG4pIH0KKworaWYgbm90IGlucGF0aC5maWxlPworICAk
c3RkZXJyLnB1dHMoIk5vdCBhIHJlZ3VsYXIgZmlsZTogYCN7aW5wYXRofWAiKQorICBleGl0KDIp
CitlbmQKKworaWYgaW5wYXRoLmV4dG5hbWUudXBjYXNlICE9ICIuUyIKKyAgJHN0ZGVyci5wdXRz
KCJ3YXJuaW5nOiBmaWxlIGAje2lucGF0aH1gIGRvZXNuJ3QgaGF2ZSBhIGAuc2Agb3IgYC5TYCBl
eHRlbnNpb24uIEdvaW5nIG9uIGFueXdheS4uLiIpCitlbmQKKworRmlsZS5vcGVuKGlucGF0aCwg
InIiKSB7IHxpbmZ8CisgIEZpbGUub3BlbihvdXRwYXRoLCAidyIpIHsgfG91dGZ8CisgICAgRmls
ZUNvbmZsaWN0UmVzb2x2ZXIubmV3KGluZiwgb3V0ZikucnVuCisgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBjN2I2MzhiYzQwMTFjOWNkNDRlMTYyOTk3ZTA5M2M4ZTA0ZTQy
MGEyLi5lNmRlYjAxNDI1MjA0MDhmOGM3ODEwMGFhNjg2NWRhNWRmODdkMzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CkBAIC02NzUsOCArNjc1LDYgQEAgbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcAogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCiBsbGludC9MTEludFRodW5rcy5jcHAKLS8vIEZJWE1FOiBXZSBjYW4ndCBidW5kbGUgdGhp
cyBmaWxlIGR1ZSB0byBhIGNsYW5nIGJ1Zy4KLWxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IEBuby11bmlmeQogCiBwYXJzZXIvTGV4ZXIuY3BwCiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAKaW5kZXggZjhhZmM3YTA3MGQ3MzUzODEzYTlmYjMzZTJmZjIzNTJjNjllYmE3Ni4uYzlh
YWZjMTVlODcwN2JiYTk4OTIxNDMyMzU0NzNjZjA3MmU0Yjg2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcApAQCAtNTM3LDgg
KzUzNywxOSBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQs
IHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAjZGVmaW5lIE9GRkxJTkVfQVNNX09Q
Q09ERV9ERUJVR19MQUJFTChsYWJlbCkKICNlbmRpZgogCisvLyBUaGlzIHdvcmtzIGFyb3VuZCBh
IGJ1ZyBpbiBHREIgd2hlcmUsIGlmIHRoZSBjb21waWxhdGlvbiB1bml0CisvLyBkb2Vzbid0IGhh
dmUgYW55IGFkZHJlc3MgcmFuZ2UgaW5mb3JtYXRpb24sIGl0cyBsaW5lIHRhYmxlIHdvbid0Cisv
LyBldmVuIGJlIGNvbnN1bHRlZC4gRW1pdCB7YmVmb3JlLGFmdGVyfV9sbGludF9hc20gc28gdGhh
dCB0aGUgY29kZQorLy8gZW1pdHRlZCBpbiB0aGUgdG9wIGxldmVsIGlubGluZSBhc20gc3RhdGVt
ZW50IGlzIHdpdGhpbiBmdW5jdGlvbnMKKy8vIHZpc2libGUgdG8gdGhlIGNvbXBpbGVyLiBUaGlz
IHdheSwgR0RCIGNhbiByZXNvbHZlIGEgUEMgaW4gdGhlCisvLyBsbGludCBhc20gY29kZSB0byB0
aGlzIGNvbXBpbGF0aW9uIHVuaXQgYW5kIHRoZSBzdWNjZXNzZnVsbHkgbG9vaworLy8gdXAgdGhl
IGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uLgorREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIoYmVm
b3JlX2xsaW50X2FzbSkKKwogLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVh
c20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQogLy8gZm9yIHRoZSBp
bnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KICNp
bmNsdWRlICJMTEludEFzc2VtYmx5LmgiCiAKK0RFQlVHR0VSX0FOTk9UQVRJT05fTUFSS0VSKGFm
dGVyX2xsaW50X2FzbSkKKwogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9jb25maWcucmIKaW5kZXggNDk1NDNmY2QxYjJmYTE2ZTY1ODhi
NjgzMjg5YWMwNDc3MjdiN2YwZS4uMmYzMTIzZTVmYTA0MzUzZGEwYTM3MmY0NTllZDM3OGFkZjgz
MjlhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY29uZmln
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2NvbmZpZy5yYgpAQCAt
ODksNiArODksMTAgQEAgZGVmIHNob3VsZEVuYWJsZURlYnVnQW5ub3RhdGlvbnMoKQogICAgICAg
ICAgICAgICAgIGVuZAogICAgICAgICAgICAgZW5kCiAgICAgICAgIGVuZAorICAgIGVsc2lmIEVO
VlsiQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIl0gPT0gJ0dOVScgYW5kCisgICAgICAgICBFTlZbIkdD
Q19PRkZMSU5FQVNNX1NPVVJDRV9NQVAiXSA9PSAnT04nCisgICAgICAjIEFsbCBHQ0MgdmVyc2lv
bnMgdGhhdCBjYW4gYnVpbGQgSlNDIHN1cHBvcnQgZGVidWcgYW5ub3RhdGlvbnMKKyAgICAgIHJl
dHVybiB0cnVlCiAgICAgZW5kCiAKICAgICBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNDM3NGNiM2Fm
MjNjODliYjUzNDk0NjlkYzg4ZWZjNjQ0NjE0YTQ3Yy4uMGZiMzMyMDI3ZWQ5ZWY1ZjY0MmRhZDZl
ZDg5NTY1NWQ2YjAzMWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC0zODIsNiArMzgyLDE3IEBACiAjZGVm
aW5lIFdBUk5fVU5VU0VEX1JFVFVSTgogI2VuZGlmCiAKKy8qIERFQlVHR0VSX0FOTk9UQVRJT05f
TUFSS0VSICovCisKKyNpZiAhZGVmaW5lZChERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUikgJiYg
Q09NUElMRVIoR0NDKQorI2RlZmluZSBERUJVR0dFUl9BTk5PVEFUSU9OX01BUktFUihuYW1lKSBc
CisgICAgX19hdHRyaWJ1dGVfXygoX19ub19yZW9yZGVyX18pKSB2b2lkIG5hbWUodm9pZCkgeyBf
X2FzbV9fKCIiKTsgfQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChERUJVR0dFUl9BTk5PVEFUSU9O
X01BUktFUikKKyNkZWZpbmUgREVCVUdHRVJfQU5OT1RBVElPTl9NQVJLRVIobmFtZSkKKyNlbmRp
ZgorCiAjaWYgIWRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgQ09NUElMRVIoTVNWQykKICNkZWZp
bmUgX19oYXNfaW5jbHVkZShwYXRoKSAwCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zQ29tbW9uLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UK
aW5kZXggYTU3NGVmOGMyMjJiYTA3MjBkMjJhMWZkNWQ1YzgxNTNhNGRjZjcyMS4uZWExMzYyNDgz
ZTc4MGU0MTVjYzg1NDhjYzZmOTE0YjJhODhjZDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNDb21tb24uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21h
a2UKQEAgLTExMiw2ICsxMTIsMTUgQEAgaWYgKERFQlVHX0ZJU1NJT04pCiAgICAgc2V0KENNQUtF
X1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30gLVdsLC0tZ2Ri
LWluZGV4IikKIGVuZGlmICgpCiAKK3NldChHQ0NfT0ZGTElORUFTTV9TT1VSQ0VfTUFQX0RFRkFV
TFQgT0ZGKQoraWYgKENNQUtFX0JVSUxEX1RZUEUgU1RSRVFVQUwgIkRlYnVnIiBPUiBDTUFLRV9C
VUlMRF9UWVBFIFNUUkVRVUFMICJSZWxXaXRoRGViSW5mbyIpCisgICAgc2V0KEdDQ19PRkZMSU5F
QVNNX1NPVVJDRV9NQVBfREVGQVVMVCBPTikKK2VuZGlmICgpCisKK29wdGlvbihHQ0NfT0ZGTElO
RUFTTV9TT1VSQ0VfTUFQCisgICJQcm9kdWNlIGRlYnVnIGxpbmUgaW5mb3JtYXRpb24gZm9yIG9m
ZmxpbmVhc20tZ2VuZXJhdGVkIGNvZGUiCisgICR7R0NDX09GRkxJTkVBU01fU09VUkNFX01BUF9E
RUZBVUxUfSkKKwogIyBFbmFibGUgdGhlIHVzYWdlIG9mIE9wZW5NUC4KICMgIC0gQXQgdGhpcyBt
b21lbnQsIE9wZW5NUCBpcyBvbmx5IHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRp
b24KICMgICAgdG8gbmF0aXZlIHRocmVhZHMgZm9yIHRoZSBwYXJhbGxlbGl6YXRpb24gb2YgdGhl
IFNWRyBmaWx0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395941</attachid>
            <date>2020-04-09 05:45:59 -0700</date>
            <delta_ts>2020-04-09 06:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207119-20200409124558.patch</filename>
            <type>text/plain</type>
            <size>1880</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NTgyYmNiODM4MDYyNGJjODRkMDk1ZmYwZjIwNzIwOWY2ZTY5MWRhLi4xZTFkNjViZTRiZTQ2YzQ0
Y2I0NjkzM2M5MGIwYjI2ODA2YTg5MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMC0wNC0wOSAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NA
aWdhbGlhLmNvbT4KKworICAgICAgICBGaXggQ0xPT1AgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzExOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAt
MDQtMDkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhIG1vcmUgZWZmaWNpZW50IHRhZ0NGdW5jdGlvbigpIHRvb2wuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggY2Q5Y2I4NWNjOTY0NDA2ZTI1YjliODQxZTZjNTM2OWQzNzYw
Y2MxMS4uZThjMWQ4ZTFkY2MyNDMwNmFlMjAzODc4M2I3Mzk1YzEwOTAzZmY0MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI5MSw2ICsxMjkxLDcgQEAgYWRkX2N1c3Rv
bV9jb21tYW5kKAogICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
fSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQogICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLS1vdXRwdXQtZGlyZWN0b3J5ICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0gLS1jb21iaW5lZCAke0phdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVN9CiAgICAgVkVSQkFUSU0pCithZGRfY3VzdG9tX3RhcmdldChK
U0NCdWlsdGlucyBERVBFTkRTICIke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0pTQ0J1aWx0aW5zLmgiKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAg
ICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgKQEAgLTEzNzYsNyArMTM3Nyw3IEBAIGFkZF9zdWJkaXJl
Y3Rvcnkoc2hlbGwpCiAKIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKExvd0xldmVsSW50ZXJw
cmV0ZXJMaWIKICAgICBQUklWQVRFICIkPFRBUkdFVF9QUk9QRVJUWTpKYXZhU2NyaXB0Q29yZSxJ
TkNMVURFX0RJUkVDVE9SSUVTPiIpCi1hZGRfZGVwZW5kZW5jaWVzKExvd0xldmVsSW50ZXJwcmV0
ZXJMaWIgV1RGX0NvcHlIZWFkZXJzIEJ5dGVjb2RlcykKK2FkZF9kZXBlbmRlbmNpZXMoTG93TGV2
ZWxJbnRlcnByZXRlckxpYiBXVEZfQ29weUhlYWRlcnMgQnl0ZWNvZGVzIEpTQ0J1aWx0aW5zKQog
CiBpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYIEFORCBHQ0NfT0ZGTElORUFTTV9TT1VSQ0Vf
TUFQKQogICAgIG1lc3NhZ2UoU1RBVFVTICJFbmFibGluZyBhc20gcG9zdHByb2Nlc3NpbmciKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>